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

 
haron312:

Здравствуйте! Помогите, пожалуйста, разобраться с ошибкой, возникающей в тестере при попытке модификации ордера (перевод в безубыток): на место SL ставлю функцию OrderOpenPrice(), при этом в тестере выдаёь ошибку error1 (по документации это означает, что есть попытка передачи в качестве параметров функции неизмененные значения). Код прилагаю! Заранее благодарю!

void DeleteOrderFunction2()        //функция удаления второй отложки И перевод второго ордера в безубыток вечером определённого дня

{

 bool flag = false;

 

 if (FlagDeleteSecondOrder2 == true)

     {

          if(DayOfWeek() == DAYOFWEEK &&   //если выдранный день недели

             Hour() == 22                  //если вечер

            )

          {

               if(BuyCount() == 1 &&           //если есть открытый ордер на покупку

                  SellStopCount() == 1         // и есть отложка на продажу

                 )

               {

                    for( int i = 0; i < OrdersTotal(); i++)             //перебираем ордера

                    {

                         OrderSelectX(i, SELECT_BY_POS, MODE_TRADES);

                         switch(OrderType())

                         {

                              case OP_BUY:  if(OrderProfit() > 0 &&

                                               Bid > OrderOpenPrice()

                                               ) 

                                            {  

                                                 OrderModifyX(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Arrow_Color);

                                                 flag =true;

                                            }

                                            break;  

                                 

                              case OP_SELLSTOP: if(flag==true)

                                                {

                                                     OrderDeleteX(OrderTicket(), Arrow_Color); 

                                                }     

                                                break;

                         }               

             }

       

       

       }      

      

      if(SellCount() == 1 &&           //если есть открытый ордер на продажу

         BuyStopCount() == 1         // и есть отложка на покупку

         )

       {    Print("ЕСТЬ!!!!");

            for( int i = 0; i < OrdersTotal(); i++)             //перебираем ордера

            {

                 OrderSelectX(i, SELECT_BY_POS, MODE_TRADES);

                 switch(OrderType())

                  {

                       case OP_SELL:  if (OrderProfit() > 0 &&

                                          Ask < OrderOpenPrice()

                                          ) 

                                      {

                                           OrderModifyX(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(),OrderTakeProfit(),0, Arrow_Color);

                                           flag = true;Print("flag =", flag);

                                      }

                                      break;     

                        case OP_BUYSTOP: if(flag == true)

                                         {

                                              Print("flag =", flag);

                                              OrderDeleteX(OrderTicket(), Arrow_Color);

                                         }

                                         break;

                  }               

             }

       

       

       }   

          


      }


     }

}

исходите из предположения, что сначала среди ордеров встретится OP_BUY, Вы его модифицируете и установите flag =true и когда встретится отложка будет удалена. А посмотрите, что будет, если отложка встретится раньше...
 

Помогите переделать индикатор в скрипт! 

double buf_1[];
double buf_2[];
//+------------------------------------------------------------------+
//| Функция инициализации, запускается один раз                      |
//+------------------------------------------------------------------+
int init() 
  {
   SetIndexBuffer(0,buf_1);
   SetIndexBuffer(1,buf_2);

   SetIndexStyle (0,DRAW_ARROW, STYLE_SOLID, 1);
   SetIndexStyle (1,DRAW_ARROW, STYLE_SOLID, 1);
   SetIndexArrow (0,233);
   SetIndexArrow (1,234);

   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   
   return(0);
  }
//+------------------------------------------------------------------+
//| Основная Функция, запускается на каждом тике                     |
//+------------------------------------------------------------------+
int start() 
  {
   if (Bars <= 100) return(0);
   int ExtCountedBars = IndicatorCounted();
   if (ExtCountedBars < 0) return(-1);
   if (ExtCountedBars > 0) ExtCountedBars--;
   for (int i=Bars-ExtCountedBars-1; i>=0; i--)
     { 
      if (High [i+2] == High[i+3])
      bool DOWN   = High[i+1]== High[i+2]; 
                                               
                    
      if (Low [i+2] == Low [i+3])             
     bool UP =  Low[i+1]==Low[i+2] ;
      
       
      if (UP)   buf_1[i+1] = Low[i+1]-3*Point;
      if (DOWN) buf_2[i+1] = High[i+1]+3*Point;
     }
   return(0);
 }
  //  ---- end

Если в место  High [i+2] и Low[i+1] написать iHigh(NULL,PERIOD_H1,[i+2]) и iLow(NULL,PERIOD_H1,[i+2]) то в принципе можно управлять таймфреймом?

Если Хаи совпали SELL, Если Лои BUY!

 
Rewerpool:

Помогите переделать индикатор в скрипт! 

Если в место  High [i+2] и Low[i+1] написать iHigh(NULL,PERIOD_H1,[i+2]) и iLow(NULL,PERIOD_H1,[i+2]) то в принципе можно управлять таймфреймом?

Если Хаи совпали SELL, Если Лои BUY!

трех совпадений придется долго ждать

 
STARIJ:

трех совпадений придется долго ждать

Я не скальпер, подожду. Можно нормализовать по 4 знаку

 

в mql5 у нас есть открытые позиции, я нахожу все сделки в этой позиции и определяю были ли они открыты по рынку или отложенными ордерами

как в mql4 определить открытые ордера были открыты по рынку или отложенными ордерами, и их тикеты? они изменяются при срабатывании отложенного ордера?

 
Rewerpool:   Я не скальпер, подожду. Можно нормализовать по 4 знаку

Да и результат слабоват ...

  совпало 5 хаев а цена вверх

 
Pavel Kolchin:

в mql5 у нас есть открытые позиции, я нахожу все сделки в этой позиции и определяю были ли они открыты по рынку или отложенными ордерами

как в mql4 определить открытые ордера были открыты по рынку или отложенными ордерами, и их тикеты? они изменяются при срабатывании отложенного ордера?

дайте им разные магики

 
STARIJ:

дайте им разные магики

ордера открывает пользователь, мне нужно определить их тип при открытии

 
Вопрос такой, что будет "сильнее грузить": при каждом определенном событии InChartEvent переопределять handle индикатора или заранее в OnInit определить все возможные хендлы в виде массива?
 
Roman Sharanov:
Вопрос такой, что будет "сильнее грузить": при каждом определенном событии InChartEvent переопределять handle индикатора или заранее в OnInit определить все возможные хендлы в виде массива?
Разные.
Причина обращения: