Группа "Стол заказов MQL"

Рейтинг 1290



РЕКОМЕНДУЮ



StopLoss по цене открытия предыдущей свечи.

Здравствуйте, Андрей! Прошу Вас написать советник со StopLoss который будет выставятся от цены открытия предыдущей свечи с сигналом входа в рынок от двух МА.
1.Сигнал входа в рынок по двум МА
2.Lot минимально разрешенный брокером
3. StopLoss Выставляется по цене открытия предыдущий свечи + минимальное расстояние брокера.
4. Trailing_Stop
5. BU
Спасибо!!!
  • +1
  • Просмотров: 500
  • 5 мая 2018, 11:52
  • Alkmena
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Добавить в советник одну функцию.
Следующая запись в группе  
Советник по индикаторам s-StochFlet и MovingAverage.
05 мая 2018
05 мая 2018

Комментарии (7)

+
0
на 14-е
avatar

  27  AM2 Сообщений: 7688 - Андрей

  • 5 мая 2018, 21:03
+
0
Спасибо!!!
avatar

  5  Alkmena Автор Сообщений: 10

  • 6 мая 2018, 10:58
+
0
StopLoss Выставляется по цене открытия предыдущий свечи + минимальное расстояние брокера


а если идет покупка и цена открытия предыдущей свечи выше цены открытия позы, тогда куда ставим?
avatar

  27  AM2 Сообщений: 7688 - Андрей

  • 13 мая 2018, 14:39
+
0
что собственно и произошло:



//+------------------------------------------------------------------+
//|                                                          2MA.mq4 |
//|                                              Copyright 2018, AM2 |
//|                                      http://www.forexsyatems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, AM2"
#property link      "http://www.forexsyatems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Lots       = 0.1;      // лот
extern int StopLoss      = 2000;     // лось
extern int TakeProfit    = 3000;     // язь
extern int MA1Period     = 10;       // период МА1
extern int MA2Period     = 40;       // период МА2
extern int Slip          = 30;       // реквот
extern int Shift         = 1;        // на каком баре сигнал индикатора
extern int Magic         = 123;      // магик
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0) sl=NormalizeDouble(price+StopLoss*Point,Digits); else sl=NormalizeDouble(Close[1]+MarketInfo(NULL,MODE_STOPLEVEL)*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0) sl=NormalizeDouble(price-StopLoss*Point,Digits); else sl=NormalizeDouble(Close[1]-MarketInfo(NULL,MODE_STOPLEVEL)*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   double ma11=iMA(NULL,0,MA1Period,0,0,0,Shift);
   double ma12=iMA(NULL,0,MA1Period,0,0,0,Shift+1);
   double ma21=iMA(NULL,0,MA2Period,0,0,0,Shift);
   double ma22=iMA(NULL,0,MA2Period,0,0,0,Shift+1);

   if(ma11>ma21 && ma12<ma22)
     {
      PutOrder(0,Ask);
     }

   if(ma11<ma21 && ma12>ma22)
     {
      PutOrder(1,Bid);
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1) OpenPos();
  }
//+------------------------------------------------------------------+
avatar

  27  AM2 Сообщений: 7688 - Андрей

  • 13 мая 2018, 14:56
+
0
Тогда выводит алерт «разворот цены!!! невозможно выставить стоплос!!!»
за ранее огромное спасибо
Редактирован: 23 мая 2018, 20:53
avatar

  5  Alkmena Автор Сообщений: 10

  • 23 мая 2018, 20:50
+
0
и если можно
2.Lot минимально разрешенный брокером тоже надо
avatar

  5  Alkmena Автор Сообщений: 10

  • 23 мая 2018, 20:57
+
0
Здравствуйте, Андрей
если можно
2.Lot минимально разрешенный брокером тоже надо
и алерт в случае когда не возможно выставить стоплос
avatar

  5  Alkmena Автор Сообщений: 10

  • 3 июня 2018, 13:51

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари

 
Как начать: открываем первую торговую сделку за 7 шагов →