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

 
alph:

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

Получается, что если условие не выполняется, то никаких действий осуществлять не надо? Если так, то в последней строчке функции пропишите return(false) и пошагово посмотрите, будет ли это удовлетворять Вашей тактике.
 
Yedelkin:
Получается, что если условие не выполняется, то никаких действий осуществлять не надо? Если так, то в последней строчке функции пропишите return(false) и пошагово посмотрите, будет ли это удовлетворять Вашей тактике.
Это в разделе void OnTick() ?
[Удален]  
alph:
Это в разделе void OnTick() ?

 Речь шла об timeOntrade по всей видимости.

Но, меян лично смущает не возвращаемый результат, его рано или поздно можно будет превести в желаемый вид.

Меня смущает вот это

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timeOntrade;
 
alph:
Это в разделе void OnTick() ?

Вот здесь:

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(false);
   }

Попробуйте в последней строчке проставить false  и посмотреть, насколько такой подход будет соответствовать выбранной Вами тактике. Т.е. "прокрутить" работу эксперта с учётом этого изменения.

 
Interesting:
 Речь шла об timeOntrade по всей видимости. 
В таймонтрейде как раз false в конце не даст нужный результат, а в моём варианте открывает сделки по часам реально,проверено. Сам вариант кода с часами в таком виде я почерпнул где-то здесь на форуме, после прикрутки заработал. Только минуты мне удалось прикрутить через таймонтрйд два. Я уверен, что полностью код должен быть короче на треть минимум.
[Удален]  
alph:
В таймонтрейде как раз false в конце не даст нужный результат, а в моём варианте открывает сделки по часам реально,проверено.
 Что произойдет если timeOntrade.hour скажем = 5?
 
Interesting:
 Что произойдет если timeOntrade.hour скажем = 5?

Сделку точно не совершит, потому-что в...

//Основание для перехода к Опен   

   MqlRates rt[1];
   if(CopyRates(Symbol(),MyTframe,0,1,rt)<0) return;
   if(rt[0].tick_volume>1) return;

   if(!PositionSelect(_Symbol)&& (timeOntrade(4) || ((timeOntrade(15) || timeOntrade(16))&& timeOntrade2(0)))) Open();//

 

...отправляет на открытие только в указанное время 

 
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных - Документация по MQL5
 
alph:
В таймонтрейде как раз false в конце не даст нужный результат...  
Ну посмотрите свой код сами. В нынешнем виде условие if(timeOntrade.hour==4 || timeOntrade.hour==15 || timeOntrade.hour==16) вообще бесполезно. Потому что какой бы результат оно не возватило, Ваша функция bool timeOntrade() всегда вернёт true.
[Удален]  

alph, Yedelkin  вот про что толкует.

Эти варианты функции по нашему разумению идентичны

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);
   }

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timeOntrade;
   TimeTradeServer(timeOntrade);
   if(timeOntrade.hour!=TradeHour) return(false);
   timeOntrade.hour= 0;
   timeOntrade.min = 0;
   timeOntrade.sec = 1;
   return(true);
   }
 
Interesting:
  

Кстати в данном варианте результат тестера по прибыли маленький, но соотношение как мне кажется,хорошее.

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