Почему советник не работает

 
В эту тему были перенесены комментарии, не относящиеся к "Ошибки, баги, вопросы".
 

Здравствуйте! 2017.09.22_15:11 GMT+3. Кто знает? Почему советник не работет. Опять в тестере стратегий появляется только "голая" цена, без линий индикатора. Не говоря уже о том, что он не открывает и не закрывает сделки. Я недавно осваиваю ООП. Пытаюсь не пользоваться Стандартной библиотекой. Но зачем "изобретать велосипед" ? И к тому же мне некогда. Свою ситуацию подробнее не объясняю. Основной файл советника писал на примере стандартного советника Sample MACD.mq5 . Включаемый файл "писал" с файла Trade.mqh из Стндартной библиотеки. Копировал, вставлял; копировал, вставлял. Отложенные ордера мне не нужны, поэтому получилось меньше. Ну и подправлял, чтобы компилятор "не возмущался". Получилось, что обошёлся одним включаемым файлом. Советник не работает потому что я не писал свой код "из головы" ? А есть ли разница между файлом Корпорации и моим файлом? Мне же никто не ответил что сделать, чтобы файл работал, а не занимал место на жёстком диске. Мне что догадываться, что дальше делать. Люди: "Ау"! Прилагаю три файла. Жду ответа. 15:30 GMT+3.      

Файлы:
ExpertLate.mq5  42 kb
Trade.mqh  99 kb
20170922.log  6 kb
 
Николай Никитюк:

Здравствуйте! 2017.09.22_15:11 GMT+3. Кто знает? Почему советник не работет. Опять в тестере стратегий появляется только "голая" цена, без линий индикатора. Не говоря уже о том, что он не открывает и не закрывает сделки. Я недавно осваиваю ООП. Пытаюсь не пользоваться Стандартной библиотекой. Но зачем "изобретать велосипед" ? И к тому же мне некогда. Свою ситуацию подробнее не объясняю. Основной файл советника писал на примере стандартного советника Sample MACD.mq5 . Включаемый файл "писал" с файла Trade.mqh из Стндартной библиотеки. Копировал, вставлял; копировал, вставлял. Отложенные ордера мне не нужны, поэтому получилось меньше. Ну и подправлял, чтобы компилятор "не возмущался". Получилось, что обошёлся одним включаемым файлом. Советник не работает потому что я не писал свой код "из головы" ? А есть ли разница между файлом Корпорации и моим файлом? Мне же никто не ответил что сделать, чтобы файл работал, а не занимал место на жёстком диске. Мне что догадываться, что дальше делать. Люди: "Ау"! Прилагаю три файла. Жду ответа. 15:30 GMT+3.      


Вопрос: зачем создали свой файл "Trade.mqh"?


Не торгует он, так как в CExpertLate::Processing просто нет торговых функций:

//+------------------------------------------------------------------+
//| main function returns true if any position processed             |
//+------------------------------------------------------------------+
bool CExpertLate::Processing(void)
  {
//--- refresh rates
   if(!RefreshRates())
      return(false);
//--- refresh indicators
   if(BarsCalculated(m_handle_ichimoku)<19) //|| BarsCalculated(m_handle_ema)<2)
      return(false);
   if(CopyBuffer(m_handle_ichimoku,0,0,7,m_buff_tenkan)!=7 ||
      CopyBuffer(m_handle_ichimoku,1,0,19,m_buff_kijun)!=19) //||
      //CopyBuffer(m_handle_ema,0,0,2,m_buff_EMA)         !=2)
      return(false);
   //m_indicators.Refresh();
//--- to simplify the coding and speed up access
//--- data are put into internal variables
   m_tenkan_current =m_buff_tenkan[0];
   m_tenkan_previous=m_buff_tenkan[1];
   m_tenkan_previous2=m_buff_tenkan[2];
   m_kijun_current  =m_buff_kijun[1];
   m_kijun_previous =m_buff_kijun[2];
   //m_ema_current    =m_buff_EMA[0];
   //m_ema_previous   =m_buff_EMA[1];
//--- it is important to enter the market correctly, 
//--- but it is more important to exit it correctly...   
//--- first check if position exists - try to select it
   //if(m_position.Select(Symbol()))
     //{
      //if(m_position.PositionType()==POSITION_TYPE_BUY)
        //{
         //--- try to close or modify long position
         //if(LongClosed())
           // return(true);
         //if(LongModified())
           // return(true);
        //}
      //else
        //{
         //--- try to close or modify short position
         //if(ShortClosed())
           // return(true);
         //if(ShortModified())
           // return(true);
        //}
     //}
//--- no opened position identified
   //else
     //{
      //--- check for long position (BUY) possibility
      //if(LongOpened())
        // return(true);
      //--- check for short position (SELL) possibility
      //if(ShortOpened())
        // return(true);
     //}
//--- exit without position processing
   return(true);
  }

ds

 

     Здравствуйте, Владимир Карпутов! 2017.10.29_01:16 GMT+3. Я встал в тупик теперь после такой ошибки: event handling function not found_ExpertLate.mq5_1_1. Пробовал два варианта функции OnTick(). Оба вроде бы должны работать, но компилятор пишет такую ошибку. Если бы я сам справился с этой ошибкой, то не писал бы на форум.
     Зачем я создавал (переписывал) свой файл 'Trade.mqh' ? Я не просто копировал и вставлял, но и перепивал вручную, местами по одному знаку, всё, что было скопировано. Всё для того, чтобы советник работал. А то у меня с файлом Trade.mqh из Стандартной библиотеки советник не работал, хотя и ошибок компиляции не было. А Вы что скажете? Я зря потратил столько времени?
     22 сентября меня интересовало почему на графике даже не появляются линии Ichimoku. Должно было появляться две линии. На этот вопрос ответа не было.
     Прилагаю два файла и жду ответа, как соловей лета. 01:34 GMT+3. 

Файлы:
ExpertLate.mq5  64 kb
TradeC.mqh  29 kb
 

     Здравствуйте, Владимир Карпутов! 2017.11.07_09:10 GMT+3. А остальные знающие люди знают о существовании этого (216125) форума? Может кто ещё что подскажет? Пока Вам, видимо, некогда. У Вас же достаточно работы? А то я как на необитаемом острове на этом форуме.
     Что понял, -- пишу. Ошибка event handling function not found (Ln1, Col1) возникает, если метод OnTick() написан в ООП. Я переписал его процедурно и ошибка исчезла. Но это не выход. Я бы хотел писать 100% ООП. А это ни рыба, ни мясо. И к тому же с input параметрами в ООП я не разобрался. Записать в конструкторе переменные, оказывается, недостаточно. Я пробовал, в тестере стратегий в журнале они не появляются. Приходилось дублировать входные параметры процедурно. Писать input int и т.д. ...
     Извините, господин Карпутов. Могли бы Вы, если Вам некогда, хотя бы написать как долго мне ждать ответа и насколько сложный мой главный вопрос, что советник не работает? А без участия программистов MetaQuotes Corporation можно справиться? Или без них никак? И вообще, я подумал, может я по привычке пишу методы как в процедуре, а там нужно делать простые проверки. А мне невдомёк что проверять. Как говорят китайцы: "То, что проще всего, -- даётся труднее всего".
     Я немного переписал файл ExpertLate.mq5 . Поэтому приложу его ещё раз. И ещё один файл: MarketInOut.mqh .
     Пока всё. Жду ответа. 09:38 GMT+3.

Файлы:
 
Николай Никитюк:

     Здравствуйте, Владимир Карпутов! 2017.11.07_09:10 GMT+3. А остальные знающие люди знают о существовании этого (216125) форума? Может кто ещё что подскажет? Пока Вам, видимо, некогда. У Вас же достаточно работы? А то я как на необитаемом острове на этом форуме.
     Что понял, -- пишу. Ошибка event handling function not found (Ln1, Col1) возникает, если метод OnTick() написан в ООП. Я переписал его процедурно и ошибка исчезла. Но это не выход. Я бы хотел писать 100% ООП. А это ни рыба, ни мясо. И к тому же с input параметрами в ООП я не разобрался. Записать в конструкторе переменные, оказывается, недостаточно. Я пробовал, в тестере стратегий в журнале они не появляются. Приходилось дублировать входные параметры процедурно. Писать input int и т.д. ...
     Извините, господин Карпутов. Могли бы Вы, если Вам некогда, хотя бы написать как долго мне ждать ответа и насколько сложный мой главный вопрос, что советник не работает? А без участия программистов MetaQuotes Corporation можно справиться? Или без них никак? И вообще, я подумал, может я по привычке пишу методы как в процедуре, а там нужно делать простые проверки. А мне невдомёк что проверять. Как говорят китайцы: "То, что проще всего, -- даётся труднее всего".
     Я немного переписал файл ExpertLate.mq5 . Поэтому приложу его ещё раз. И ещё один файл: MarketInOut.mqh .
     Пока всё. Жду ответа. 09:38 GMT+3.


Практически сразу в шапке:

#include <Trade\TradeC.mqh>

Что это? Почему Вы не используете Стандартную Библиотеку?

 

     Здравствуйте, Владимир Карпутов! 2017.11.09_04:52 GMT+3. Один участник форума /1111/ Ошибки, баги, вопросы, у которого больше 100 000 баллов, написал мне что не использует Стандартную библиотеку. Но не написал, -- почему. А почему я здесь перелопатил стандартный файл Trade.mqh ? Я бы охотно пользовался Стандартной библиотекой и добавлял бы к ней свои файлы, чего нет в Стандартной библиотеке. Если бы это всё работало. А оно только занимает место на жёстком диске. Писанины много, а толку снеё никакого. Вот я и обращаюсь на форум. А ответа всё нет.
     Мне показалось, что если использовать только Стандартную библиотеку и Мастер создания экспертов, то исполняемый файл работает. Но там либо случайная прибыль и несущественная, либо вообще только убыток. Но для примера написания эксперта Мастер создания экспертов годится. Есть ещё одно "но". У меня получалось, что время компиляции такого эксперта примерно 3,3 секунды. А это многовато. Есть ли ограничение для времени компиляции файлов эксперта? Нужно учитывать, что включаемые файлы в этом эксперте -- написаны ООП. А основной файл -- процедурный. Из-за него и увеличивается так сильно время компиляции.
     Почему я переписал стандартный файл Trade.mqh ? Вообще-то там написано довольно много такого, что мне не нужно. Например отложенные ордера мне не нужны. Они на золоте не эффективны. И ещё много писанины, которая печатается в журнале. Из этого мне тоже нужно минимум. Можете посмотреть насколько мой TradeC.mqh меньше стандартного. И к тому же я подумал, что можно написать только то, что мне нужно, а если что мне подходит из Стандартной библиотеки, -- переписать вручную почти по символам. Чтобы эти методы не были тупо скопированы. Одно копирование, -- один метод. Я почему-то решил, что сочетание моих файлов и методов и стандартных -- не работает. Может программисты MetaQuotes так запрограммировали. Откуда мне знать? Всё равно ответа нет ни от знатоков форума, ни от Сервисдеск. Вот я и выдумываю всякую ерунду (по-Вашему). Что я могу ещё думать, если ответа нет? Такими темпами я этот советник ещё год дописывать буду. С таким же успехом можно подбирать пароль к чужой электронной почте. У хакеров на это сколько уходит? Месяц? Это зависит от длины пароля и свободного времени.
     У меня всё. Надеюсь я Вам объяснил, почему пишу по-своему. В советниках, сделанных из стандартных заготовок нет прибыли. Они только для примера как писать. А почему не работает, хотя на вид написано аналогично, -- это Вам видней. Вы ООП хорошо знаете? Мне кажется Тришкин лучше знает. Но ему, наверно, неинтересно, что я пишу. 05:38 GMT+3. Жду ответа.               

 

Николай, менять стандартный файл нельзя по нескольким причинам..

1) То что вы допустите ошибку это гораздо более вероятно чем те, кто эти стандартные файлы писал.. Поэтому чтобы вам помочь нужно перепроверять что вы там изменили, а это добавляет работы.

2) Вот вы попросили помощь на форуме и отправили измененный стандартный файл, получается тому кто потенциально будет вам помогать нужно будет удалить свой файл и использовать ваш.. это как то нехорошо.. То есть этот модуль будет поврежден для других проектов..


Далее по вашему проекту, по статистике помогают на форуме если анализ ситуации занимает не больше 5и минут. Мало кто будет искать ошибку в огромном проекте, да еще и слепленном из обрывков ООП стандартной библиотеки.. Вам может помочь сервис фриланс, ваш проект будет готов в течении пары дней.(скорее всего)

 
Николай Никитюк:

     ...


Не трогайте (не изменяйте) файлы стандартной библиотеки! Этим Вы ломаете ВСЕ последующие коды.

Если уже и хотите что-то изменить - применяйте наследование или пишите полностью новый файл.

 

     Здравствуйте Карпутов и Иванов! 2017.11.26_02:51 GMT+3. Если применять наследование, то можно использовать и файлы Стандартной библиотеки и свои файлы? И код будет работать? А если для файла MarketInOut.mqh нет места в Стандартной библиотеке?

     А могу я узнать как проверять свои файлы на работоспособность? Или это секрет? Может Вы подскажете где что почитать, чтобы я сам проверял свои файлы на работоспособность? Я потратил бы на это больше 5 минут, но мне бы это всё и пригодилось. В статье 367 говорится, что, если в методе нет каких-то проверок, то он не будет работать. Я думаю, во многих методах, которые я писал в последнее время, не хватает проверок. Типа проверок на ноль. Пока я дождусь когда мне ответят, я начну разбираться где в каких методах не хватает проверок. Пока всё. Жду ответа. 03:15 GMT+3.

 
Николай Никитюк:

     Здравствуйте Карпутов и Иванов! 2017.11.26_02:51 GMT+3. Если применять наследование, то можно использовать и файлы Стандартной библиотеки и свои файлы? И код будет работать? А если для файла MarketInOut.mqh нет места в Стандартной библиотеке?

     А могу я узнать как проверять свои файлы на работоспособность? Или это секрет? Может Вы подскажете где что почитать, чтобы я сам проверял свои файлы на работоспособность? Я потратил бы на это больше 5 минут, но мне бы это всё и пригодилось. В статье 367 говорится, что, если в методе нет каких-то проверок, то он не будет работать. Я думаю, во многих методах, которые я писал в последнее время, не хватает проверок. Типа проверок на ноль. Пока я дождусь когда мне ответят, я начну разбираться где в каких методах не хватает проверок. Пока всё. Жду ответа. 03:15 GMT+3.

@Николай Никитюк я предлагаю другой путь: давайте разработаем советник с нуля, постепенно добавляя задачи.
Причина обращения: