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

 
MIKHAIL VINOGRADOV:

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

Не получается закрывать противоположные ордера разных лотов через CTrade.PositionCloseBy(ticket1,ticket2).

ResultRetCode() - выдает ошибку 10035.

Можете подсказать в чем причина?

10035

TRADE_RETCODE_INVALID_ORDER

Неверный или запрещённый тип ордера


Смотрите внимательно что ж вы там делаете.

 

Правильно ли я понимаю - функция SetIndexBuffer нужна для привязки буфера(ов) к конкретному графическому построению, И ДЛЯ НУМЕРАЦИИ ДОСТУПА К НИМ ЧЕРЕЗ iCustom ?

То есть например, если я создам массив для цен High, то его достаточно просто объявить без привязки через SetIndexBuffer и в ...

#property indicator_buffers

... его можно не считать

К тому же через SetIndexBuffer можно привязывать массивы только типа double, а например уже datetime и другие - нет


Просто я этот момент не до конца понимаю (или понимал), а сейчас мысль пришла - хочу уточнить...

 
Alexandr Sokolov:

Правильно ли я понимаю - функция SetIndexBuffer нужна для привязки буфера(ов) к конкретному графическому построению, И ДЛЯ НУМЕРАЦИИ ДОСТУПА К НИМ ЧЕРЕЗ iCustom ?

То есть например, если я создам массив для цен High, то его достаточно просто объявить без привязки через SetIndexBuffer и в ...

... его можно не считать

К тому же через SetIndexBuffer можно привязывать массивы только типа double, а например уже datetime и другие - нет


Просто я этот момент не до конца понимаю (или понимал), а сейчас мысль пришла - хочу уточнить...

Привязка не к построению, а к массиву данных происходит. Поэтому, я думаю что так не прокатит. Хотя не проверял.

Что касается типа datetime, так его можно и в double записать, а читая насильно применить тип.

 
Happy:

Доброго утра.

Вопросик. На тестере на стыке дней (когда проходит линия следующего дня) программа должна была отработать постановку отложенки. Отложенка которая уже стояла и ее цена зацепила - она открылась, а вот инструкцию на открытие другого отложенного ордера - система почему-то проигнорила :( Почему? На реальном счете тоже такое может произойти, когда инструкция робота просто игнорится и соответственно нужное действие не происходит?


И еще вопрос. Гоняю тестер, но сильно смущает факт того, что в визуализации он проходит где-то неделю, а потом выкатывает надпись

177564 tick events (447 bars, 7888506 bar states) processed in 0:17:42.694 (total time 0:17:48.217)

177564 тиковых событий (447 баров, 7888506 баров) обработано в 0: 17: 42.694 (общее время 0: 17: 48.217)

Чет я не понял, ему что дальше тестировать религия не позволяет? Или он такой заботливый и за ресурсы моего компьютера беспокоится? Никакой ошибки ведь не выкатывается. Он просто сам завершает работу. Хотя по датам  у меня  выставленно не 7 дней,  7 месяцев. Хочется просмотреть весь путь тестов от и до. 

Что за религия ему не позволяет визуально затестить допустим год или несколько лет? А ты потом визуально увидешь как твоя программа отрабатывала бы в течение к примеру предыдущего года.


И еще вопросик. (Хотя он возможно будет без ответа )) ) Как может произойти такое, что на тестере 2 круга тестер отрабатывает как положено, а вот как раз перед выше упомянутой надписью в этот день просто игнорит все инструкции. Как такое возможно работала корректно программа несколько кругов (открывала ордера и потом их закрывала), а потом хоп и игнор всего. Ни открывает, ни закрывает. Это из-за окончания тестрируемого периода или есть какие другие причины?

 
brent и wti графики на главном экране сайта фтм отличаются сами катировки от графика в личном кабинете. Есть мысли? Я уверен что управление графиками в частности катиррвок "нефть" происходит внутри "кухни" фтм. Объяснений нет. Доказательство есть на фото в одно и то же время цены в личном кабинете отличаются в противоположную от реальных и всегда в минус трейдеру. Пахнет лохотррном...
 
Yevhenii Levchenko:

........... Но в определенный момент ему нужно определить, закрыл ли он сам свою сделку или это кто-то влез и закрыл ее....

Пиши однозначно, это ты спрашиваешь как прописать или про использование советника без редактирования

 
как я могу обработать ошибку 4403?
 

  • Здравствуйте!

    Для советника хотел использовать индикатор A/D, но не в чистом виде, его moving average.

    Поэтому сочинил функции:

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

    //|  Функция A/D                       |

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

    double A_D(ENUM_TIMEFRAMES tf, int shift)

      {

       double res=0;



       res=iAD(NULL,tf, shift);



       return res;





      }



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

    //|  Функция A/D                       |

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

    double A_D_moving(ENUM_TIMEFRAMES tf, int period)

      {

       double res=0;

       double a[];





       for(int i=period; i>=1; i--)

         {

          a[i]= A_D(tf, i);

         }



       for(int i=period; i>=1; i--)

         {

          res=iMAOnArray(a,0,period,0,MODE_SMA,0);

         }



       return res;





      }

    Но при тестировании стало очевидно, что  A_D_moving() в данной редакции с ошибкой, т.к. возникает критическая ошибка при запуске тестирования.

    Прошу, кто может, помогите:

    Насколько корректно написана функция A_D_moving()? Если есть ошибки прошу указать...

    Спасибо!

     


 
AurelianoV:

Вставляйте пожалуйста правильно код:


 
Artyom Trishkin:

Вставляйте пожалуйста правильно код:


Извините1

/+------------------------------------------------------------------+
//|  Функция A/D                       |
//+------------------------------------------------------------------+
double A_D(ENUM_TIMEFRAMES tf, int shift)
  {
   double res=0;
   res=iAD(NULL,tf, shift);
   return res;
  }

//+------------------------------------------------------------------+
//|  Функция A/D                       |
//+------------------------------------------------------------------+
double A_D_moving(ENUM_TIMEFRAMES tf, int period)
  {
   double res=0;
   double a[];
   
   for(int i=period; i>=1; i--)
     {
      a[i]= A_D(tf, i);
     }
   for(int i=period; i>=1; i--)
     {
      res=iMAOnArray(a,0,period,0,MODE_SMA,0);
     }
   return res;
  }


звините

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