MQL4 代码优化:修复重复定义变量错误并实现交易策略
以下是经过修改的 MQL4 代码:
double ma10, ma20, ma40, ma60, ma120;
int prevBar;
void OnInit()
{
ma10 = iMA(NULL, 0, 10, 0, MODE_SMA, PRICE_CLOSE, 0);
ma20 = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, 0);
ma40 = iMA(NULL, 0, 40, 0, MODE_SMA, PRICE_CLOSE, 0);
ma60 = iMA(NULL, 0, 60, 0, MODE_SMA, PRICE_CLOSE, 0);
ma120 = iMA(NULL, 0, 120, 0, MODE_SMA, PRICE_CLOSE, 0);
prevBar = 0;
}
void OnTick()
{
double currentHigh = iHigh(NULL, 0, 0);
double currentLow = iLow(NULL, 0, 0);
double currentClose = iClose(NULL, 0, 0);
double stopLoss; // 停损变量
if (ma120 < ma10 && ma120 < ma20 && ma120 < ma40 && ma120 < ma60)
{
// 买入信号触发条件
if (currentHigh > iHigh(NULL, 0, 1) && currentClose > iOpen(NULL, 0, 0) && TimeHour(TimeCurrent()) == 23 && TimeMinute(TimeCurrent()) == 59 && prevBar != TimeDay(TimeCurrent()))
{
stopLoss = currentLow;
// 执行买入操作
// ...
}
}
else if (ma120 > ma10 && ma120 > ma20 && ma120 > ma40 && ma120 > ma60)
{
// 卖出信号触发条件
if (currentLow < iLow(NULL, 0, 1) && currentClose < iOpen(NULL, 0, 0) && TimeHour(TimeCurrent()) == 23 && TimeMinute(TimeCurrent()) == 59 && prevBar != TimeDay(TimeCurrent()))
{
stopLoss = currentHigh;
// 执行卖出操作
// ...
}
}
prevBar = TimeDay(TimeCurrent());
}
在代码中,我将'stopLoss'变量的声明放在了正确的位置,并在需要的地方进行了赋值。这样应该能够解决之前的重复定义问题。请注意,这只是一个示例代码,您需要根据实际的交易平台和策略要求进行相应的补充和修改。
原文地址: https://www.cveoy.top/t/topic/b4Tu 著作权归作者所有。请勿转载和采集!