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

 
Rewerpool:
Прикольно получилось . Из кода убрали 

Стоп теперь дергается на каждом тике )))))

Ну добавьте.

          double    OOP = OrderOpenPrice(),
                    OSL = OrderStopLoss(),
                    OTP = OrderTakeProfit();
          if ((OSL!=0&&stoploss==0) && (OTP!=0&&takeprofit==0)) continue;
 

Еще раз добрый вечер. Полная суть вопроса. 

Выставляю советник (рабочий) в маркет.  платформа МТ4. Выставлять можно один файл. Файл советника. Он должен пройти валидность, но не может, так как это советник без индикаторов. Они в отдельных файлах. Советник работает с четырьмя индикаторами. Их как то надо присоединить с советнику. Либо указать пути, то есть прописать в советнике... Что? и Куда?  Подскажите, какая форма и как это сделать.

Из того что я понял необходимо воспользоваться "Ресурсами" . Но как это правильно все прописать, в какие места в советнике не знаю. Возможно Вы знаете и другие варианты решения ситуации.

Спасибо .

вот что пишет при не прохождении валидности

 2016.04.01 00:00:00  cannot open file 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2]
 2016.04.01 00:00:00  cannot open file 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2]
 2016.04.01 00:00:00  cannot open file 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2]
 2016.04.01 00:00:00  cannot open file 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2]
 2016.04.01 00:00:00  cannot open file 'MQL4\indicators\HA_Smooth.ex4' [2]
 2016.04.01 00:00:00  cannot open file 'MQL4\indicators\HA_Smooth.ex4' [2]
 2016.04.01 00:00:00  cannot open file 'MQL4\indicators\TrendLord.ex4' [2]
 2016.04.01 00:00:00  cannot open file 'MQL4\indicators\TrendLord.ex4' [2]
 2016.04.01 00:00:05  cannot open file 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2]
 2016.04.01 00:00:05  cannot open file 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2]
 2016.04.01 00:00:05  cannot open file 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2]
 2016.04.01 00:00:05  cannot open file 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2]
 2016.04.01 00:00:05  cannot open file 'MQL4\indicators\HA_Smooth.ex4' [2]
 2016.04.01 00:00:05  cannot open file 'MQL4\indicators\HA_Smooth.ex4' [2]
 2016.04.01 00:00:05  cannot open file 'MQL4\indicators\TrendLord.ex4' [2]
 2016.04.01 00:00:05  cannot open file 'MQL4\indicators\TrendLord.ex4' [2]
 2016.04.01 00:00:10  cannot open file 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2]
 2016.04.01 00:00:10  cannot open file 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2]
 2016.04.01 00:00:10  cannot open file 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2]
 2016.04.01 00:00:10  cannot open file 'MQL4\indicators\MA in Color_wAppliedPrice.ex4' [2]

 
Вечер добрый! Как сделать проскальзывание? Весь интернет облазил, так ничего и не нашёл.... 
 
Oleksandr Kulibaba:

Еще раз добрый вечер. Полная суть вопроса. 

Выставляю советник (рабочий) в маркет.  платформа МТ4. Выставлять можно один файл. Файл советника. Он должен пройти валидность, но не может, так как это советник без индикаторов. Они в отдельных файлах. Советник работает с четырьмя индикаторами. Их как то надо присоединить с советнику. Либо указать пути, то есть прописать в советнике... Что? и Куда?  Подскажите, какая форма и как это сделать.

Из того что я понял необходимо воспользоваться "Ресурсами" . Но как это правильно все прописать, в какие места в советнике не знаю. Возможно Вы знаете и другие варианты решения ситуации.

Спасибо .

вот что пишет при не прохождении валидности

печально. что вы написали советник и не можете добавить в него индикаторы , для его работы. 

 
Vladislav Andruschenko:

печально. что вы написали советник и не можете добавить в него индикаторы , для его работы. 

 
Oleksandr Kulibaba:
Я с этим разбераюсь. Надеюсь получиться. А ваш ответ как то совсем мне не помог. И мне совсем не печаль, наоборот в азарте. И я это сделаю. 
 
//+------------------------------------------------------------------+
//|                                                        temp1.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern int    Slippage=29;

int Slippage1;

int OnInit()
  {
//---
   Slippage1=Slippage;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  if(Slippage1!=Slippage){Slippage1=Slippage; Print("Параметры изменены");}
//---
   Comment(Slippage1);
  }
//+------------------------------------------------------------------+

Приветствую.

Задача: Чтоб при новом тике,  если изменили входной параметр Slippage чтоб его значение присваивалось переменной Slippage1, чтоб значение Slippage1 выводилось в коммент, в журнал выводилось "Параметры изменены". 

Что не получается:  при Slippage1!=Slippage в журнал не выводится  "Параметры изменены".

Вопрос: что я делаю не так?

 
Andrey Sokolov:

Приветствую.

Задача: Чтоб при новом тике,  если изменили входной параметр Slippage чтоб его значение присваивалось переменной Slippage1, чтоб значение Slippage1 выводилось в коммент, в журнал выводилось "Параметры изменены". 

Что не получается:  при Slippage1!=Slippage в журнал не выводится  "Параметры изменены".

Вопрос: что я делаю не так?

Если изменили входной параметр, то в OnInit происходит присвоение переменной Slippage1 значения Slippag. Соответственно не равными они быть не могут.

extern int    Slippage=29;

int Slippage1 = 0;

int OnInit()
  {
//---
   //Slippage1=Slippage;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  if(Slippage1!=Slippage){Slippage1=Slippage; Print("Параметры изменены");}
//---
   Comment(Slippage1);
  }

 
Alexey Viktorov:

Если изменили входной параметр, то в OnInit происходит присвоение переменной Slippage1 значения Slippag. Соответственно не равными они быть не могут.

Да, спасибо. Вот только-что дошло

 

Здравствуйте! Помогите, пожалуйста, разобраться с ошибкой, возникающей в тестере при попытке модификации ордера (перевод в безубыток): на место 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;

                  }               

             }

       

       

       }   

          


      }


     }

}

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