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

 
Подскажите, пожалуйста, что значит "Разрешить импорт из внешних экспертов"? 

"Эксперт" - это советник, исходя из документации. Но, где-то видел упоминание эксперта в контексте индикатора. 

Если я отключу эту функцию, будет ли у меня работать советник на мартингейле, который использует стандартные индикаторы МТ4?

UPD
Данная функция отображается в окне при набрасывании советник на график
 
Ivan Butko #:
Подскажите, пожалуйста, что значит "Разрешить импорт из внешних экспертов"? 

"Эксперт" - это советник, исходя из документации. Но, где-то видел упоминание эксперта в контексте индикатора. 

Если я отключу эту функцию, будет ли у меня работать советник на мартингейле, который использует стандартные индикаторы МТ4?

UPD
Данная функция отображается в окне при набрасывании советник на график

Импорт из внешних экспертов на стадии вымирания.

Для того чтобы функцию можно было импортировать в другой советник, эта функция должна иметь модификатор export

void f_1() export
{
 // тело функции
}

Я экспериментировал с этой возможностью очень давно и подробностей совсем не помню.

ps; Вот в документации нашёл 

Экспортирование функций - Функции - Основы языка - Справочник MQL4
Экспортирование функций - Функции - Основы языка - Справочник MQL4
  • docs.mql4.com
Экспортирование функций - Функции - Основы языка - Справочник MQL4
 
Alexey Viktorov #:

Импорт из внешних экспертов на стадии вымирания.

Для того чтобы функцию можно было импортировать в другой советник, эта функция должна иметь модификатор export

Я экспериментировал с этой возможностью очень давно и подробностей совсем не помню.

ps; Вот в документации нашёл 

Большое спасибо
 

Добрый. Подскажите в чем может быть проблема, не перемещается ТП открытых ордеров.

void ModifyOrderS()

{

   for(int i=OrdersTotal()-1; i>=0; i--)

     {

      if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES))

       {

        if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)

         {

            if(OrderType() == OP_BUY || OrderType() == OP_SELL)

            {

             avg += OrderOpenPrice();

             count++;

            }

         }

     }

   } 

    

  avg = NormalizeDouble(avg/count, Digits);

  

  for(int i=OrdersTotal()-1; i>=0; i--)

     {

      if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES))

       {

        if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)

         {

            if(OrderType() == OP_BUY)

            {

              TP = NormalizeDouble(avg + Takeprofit* Point, Digits);

              ticket =OrderModify(OrderTicket(), OrderOpenPrice(), 0, TP, 0, Yellow);

                 {

                 // Do something to handle the error

                  Print("Error in OrderModify. Error code=",GetLastError());

                 }    

            }

            else

            if(OrderType() == OP_SELL)

            {

              TP = NormalizeDouble(avg - Takeprofit* Point, Digits);

              ticket = OrderModify(OrderTicket(), OrderOpenPrice(), 0, TP, 0, Yellow);

                {

                 // Do something to handle the error

                  Print("Error in OrderModify. Error code=",GetLastError());

                 }

            }

             

           }

         

         }

        

       }

       avg = NormalizeDouble(avg/count, Digits);

     }

 
walter27 #:

Добрый. Подскажите в чем может быть проблема, не перемещается ТП открытых ордеров.

Ниже код. Добавьте переменную "last_avg" типом double в глобальные переменные. Это проверка на изменение ТП, иначе каждый тик будет отправлять запрос в торговый сервер и выдавать ошибку с кодом 1

void ModifyOrderS()
  {
    count = 0;
    avg   = 0;

    for (int i = OrdersTotal() - 1; i >= 0; i--)
      {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
          {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
              {
                if(OrderType() == OP_BUY || OrderType() == OP_SELL)
                  {
                    avg += OrderOpenPrice();
                    count++;
                  }
              } 
          }
      } 
    
    
    avg = NormalizeDouble(avg / count, Digits);
    
    if (last_avg == avg) return;

    for (int i = OrdersTotal() - 1; i >= 0; i--)
      {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
          {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
              {
                if(OrderType() == OP_BUY)
                  {
                    double TP = NormalizeDouble(avg + Takeprofit * Point, Digits);
                    if (!OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), TP, 0, Yellow))
                      Print("Ошибка модификации ордера: код ", GetLastError());
                    else
                      Print("TP успешно модифицирован");
                  }
                if(OrderType() == OP_SELL)
                  {
                    double TP = NormalizeDouble(avg - Takeprofit * Point, Digits);
                    if (!OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), TP, 0, Yellow))
                      Print("Ошибка модификации ордера: код ", GetLastError());
                    else
                      Print("TP успешно модифицирован");  
                  }
              }
          }
      }
    
    last_avg = avg;
  }
 
Ivan Butko #:

Ниже код. Добавьте переменную "last_avg" типом double в глобальные переменные. Это проверка на изменение ТП, иначе каждый тик будет отправлять запрос в торговый сервер и выдавать ошибку с кодом 1

Спасибо огромное!

 
Подскажите, пожалуйста, как в режиме "Каждый тик на основе реальных тиков" отключить в тестере стратегий линии, соединяющие хаи и лои
 
Ivan Butko #:
Подскажите, пожалуйста, как в режиме "Каждый тик на основе реальных тиков" отключить в тестере стратегий линии, соединяющие хаи и лои
Никак
 
Artyom Trishkin #:
Никак

Понял, благодарю

 
Artyom Trishkin #:
Никак

Почему никак?



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