对以下自动化交易EA代码进行优化并将优化后的全文代码写出来:+------------------------------------------------------------------+ MovingAverageCrossoverEAmq5 Created
对于以上的自动化交易EA代码,有几个优化的地方:
-
减少重复计算:在OnTick函数中,获取均线值的代码被重复调用了两次,可以将其提取到函数外部,在OnInit函数中进行计算,然后在OnTick函数中直接使用这些值。
-
减少循环次数:在检查当前是否有持仓的循环中,可以通过使用m_position.SelectByTicket函数来直接选择指定的持仓,而不是遍历所有持仓。
-
减少函数调用:在RefreshRates函数中,可以直接使用m_symbol.Ask()和m_symbol.Bid()来刷新行情数据,而不需要调用m_symbol.RefreshRates()函数。
-
减少不必要的返回语句:在OnTick函数中,可以将买入和卖出的交易操作放在同一个if-else语句中,避免使用多个return语句。
优化后的代码如下:
//+------------------------------------------------------------------+
//| MovingAverageCrossoverEA.mq5 |
//| Created by ChatGPT |
//+------------------------------------------------------------------+
#property copyright "Created by ChatGPT"
#property link "https://www.example.com"
#property version "1.000"
//---
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
CPositionInfo m_position; // trade position object
CTrade m_trade; // trading object
CSymbolInfo m_symbol; // symbol info object
//--- input parameters
input double Lots = 2; // 交易手数
input int FastMA = 10; // 快速均线周期
input int SlowMA = 30; // 慢速均线周期
input ulong m_magic=42828093; // 魔术数字
ulong m_slippage=10; // 滑点
//---
int handle_fastMA; // 快速均线指标句柄
int
原文地址: https://www.cveoy.top/t/topic/ioJ4 著作权归作者所有。请勿转载和采集!