Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 282

 

Привет всем форумчанам.

Подскажите знающие люди. Есть советник, который открывает сделки по сигналу индикатора, как прописать программно счетчик сигналов, т.е. после получения Тейк профита или закрытия ордера по Терйлинг стопу следующие два сигнала советник пропускал и сделки не открывал.

Буду признателен за помощь.

void CheckForOpen()
{
   int ticket, STOPLEVEL;
   double Price, SL, TP; 
   STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
   
   
   double AO = iIchimoku (Symbol(),0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANA,1); // верхняя граница облака 
   double BO = iIchimoku (Symbol(),0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANB,1); // нижняя граница облака 

      
   if(Volume[0]>1) return;

   if (AO>BO) // продажа
   {
   if (Open[1]>Close[1] && Close[1] < BO && Open[1]>BO) // продажа

     {
     Price = NormalizeDouble(Bid, Digits); // округляем до нужного нам числа цифр после запятой
     if(StopLoss >= STOPLEVEL)
          if(StopLoss > 0)
      {
       SL = Price + StopLoss*Point; // вычисляем стоплос
       SL = NormalizeDouble(SL, Digits); // округляем до нужного нам числа цифр после запятой
      }
       else SL = 0;

      if(TakeProfit > 0)
      {
       TP = Price - TakeProfit*Point;
       TP = NormalizeDouble(TP, Digits); 
      }
       else TP = 0;

      { 
      ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,TP,"Pattern_1",Magic,0,Red);
      return;
      }
    }
    }
 
alexey1979621:

Привет всем форумчанам.

Подскажите знающие люди. Есть советник, который открывает сделки по сигналу индикатора, как прописать программно счетчик сигналов, т.е. после получения Тейк профита или закрытия ордера по Терйлинг стопу следующие два сигнала советник пропускал и сделки не открывал.

Буду признателен за помощь.


Хочу того не знаю чего, но подскажите как это реализовать.

А что конкретно Вы представляете под пропуском сигналов?:

1) Виртуальную сделку? как бы открываем фиктивную позицию, следим, закрываем тоже фиктивно ( Иланим);

2) Отработать поступление сигнала через некое время? новый сигнал может поступить через ХХХ минут;

3) Отработать поступление сигнала через некое количество баров? новый сигнал может поступить через ХХХ баров;

..................

Также пожелания:

замените конструкцию if(Volume[0]>1) return; оно не всегда будет срабатывать уже на демо, не говоря о реале;

тут разве не можно обойтись одним условием больше?

if (StopLoss >= STOPLEVEL)         //    if (StopLoss > STOPLEVEL) так не проще?
   if(StopLoss > 0)

не корректная логика, else обрабатывает второе условие :

if (StopLoss >= STOPLEVEL)
   if (StopLoss > 0){
      SL = Price + StopLoss*Point; // вычисляем стоплос
      SL = NormalizeDouble(SL, Digits); // округляем до нужного нам числа цифр после запятой
   }
   else SL = 0;

и еще много чего...

 
ALXIMIKS:


Хочу того не знаю чего, но подскажите как это реализовать.

А что конкретно Вы представляете под пропуском сигналов?:

1) Виртуальную сделку? как бы открываем фиктивную позицию, следим, закрываем тоже фиктивно ( Иланим);

2) Отработать поступление сигнала через некое время? новый сигнал может поступить через ХХХ минут;

3) Отработать поступление сигнала через некое количество баров? новый сигнал может поступить через ХХХ баров;

..................

Также пожелания:

замените конструкцию if(Volume[0]>1) return; оно не всегда будет срабатывать уже на демо, не говоря о реале;

тут разве не можно обойтись одним условием больше?

не корректная логика, else обрабатывает второе условие :

и еще много чего...

Я начинающий писатель, т.е. до всего дохожу сам, главное то что получается работает. if(Volume[0]>1) работает нормально и на реале и на демке, и в тестере. Свои пожелания я написал довольно четко. Сделка открывается по сигналу индикатора (условие открытия сделки я приложил в коде). После того как предыдущая сделка закрылась по Тейк профиту и Трейлинг стопу мне нужно пропустить 1 или 2 или 3 (настраиваемый параметр) сигнала от индикатора, т.е. не открывать сделку. Именно для этого мне и нужен счетчик сигналов от индикатора, как это прописать программно я не знаю, поэтому и прошу помощи.
 

Доброго всем времени суток!) Недавно увлекся темой MQL и вот столкнулся с первыми проблемами. Суть в том что имеющийся советник открывает позиции согласно функции, но закрывать их не хочет, потому весят эти рыночные ордера без стопов до конца сессии теста. Вопрос в том где я спорол косяк.

Тут фрагмент на закрытие:

 if(Level >= 0.000100 && LevelXP>LevelXM && CountSell() > 0)
          {
               for(i=OrdersTotal()-1; i >= 0; i--)
               {
                   if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
                   {
                       if(OrderMagicNumber() == Magic && OrderType() == OP_SELL)
                          OrderClose(OrderTicket(), OrderLots(), Ask, Slippage);
                   }
               }
          }
 
ElhoroS:

Доброго всем времени суток!) Недавно увлекся темой MQL и вот столкнулся с первыми проблемами. Суть в том что имеющийся советник открывает позиции согласно функции, но закрывать их не хочет, потому весят эти рыночные ордера без стопов до конца сессии теста. Вопрос в том где я спорол косяк.


1) Возможно проблема в условиях на закрытие (вы его в неявном виде дали)

2) В данном коде вы закрываете только OP_SELL (на покупку не забыли реализовать? убедитесь в верности условий на закрытие)

3) В проверке при переборе нету проверки на валютную пару и таймфрейм (зачем потом бегать и дописывать?)

4) Нету проверки на реквоты (в тестере все должно быть нормально, а вот уже на демо или реале - не всегда)

5) Как заявлял Артемида artmedia70 MarketInfo(Symbol(),MODE_ASK) будет лучше Ask - более актуальные цены даст

 
ALXIMIKS:


5) Как заявлял Артемида MarketInfo(Symbol(),MODE_ASK) будет лучше Ask - более актуальные цены даст

Не... ну хватит уже обзываться-то...
 
artmedia70:
Не... ну хватит уже обзываться-то...


да, помню прошлую ситуацию, Артём, извините - привязалось.
 
ALXIMIKS:

да, помню прошлую ситуацию, Артём, извините - привязалось.
Артём+Фемида=Артемида; Гордись, Артём! Это признание! Желаю так держать!
 
borilunad:
Артём+Фемида=Артемида; Гордись, Артём! Это признание! Желаю так держать!
 
artmedia70:
Откуда картинки и как это делаешь? Правда, эти персонажи не олицетворяют Фемиду.
Причина обращения: