Вопросы от "чайника" - страница 146

 
alph:

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

Вот, с ваял, подгонял под GBPUSD М30.

Хотелось бы и мнение, и комментарий, и совет.

Заранее спасибо.

Может:

Slipage=20;                  // Проскальзывание

Включить в:

if(_Digits==4 || _Digits==2)
     {
      STP = STP/10;
      TKP = TKP/10;

     }

а то для 4-х знаков великовато.

Я на 2-х ДЦ прогнал и не смог получить положительный результат почему то.

Может время сервера отличается от моих.

Что за ДЦ Вы используете?

 
pusheax:


Вы правы, я даже не подумал.

ДЦ   RFC

Время сервера МСК-3

 
alph:

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

Вот, с ваял, подгонял под GBPUSD М30.

Хотелось бы и мнение, и комментарий, и совет.

Заранее спасибо.    

Пробежал взглядом. Вот смотрите.

1.

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timeOntrade;
   TimeTradeServer(timeOntrade);
   if(timeOntrade.hour!=TradeHour) return(false);
   timeOntrade.hour= 0;
   timeOntrade.min = 0;
   timeOntrade.sec = 1;
   if(timeOntrade.hour==4 || timeOntrade.hour==15 || timeOntrade.hour==16) return(true);
   return(true);
   }

 Смущают последняя и предпоследняя строчки. Каким бы ни был результат оператора if(), возвращается true. Какой смысл тогда в этом условии? В timeOntrade2() то же самое.

2. При использовании функции OrderSend() совершенно не проверяется ни успешность её срабатывания, ни код возврата result.retcode. Получается пока что так: отправили торговый запрос - да и фиг с ним :)  Сработало ли не сработало - никого не волнует.

 

 alph:

 3. Если в OnInit() не удалось получить хендл хотя бы одного индикатора, то почему бы просто не выгрузить программу?

 
Yedelkin:

Пробежал взглядом. Вот смотрите.

1.

 Смущают последняя и предпоследняя строчки. Каким бы ни был результат оператора if(), возвращается true. Какой смысл тогда в этом условии? В timeOntrade2() то же самое.

2. При использовании функции OrderSend() совершенно не проверяется ни успешность её срабатывания, ни код возврата result.retcode. Получается пока что так: отправили торговый запрос - да и фиг с ним :)  Сработало ли не сработало - никого не волнует.

Поэтому я и прошу мнение и совет. Я не до конца понимаю процессы в mql, но таким путём сделки открываются, причём в нужное время.Когда я попытался с одним таймтрейдом, у меня не получилось.
 
Yedelkin:

 3. Если в OnInit() не удалось получить хендл хотя бы одного индикатора, то почему бы просто не выгрузить программу?

Способ надежный, но не всеггда эффективный. на мой взгляд будет правильным по возможности исправлять все ошибки и недочеты инициализации.
 
Yedelkin:

 3. Если в OnInit() не удалось получить хендл хотя бы одного индикатора, то почему бы просто не выгрузить программу?

Подскажите пож, как?
 
alph:
Поэтому я и прошу мнение и совет. Я не до конца понимаю процессы в mql, но таким путём сделки открываются, причём в нужное время.Когда я попытался с одним таймтрейдом, у меня не получилось.    

Да это и есть "мнение и совет"! :) Я же не говорю, что код - угрёбешный;  я говорю: есть сомнения. Пишите смело, что именно вы хотели закодировать - здесь помогут.

По поводу  функции OrderSend(). Посмотрите её описание. В переменной result содержится ответ сервера. Его и надо анализировать. Каждый анализирует по своему. Спрашивайте, если что не понятно. 

Документация по MQL5: Торговые функции / OrderSend
Документация по MQL5: Торговые функции / OrderSend
  • www.mql5.com
Торговые функции / OrderSend - Документация по MQL5
 

alph:

Yedelkin: 3. Если в OnInit() не удалось получить хендл хотя бы одного индикатора, то почему бы просто не выгрузить программу? 

Подскажите пож, как?        

Посмотрите описание OnInit(). Там сказано, что если функциия int OnInit() возвращает ненулевой код возврата, то это означает неудачную инициализацию, при котором  генерируется событие Deinit с кодом причины деинициализации REASON_INITFAILED Проще говоря, при неудаче в  OnInit() с получением хендла индикатора напишите return(-100), и эксперт завершит работу. (Значение "-100" - условное; достаточно любое ненулевое).

 
Yedelkin:

Да это и есть "мнение и совет"! :) Я же не говорю, что код - угрёбешный;  я говорю: есть сомнения. Пишите смело, что именно вы хотели закодировать - здесь помогут.

По поводу  функции OrderSend(). Посмотрите её описание. В переменной result содержится ответ сервера. Его и надо анализировать. Каждый анализирует по своему. Спрашивайте, если что не понятно. 

Если цена закрывается ниже скользящей средней , а Momentum находится ниже среднего уровня - открываем сделку на продажу. На покупку наоборот.

"код - угрёбешный" -  поэтому и спрашиваю, что лучше переделать. За подсказки спасибо.

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