Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1338

 

Задам вопрос более корректно.

Есть блок программного кода, который объясняет советнику сколько сделок нужно открыть. Выглядит он так

int OPEN=1;

         if(OrdersTotal())

            OPEN=0; //можно открыть не более  ордеров

         if(OPEN==1)

           {

            //Здесь открываем

           }

Проблема в том что он открывает требуемое количество сделок (в данном примере 1) по всем инструментам. А мне необходимо объяснить ему 

что нужно открыть это количество сделок на ТЕКУЩЕМ инструменте. Что то типа _Symbol или Symbol (). Как это можно сделать? Думаю решение тут простое .

 
sibiriyak73:

Задам вопрос более корректно.

Есть блок программного кода, который объясняет советнику сколько сделок нужно открыть. Выглядит он так

int OPEN=1;

         if(OrdersTotal())

            OPEN=0; //можно открыть не более  ордеров

         if(OPEN==1)

           {

            //Здесь открываем

           }

Проблема в том что он открывает требуемое количество сделок (в данном примере 1) по всем инструментам. А мне необходимо объяснить ему 

что нужно открыть это количество сделок на ТЕКУЩЕМ инструменте. Что то типа _Symbol или Symbol (). Как это можно сделать? Думаю решение тут простое .

if(!isTradeToDay(Symbol()))
 {
  //Здесь открываем
 }
 
Iurii Tokman:
Отрывает хренову тучу сделок причем в sell
 
sibiriyak73:
Отрывает хренову тучу сделок причем в sell

ну тут два варианта:
1. показать весь код
2. в клуб телепатов

 
Iurii Tokman:

ну тут два варианта:
1. показать весь код
2. в клуб телепатов:)

:)

как открывать и бай и селл я разобрался "!". А вот количество сделок не регулирует открывает на каждом тике

int start()

  {

   double a=iOpen(NULL,PERIOD_D1,0);

   double d=_ORDER*0.00001;

   double c=d+1;

   double s=c*a;

   double limit=  NormalizeDouble(s,_Digits);

// Print("уровень лимита= ",limit);

   double e=_STOP*0.00001;

   double n=e+1;

   double m=n*a;

   double SL=  NormalizeDouble(m,_Digits);

//Print("уровень стопа= ",SL);

   double p=_TP*0.00001;

   double f=p+1;

   double z=f*a;

   double TP=  NormalizeDouble(z,_Digits);

   double w=iOpen(NULL,PERIOD_D1,0);

   double q=_ORDER*0.00001;

   double j=q+1;

   double v=w/j;

   double limit1=  NormalizeDouble(v,_Digits);

// Print("уровень лимита= ",limit);

   double k=_STOP*0.00001;

   double y=k+1;

   double u=w/y;

   double SL1=  NormalizeDouble(u,_Digits);

//Print("уровень стопа= ",SL);

   double g=_TP*0.00001;

   double _f=g+1;

   double _m=w/_f;

   double TP1=  NormalizeDouble(_m,_Digits);


   if(Hour()==Nac)

     {

      if(iOpen(NULL,PERIOD_D1,0)<iOpen(NULL,PERIOD_D1,1))

        {

         if(!isTradeToDay(Symbol()))

           {

            int ticket1=OrderSend(Symbol(),OP_SELLSTOP,1.5,limit1,3,SL1,TP1,NULL,0,0,clrRed); //Здесь открываем

           }

        }

      if(iOpen(NULL,PERIOD_D1,0)>iOpen(NULL,PERIOD_D1,1))

        {

         if(isTradeToDay(Symbol()))

           {

            int ticket=OrderSend(Symbol(),OP_BUYSTOP,1.5,limit,3,SL,TP,NULL,0,0,clrBlueViolet); //Здесь открываем

           }

        }

        }

      if(Hour()==Kon)

        {

         bool   result;

         int    error;

         //----

         while(OrdersTotal()>0)

           {

            if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))

              {

               if(OrderType()==OP_BUY)

                  result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);

               if(OrderType()==OP_SELL)

                  result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);

               if(OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)

                  OrderDelete(OrderTicket());

               if(result!=TRUE)

                 {

                  error=GetLastError();

                  Print("LastError = ",error, " ",Symbol());

                 }

               else

                  error=0;

              }

            else

               Print("Error when order select ", GetLastError());

           }

        }

      //+------------------------------------------------------------------+

      //|                                                                  |

      //+------------------------------------------------------------------+

      return(0);

     }

Вот код без объявленных переменных.

 
sibiriyak73:

код нужно вставить Alt+S
и где функция ?
как вы его скомпилировали ? без ошибок ?

 
Iurii Tokman:

код нужно вставить Alt+S
и где функция ?
как вы его скомпилировали ? без ошибок ?

Функция внизу. Компиляция без ошибок. Селл сторону удалось отрегулировать открывает одну сделку на конкретном инструменте даже если есть открытые по другим

инструментам. А вот баевскую сторону фигачит сделки на каждом тике и все

 
Iurii Tokman:

код нужно вставить Alt+S
и где функция ?
как вы его скомпилировали ? без ошибок ?

На текущий момент код такой. Селл сторона все ок а вот бай сторона каждый тик сделка
Файлы:
 
sibiriyak73:
На текущий момент код такой. Селл сторона все ок а вот бай сторона каждый тик сделка

на бай сторону тоже самое нужно делать

 
Iurii Tokman:

на бай сторону тоже самое нужно делать

Не могу разобраться что именно нужно поменять в функции isTradeToDay чтобы на бай стороне стало также как на селл стороне. По прежнему бай сторона не работает :(

Причина обращения: