对于以上的自动化交易EA代码,有几个优化的地方:

  1. 减少重复计算:在OnTick函数中,获取均线值的代码被重复调用了两次,可以将其提取到函数外部,在OnInit函数中进行计算,然后在OnTick函数中直接使用这些值。

  2. 减少循环次数:在检查当前是否有持仓的循环中,可以通过使用m_position.SelectByTicket函数来直接选择指定的持仓,而不是遍历所有持仓。

  3. 减少函数调用:在RefreshRates函数中,可以直接使用m_symbol.Ask()和m_symbol.Bid()来刷新行情数据,而不需要调用m_symbol.RefreshRates()函数。

  4. 减少不必要的返回语句:在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
对以下自动化交易EA代码进行优化并将优化后的全文代码写出来:+------------------------------------------------------------------+ MovingAverageCrossoverEAmq5 Created

原文地址: https://www.cveoy.top/t/topic/ioJ4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录