创意者: Vladimir Gribachev。
MQL5 代码作者: Vladimir Karputov。
这款系统交易不依赖任何自定义指标,开仓方式为伪随机。该系统可以用两种语言显示当前统计信息:

系统会通过移动止损来调整已开仓位的止损价。在亏损的情况下,使用马丁格尔(Martingale)策略来增加手数。监控亏损的方法是使用 OnTradeTransaction 函数来捕捉交易标识 DEAL_REASON_SL,这是止损被触发的标志:
//+------------------------------------------------------------------+ //| TradeTransaction 函数 | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { //--- 获取交易类型的枚举值 ENUM_TRADE_TRANSACTION_TYPE type=trans.type; //--- 如果交易是历史中添加的交易结果 if(type==TRADE_TRANSACTION_DEAL_ADD) { long deal_ticket =0; long deal_order =0; long deal_time =0; long deal_time_msc =0; long deal_type =-1; long deal_entry =-1; long deal_magic =0; long deal_reason =-1; long deal_position_id =0; double deal_volume =0.0; double deal_price =0.0; double deal_commission =0.0; double deal_swap =0.0; double deal_profit =0.0; string deal_symbol =""; string deal_comment =""; string deal_external_id =""; if(HistoryDealSelect(trans.deal)) { deal_ticket =HistoryDealGetInteger(trans.deal,DEAL_TICKET); deal_order =HistoryDealGetInteger(trans.deal,DEAL_ORDER); deal_time =HistoryDealGetInteger(trans.deal,DEAL_TIME); deal_time_msc =HistoryDealGetInteger(trans.deal,DEAL_TIME_MSC); deal_type =HistoryDealGetInteger(trans.deal,DEAL_TYPE); deal_entry =HistoryDealGetInteger(trans.deal,DEAL_ENTRY); deal_magic =HistoryDealGetInteger(trans.deal,DEAL_MAGIC); deal_reason =HistoryDealGetInteger(trans.deal,DEAL_REASON); deal_position_id =HistoryDealGetInteger(trans.deal,DEAL_POSITION_ID); deal_volume =HistoryDealGetDouble(trans.deal,DEAL_VOLUME); deal_price =HistoryDealGetDouble(trans.deal,DEAL_PRICE); deal_commission =HistoryDealGetDouble(trans.deal,DEAL_COMMISSION); deal_swap =HistoryDealGetDouble(trans.deal,DEAL_SWAP); deal_profit =HistoryDealGetDouble(trans.deal,DEAL_PROFIT); deal_symbol =HistoryDealGetString(trans.deal,DEAL_SYMBOL); deal_comment =HistoryDealGetString(trans.deal,DEAL_COMMENT); deal_external_id =HistoryDealGetString(trans.deal,DEAL_EXTERNAL_ID); } else return; if(deal_symbol==m_symbol.Name() && deal_magic==m_magic) if(deal_entry==DEAL_ENTRY_OUT) { PrevBars=0; if(deal_reason==DEAL_REASON_SL&& deal_commission+deal_swap+deal_profit<0.0) last_lots_sl=deal_volume; else last_lots_sl=0.0; } } }
输入参数
- 止损 - 止损值;
- 止盈 - 止盈值;
- 移动止损 - 移动止损;
- 移动步长 - 移动步长;
- 手数 - 手数手动设置(如果 手数 大于零,则 风险 必须等于零);
- 风险 - 手数自动计算(如果 风险 大于零,则 手数 必须等于零);
- 马丁格尔 - 在前一个仓位因止损而关闭且亏损时,手数增加比例;
- 最大手数 - 最大持仓大小;如果超过此大小,则系统交易会异常终止;
- 魔法数字 - 系统交易的唯一标识符。
然后测试被中断(系统交易被强制从图表中卸载),因为参考手数超过了 最大手数 参数:
