MetaTrader5
智能趋势跟随者 - MetaTrader 5 的交易专家
在交易的世界里,使用合适的工具来捕捉市场趋势至关重要。今天,我想和大家聊聊一个很不错的工具——智能趋势跟随者(Smart Trend Follower),它是专门为MetaTrader 5平台设计的EA(专家顾问)。
1. 枚举类型 (enumJnsSignal, enumOrderType)
enumJnsSignal:这个枚举定义了EA中使用的信号类型。主要有两种信号选项:
eTypeCrossMA:使用两个移动平均线的交叉信号。
eTypeTrend:通过移动平均线和随机指标(Stochastic)来跟随趋势。
enumOrderType:这个枚举定义了订单的类型:
eBuy:买入订单。
eSell:卖出订单。
eNone:没有执行任何订单。
2. 输入参数
inMagicNumber:一个唯一的魔法数字,用于区分这个EA的订单。
inLotSize:每个订单的初始手数。
inMultiply:在手数策略中使用的乘数因子。
inJarakLayer:在网格/层策略中交易位置之间的点差距离。
inMAPeriodFast & inMAPeriodSlow:快慢移动平均线的周期。
inSTOKPeriod, inSTODPeriod, inSTOSlowing:随机指标的参数设置。
inTakeProfit & inStopLoss:止盈和止损的设置。
3. 结构体 dataTrades
这个结构体用于存储与打开的交易头寸相关的数据,包括当前头寸的总数(ttlPos)、头寸的平均价格(hargaTA, hargaTB)以及总手数(ttlLot)。
4. OnInit() 函数
这个函数负责EA的初始化,包括验证输入参数(例如,确保快的移动平均线周期小于慢的移动平均线周期)并为移动平均线和随机指标创建句柄。
5. OnTick() 函数
这是每次价格变动时执行的主要函数。它调用GetSignal()函数来检查是否有新的信号,如果发现信号,则使用manageTrading()来执行交易。同时,它也会调用setTPSL()以确保止盈和止损始终是最新的。
6. isNewCandle() 函数
这个函数检测是否形成了新蜡烛图。这一点非常重要,因为EA只有在新的蜡烛图形成时才会检查信号。
7. GetSignal() 函数
这个函数根据所选策略判断是否存在有效的交易信号:
对于 eTypeCrossMA,信号由快慢移动平均线的交叉来确定。
对于 eTypeTrend,信号则需要结合移动平均线和随机指标的确认。
8. manageTrading() 函数
这个函数负责管理交易的执行。如果检测到有效信号,EA会根据getLotSize()函数确定的手数打开一个新头寸。同时,还会根据价格距离(inJarakLayer)应用网格/层策略来打开额外的头寸。
9. updateDataTrades() 函数
这个函数更新与正在进行的交易头寸相关的数据,例如计算当前打开头寸的平均价格和总手数。
10. openTrade() 函数
这个函数根据生成的信号和计算出的手数打开一个新的交易头寸,使用OrderSend()来执行订单。
11. setTPSL() 函数
这个函数为每个打开的头寸设置或更新止盈和止损。
12. modifTPSL() 函数
这个函数在已有头寸的止盈和止损值与先前设置的值不同的情况下进行修改。
13. validateLot() 函数
这个函数确保所用手数在允许的最小和最大范围内,并符合最小手数步长(gLotStep)。
14. getLotSize() 函数
这个函数根据初始手数和已打开头寸的数量,结合乘数因子(inMultiply),计算应使用的手数。
这段代码旨在利用移动平均线和随机指标的技术信号,自动捕捉市场趋势并管理交易头寸。希望这些信息能帮助大家更好地理解智能趋势跟随者的工作原理,让我们在交易中更进一步!
2025.02.04