ホーム システムトレード 投稿

MT45 EA: 効率的なトレーディング戦略を実現するシステムトレード

添付ファイル
19102.zip (3.95 KB, ダウンロード 0回)

トレーディング戦略

MT45 EAは、負けた取引の後に次の取引をより大きなロットで開始します。

最初の取引は常に買いオペレーションで、その後はポジションが交互に買いと売りに切り替わります。

このEAは、ローソク足のオープニングでポジションを開きます。

ストップロスが発生した後、EAはロットをKL係数で増加させ、最大値MLに達するまで続けます。その後、ロットは初期値LTにリセットされます。

対象通貨はEURUSD、時間足はH1です。このEAは2014年1月11日から2017年9月9日までの期間で最適化されています。


エキスパートアドバイザーの設定

input int    Stop = 600;  // ストップロス
input int    Take = 700;  // テイクプロフィット
input int    Slip = 100;  // スリッページ
input int    MN   = 123;  // マジックナンバー
input double LT   = 0.01; // ロットサイズ
input double KL   = 2;    // ロット増加比率
input double ML   = 10;   // 最大ロット


特徴

このEAはプリプロセッサディレクティブを使用してクロスプラットフォームモードを実装しています。以下はマーチンゲール機能の例です:

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=LT;
//---  MQL4
#ifdef __MQL4__
   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderProfit()>0) lot=LT;
      if(OrderProfit()<0) lot=OrderLots()*KL;
     }
#endif

//---  MQL5
#ifdef __MQL5__
   if(HistorySelect(0,TimeCurrent()))
     {
      double profit=HistoryDealGetDouble(HistoryDealGetTicket(HistoryDealsTotal()-1),DEAL_PROFIT);
      double LastLot=HHistoryDealGetDouble(HistoryDealGetTicket(HistoryDealsTotal()-1),DEAL_VOLUME);
      if(profit>0) lot=LT;
      if(profit<0) lot=LastLot*KL;
     }
#endif

   if(lot>ML)lot=LT;
   return(lot);
  }


バックテスト

MetaTrader 4端末:

MetaTrader 5端末:


アドバイス

  • このEAはあくまで自分の戦略の基盤として利用することをお勧めします。

関連記事

コメント (0)