来自一个 "傻瓜 "的问题 - 页 147

 
alph:

如果价格收于移动平均线之下,且动量低于平均线,则开出卖出交易。在买入交易中,情况正好相反。

事实证明,如果条件没有得到满足,那么就不需要采取行动。如果是这样,那么在函数的最后一行写上return(false),看看它是否能一步步满足你的战术。
 
Yedelkin:
那么,如果不满足条件,你就不需要做任何事情?如果是这样,那么在函数的最后一行写上return(false),看看它是否能一步步满足你的战术。
是在void OnTick()中吗?
 
alph:
是在void OnTick()中吗?

显然,现在是时候了。

但我个人对这种不可返回的结果感到困惑,它迟早会被转换为所需的形式。

让我困惑的是

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

试着把假的放在最后一行,看看这种方法是否与你所选择的战术一致。也就是说,"滚动 "专家顾问的工作要考虑到这种变化。

 
Interesting:
我说的显然是timeOntrade。
在timontrade中,只是在最后的false不会得到预期的结果,但在我的变体中,它真的按时间打开交易,经过测试。我在论坛的某个地方得到的带有时钟的代码版本是这样的,把它拧进去后就能用了。只有我通过timontrade二号设法搞到的那几分钟。我敢肯定,完整的代码至少应该缩短三分之一。
 
alph:
在timeOntrade中,只是在结尾处作假并不能得到理想的结果,但在我的变体中,按小时开仓的交易是真实的,经过测试。
如果timeOntrade.hour=5会怎样?
 
Interesting:
如果timeOntrade.hour=5会怎样?

这笔交易当然不会完成,因为在...

//转为开放的依据

MqlRates rt[1];
如果(CopyRates(Symbol(),MyTframe,0,1,rt)<0) 返回。
if(rt[0].tick_volume>1) return;

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

......只在指定时间发送打开

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных - Документация по MQL5
 
alph:
在timontrade中,最后正是假的,不会产生预期的结果......
那你自己看看你的代码吧。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:

顺便说一下,在这个变体中,测试者的利润结果很小,但在我看来,比例是很好的。

现在我在没有时间参考的更大的时间框架上进行测试,也许结果会更好。