//--- 为交易信号逻辑检索最近的条形图价格 double low1 = iLow(_Symbol, _Period, 1); double low2 = iLow(_Symbol, _Period, 2); double high1 = iHigh(_Symbol, _Period, 1); double high2 = iHigh(_Symbol, _Period, 2);
为什么不使用这些变量?
testtestmio71 #:
在代码中......你在哪里使用了 low1 变量?
在代码中......你在哪里使用了 low1 变量?
变量有什么问题?有错误吗?它们是函数,可以用在代码的任何地方。
如果要我进一步解释,我想说的是获取前一栏和前一栏 + 1 的低价和高价。
void ExecuteInitialTrade(double ask, double bid){ //---买入信号:前一个柱状图的低点高于 MA 值,且前一个柱状图的低点低于 MA 值 if (iLow(_Symbol, _Period, 1) > maData[1] && iLow(_Symbol, _Period, 2) < maData[1]){ gridSize = ask - gridSize_Spacing; //--- 将网格触发器设置在当前问价下方 TakeProfit = ask + takeProfitPts; //--- 设置买入的 TP if(obj_Trade.Buy(LotSize, _Symbol, ask, 0, TakeProfit,"Initial Buy")) Print("Initial BUY order executed at ", ask, " with LotSize: ", LotSize); else Print("Initial BUY order failed at ", ask); isTradeAllowed = false; } //----卖出信号:前一个柱状图的高点低于均线,且前一个柱状图的高点高于均线 else if(iHigh(_Symbol, _Period, 1) < maData[1] && iHigh(_Symbol, _Period, 2) > maData[1]){ gridSize = bid + gridSize_Spacing; //--- 设置高于当前出价的网格触发器 TakeProfit = bid - takeProfitPts; //--- 设置卖出的 TP if(obj_Trade.Sell(LotSize, _Symbol, bid, 0, TakeProfit,"Initial Sell")) Print("Initial SELL order executed at ", bid, " with LotSize: ", LotSize); else Print("Initial SELL order failed at ", bid); isTradeAllowed = false; } }
具体在这里。如果不需要,你可以改用这些函数,或者删除它们。这样说清楚了吗?谢谢。
这四行可以注释
// double low1 = iLow(_Symbol, _Period, 1); // double low2 = iLow(_Symbol, _Period, 2); // double high1 = iHigh(_Symbol, _Period, 1); // double high2 = iHigh(_Symbol, _Period, 2);
is ok.....best EA。
对于新手来说,这 4 行很容易混淆
新文章 MQL5中的自动化交易策略(第七部分):构建具备仓位动态调整功能的网格交易EA已发布:
网格交易是一种系统性的方法,它在预定的价格间隔下放置买入和卖出订单,使交易者能够利用市场波动,而无需精确的趋势预测。该策略通过在定义的价格范围内持续开仓和平仓来从市场波动中获益。为了增强其性能,我们将集成动态仓位缩放,它会根据预定条件(如账户余额、波动率或先前交易的结果)来调整仓位大小。我们的网格交易系统将由以下关键部分组成:
简而言之,为了便于理解,这里是整个策略方案的可视化展示。
通过将结构化的网格系统与自适应的仓位调整相结合,我们将创建一个能在有效管理风险的同时最大化回报的 EA。接下来,我们将在 MQL5 中实现这些概念。
作者:Allan Munene Mutiiria