voidOnTick()
{
// Получим значение индикатора
dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.// Если нет открытых ордеров, то входим в условиеif(CountOrders()==0)
{
// Если появился сигнал на покупку, то откроем ордер на покупкуif(bSignalBuy() == true)
vOrderOpenBuy();
// Если появился сигнал на продажу, то откроем ордер на продажуif(bSignalSell() == true)
vOrderOpenSell();
}
}
信号,使其成为这样的。
bool bSignalBuy()
{
if (openPrice > Open[1] && openPrice < Close[1]) //Open[1] и Close[1]- цены открытия и закрытия каждого бара текущего графика.return(true);
return(false);
}
//+-----------------------------------------------------------------------------------------------+//| Функция поиска сигнала на продажу |//+-----------------------------------------------------------------------------------------------+bool bSignalSell()
{
if(openPrice< Open[1] && openPrice > Close[1])
return(true);
return(false);
}
伙计们,不管你想怎么做,如果你不记得最后一次检查时的循环索引值,那么你就有一个循环在所有可用的历史中运行。而且越是这样,循环就越长。
不确定
我还有2个具有类似设计的检查盈利能力的EA,它们都在15-20分钟内通过了测试器中的整个历史记录。
我不确定。
我还有2个具有相同设计的批量检查的EA,它们都在15-20分钟内通过了测试器的整个故事。
嗯,这取决于你。我不打算争论。
改变顺序 覆盖
类似地
是的,任何一对。
我对澳元/美元使用M15。
我在使用你的指标时遇到了同样的问题(附后)。
我通过排除法发现,这个东西减缓了进程。
缓存结果(在变量中)。而且,如果订单列表发生了变化,缓存也应该被更新。如果没有什么变化,那么就直接返回缓存中的值。
伙计们,不管你想怎么做,如果你不记得最后一次检查时的循环索引值,那么你就有一个循环在所有可用的历史中运行。而且数量越多,循环的时间就越长。
你应该时刻想到会有停电等情况。
历史上的一个EA应该在任何时候都能被配置和运行。
总是要考虑断电等问题......
故事中的顾问应该在任何时候都能配置好并工作。
有一个VPS来保持灯火通明。
我大致明白为什么会有问题。
现在我想做以下工作。
清理无效的OnTick
信号,使其成为这样的。
其中openPrice试图以这种方式表达, 但它给出了一个错误。
由于类型转换而可能造成的数据损失
我是否正确使用了无效函数?
通过画图和删除,在按下一个按钮后使一条线跟随鼠标光标。
也许有另一种方法?处理器冷却器开始有噪音了 :)
总是要考虑断电等问题......
一个来自历史的顾问应该在任何时候都能配置好并工作。