アイデアの著者: vitaly
MQL5コードの著者: barabashkakvn
このトレーディングシステムはシンプルです。取引ポジションを開き、Delta 1の距離で保護するために保留中のストップ注文を設定します。その後、Delta 2の距離を保ちながらリミットまたはストップの保留中注文からなるグリッドを作成します。各方向の保留中注文の数は「Max Lines」で設定します。保留中の注文(Buy Limit、Sell Limit、Buy Stop、Sell Stop)は、単一のPendingOrder関数を介して設定され、そこに保留中の注文タイプ(order_type)、ボリューム(volume)、ストップロス(sl)、テイクプロフィット(tp)が渡されます。
//+------------------------------------------------------------------+ //| 保留中注文 | //+------------------------------------------------------------------+ void PendingOrder(ENUM_ORDER_TYPE order_type,double volume,double price,double sl,double tp) { sl=m_symbol.NormalizePrice(sl); tp=m_symbol.NormalizePrice(tp); if(m_trade.OrderOpen(m_symbol.Name(),order_type,volume,0.0, m_symbol.NormalizePrice(price),m_symbol.NormalizePrice(sl),m_symbol.NormalizePrice(tp))) { if(m_trade.ResultOrder()==0) { Print("#1 ",EnumToString(order_type)," -> false. Result Retcode: ",m_trade.ResultRetcode(), ", 結果の説明: ",m_trade.ResultRetcodeDescription()); PrintResultTrade(m_trade,m_symbol); } else { Print("#2 ",EnumToString(order_type)," -> true. Result Retcode: ",m_trade.ResultRetcode(), ", 結果の説明: ",m_trade.ResultRetcodeDescription()); PrintResultTrade(m_trade,m_symbol); } } else { Print("#3 ",EnumToString(order_type)," -> false. Result Retcode: ",m_trade.ResultRetcode(), ", 結果の説明: ",m_trade.ResultRetcodeDescription()); PrintResultTrade(m_trade,m_symbol); } //--- }
目標利益であるProfit Closeに達した場合、すべてのポジションを閉じ、すべての保留中注文を取り消します。また、Loss Closeを超える損失が発生した場合にも、すべてのポジションを閉じ、保留中注文を削除できます(Loss Closeを0.0に設定すると、このパラメータは無効になります)。
EAの動作(ポジションのオープンと保護的保留中注文の設定)は、Start hourからEnd hourまでの作業時間の間に行われます(Start hourはEnd hourより小さいか、または超えることもあります)。
主なアイデア
ADXの値を分析し、Work TimeFrameの時間枠で評価します。ADXが40未満の場合、それはフラットと見なされ、リミット保留中注文が配置されます。そうでない場合、ストップ保留中注文が使用されます。
もしDI+がDI-より高ければ買い、そうでなければ売りです。
2つのパラメータの最適化結果が最も良いのは、Current bar ADXが0から2(ステップ1)、Work TimeFrameがM1からH1です。
EURUSD、Current bar ADXが0、Work TimeFrameがH1です。

USDJPY、Current bar ADXが2、Work TimeFrameがM1です。

EURUSDの場合、Current bar ADXが0、Work TimeFrameがH1ですが、Loss Closeパラメータが「0.0」に設定されている場合です。

また、USDJPYの場合、Current bar ADXが2、Work TimeFrameがM1ですが、Loss Closeパラメータが「0.0」に設定されている場合です。

コメント 0