初始化与结束逻辑- OnInit()函数:在EA启动时执行,主要进行了如下操作:
- 设置了订单识别码、内部识别码等相关变量。
- 初始化一些数组和变量,如时间戳数组_mPubTsIns等,用于后续逻辑中存储订单相关的时间信息。
- OnDeinit(const int reason)函数:在EA停止时执行,根据停止的原因(如图表关闭、程序退出等)执行不同的清理工作:
- 如果是因为图表移除或程序关闭,可能删除之前创建的对象和全局变量。
- 如果是由于参数修改,仅删除特定的全局变量,保留一些需要持久化的变量。
实时数据处理逻辑(OnTick())- 时间周期与市场数据获取:首先检查是否超过使用期限,接着根据时间周期变量获取当前图表周期,并确定交易货币对(Symbol())。
- 订单处理逻辑:
- 订单状态检查:通过一系列的myFun17_x函数(如myFun17_1至myFun17_6)来判断是否满足特定的交易条件,如是否达到RSI指标的上、下限,是否有足够的交易次数等。
- 订单执行与管理:依据判断结果,可能会调用myFun44_1、myFun96_1、myFun32_x等函数,进行订单的开仓、平仓、止损、移动止损和平保等操作。
- 错误处理与记录:在尝试修改订单止损或平仓时,若遇到错误(如错误代码132),会通过Print函数输出错误信息,并可能记录相关操作。
辅助功能- 全局变量与对象管理:使用GlobalVariableSet、GlobalVariableGet和GlobalVariableDel来管理全局变量,以及myObjectDeleteByPreCap来删除特定前缀的对象,这些操作用于跨函数和跨周期的数据共享与状态记录。
- 时间序列和状态跟踪:定义了多个数组用于存储订单的插入和排除时间戳,以及历史订单的时间戳,这些数据结构有助于跟踪和管理订单生命周期。
- 账户与订单筛选:通过myIsOpenByThisEA2和myOrderOks等函数,检查订单是否由当前EA创建,以及是否满足执行条件,确保操作的精准性和安全性。
- 参数解析与处理:通过myParseStrToDoubleB和myParseStrToDouble函数解析字符串形式的参数列表,如__亏损挂单间隔点数列表,将之转化为数值数组,用于动态调整交易策略。
特殊逻辑处理- 错误代码处理:在尝试操作订单时,会检查并处理错误代码,如通过GetLastError获取错误信息,并在必要时通过Sleep函数暂停执行,避免频繁操作导致的错误。
|