stargazer2011

 
Уровень 9

  Торгую в компаниях:


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

Рейтинг 2073



РЕКОМЕНДУЮ



Добавить в советник функцию

Здравствуйте.
Большая просьба еще раз проверить советник www.opentraders.ru/downloads/2978/.
Дело в том, что при первоначальном запуске открывается как и положено ДВЕ сделки по двум разным инструментам. Но после закрытия по профиту (и не единожды проверено не в тестере, а на демосчете) происходит вновь открытие только по ОДНОЙ из пар.
Ставил на стандартный EURUSD и USDCHF (Альпари демо). Можно ли ввести какую-нибудь проверку на обязательно открытие второй из пар. Спасибо!
  • 0
  • Просмотров: 960
  • 30 апреля 2021, 15:42
  • stargazer2011
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Заказ советника на базе индикатора PointZero
28 апреля 2021
01 мая 2021

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

+
0
посмотрю сегодня
avatar

  34  AM2 Сообщений: 15826 - Андрей

  • 30 апреля 2021, 17:14
+
0
Здравствуйте. Получилось ли с советником?
avatar

  9  stargazer2011 Автор Сообщений: 57

  • 11 мая 2021, 09:42
+
0
Попробуйте так:
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double ask1=MarketInfo(Symb1,MODE_ASK);
   double ask2=MarketInfo(Symb2,MODE_ASK);
   int dig1=(int)SymbolInfoInteger(Symb1,SYMBOL_DIGITS);
   
   double bid1=MarketInfo(Symb1,MODE_BID);
   double bid2=MarketInfo(Symb2,MODE_BID);
   int dig2=(int)SymbolInfoInteger(Symb2,SYMBOL_DIGITS);
   
   if(AllProfit()>Profit && Profit>0)
      CloseAll();

   if(AllProfit()<-Loss && Loss>0)
      CloseAll();

   if(CountTrades()<1)
     {
      if(Type1==0)
         PutOrder(Symb1,0,NormalizeDouble(ask1,dig1));
      if(Type2==0)
         PutOrder(Symb2,0,NormalizeDouble(ask2,dig2));

      if(Type1==1)
         PutOrder(Symb1,1,NormalizeDouble(bid1,dig1));
      if(Type2==1)
         PutOrder(Symb2,1,NormalizeDouble(bid2,dig2));
     }

   Comment("\n Profit : ",AllProfit());
  }
//+------------------------------------------------------------------+

Возможно были не нормализованы цены при быстром потоке котировок.
Если не получится можно будет переписать функцию int CountTrades() и пересмотреть условия открытия в функции void OnTick().Например так:
if(CountTrades(Symb1)<1 && Type1==0){PutOrder(Symb1,0,NormalizeDouble(ask1,dig1));}

avatar

  16  ssg Сообщений: 817

  • 11 мая 2021, 13:54
+
0
Спасибо за помощь. Котировки были подкачаны, советник проверен и на других брокерах (демо).
Всё-равно после закрытия двух пар, открывалась (периодически! не всегда! рандомно) то одно — то другая, но одна, а не две сразу.
К сожалению в кодах не силён, поэтому и попросил добавить функцию проверки открытия по двум парам.
Повторюсь — выложенный Вами код не смогу вставить (или поправит) в имеющемся советнике ибо не знаю куда этот кусок вставить. ( 
Редактирован: 11 мая 2021, 15:43
avatar

  9  stargazer2011 Автор Сообщений: 57

  • 11 мая 2021, 15:38
+
0
Нужный кусок нашел, вставил в советник, буду обкатывать. А вот по функции int CountTrades() и void OnTick не понял, пока ничего другого не менял. Всё-таки желательно самому разработчику посмотреть код.
Редактирован: 11 мая 2021, 16:02
avatar

  9  stargazer2011 Автор Сообщений: 57

  • 11 мая 2021, 16:01
+
0
Вот только что отработали обе валютных пары: EURUSD-USDCHF, закрылись в выставленном профите 1$ (обе сразу). Но после открылась сразу только 1 пара EURUSD. Так что подставленный скорректированный кусок советника не помог, увы!
avatar

  9  stargazer2011 Автор Сообщений: 57

  • 11 мая 2021, 16:10
+
0
А что пишут в логах? Какая причина или ошибка?
avatar

  16  ssg Сообщений: 817

  • 11 мая 2021, 16:26
+
0
В этом и всё дело — в логах отписывает, что две сделки закрыты и следом одна открыта, и всё — нет сообщения (как это бывает в случае какой траблы) что не может по какой-либо причине открыть сделку.
avatar

  9  stargazer2011 Автор Сообщений: 57

  • 12 мая 2021, 09:12
+
0
SSG, так может подправите и вставите последнюю предложенную Вами строчку куда надо? А я кину на обкатку?
avatar

  9  stargazer2011 Автор Сообщений: 57

  • 12 мая 2021, 11:49
+
0
Попробуйте так:
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades(string symb, int type)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==symb && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL ) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double ask1=MarketInfo(Symb1,MODE_ASK);
   double ask2=MarketInfo(Symb2,MODE_ASK);
   int dig1=(int)SymbolInfoInteger(Symb1,SYMBOL_DIGITS);
   
   double bid1=MarketInfo(Symb1,MODE_BID);
   double bid2=MarketInfo(Symb2,MODE_BID);
   int dig2=(int)SymbolInfoInteger(Symb2,SYMBOL_DIGITS);
   
   if(AllProfit()>Profit && Profit>0)
      CloseAll();

   if(AllProfit()<-Loss && Loss>0)
      CloseAll();

//просто перебор "в лоб" комбинаций с открытием позиций

   if(CountTrades(Symb1,OP_BUY)<1 && Type1==0){PutOrder(Symb1,0,NormalizeDouble(ask1,dig1));}
   if(CountTrades(Symb1,OP_SELL)<1 && Type2==1){PutOrder(Symb1,1,NormalizeDouble(bid1,dig1));}
   
   if(CountTrades(Symb2,OP_BUY)<1 && Type1==0){PutOrder(Symb2,0,NormalizeDouble(ask2,dig2));}
   if(CountTrades(Symb2,OP_SELL)<1 && Type2==1){PutOrder(Symb2,1,NormalizeDouble(bid2,dig2));}
   
 
   Comment("\n Profit : ",AllProfit());
  }
//+------------------------------------------------------------------+
avatar

  16  ssg Сообщений: 817

  • 12 мая 2021, 13:43
+
0
Спасибо!
Буду пробовать.
avatar

  9  stargazer2011 Автор Сообщений: 57

  • 12 мая 2021, 14:39

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