システムトレード 게시글

MT4 EA 自動売買 – 目標達成または損失カットのためのシステムトレーディング

첨부파일
34194.zip (995 bytes, 다운로드 0회)
このEAは、効率的なトレーディングツールとして活用されます。

設定項目は以下の3つです:

  1. 利益目標
  2. 損失カット
  3. マジックナンバー
extern    double         inTargetProfitMoney     = 10;       //利益目標 ($)
extern    double         inCutLossMoney          = 0.0      //損失カット ($)
extern    int            inMagicNumber           = 0        //マジックナンバー


このEAが実行されると、最初にOnInit()関数が呼び出され、入力と変数の初期化が行われます。

int OnInit()
  {
//---
   if(inTargetProfitMoney <= 0)
     {
      Alert("無効な入力です");
      return(INIT_PARAMETERS_INCORRECT);
     }

   inCutLossMoney = MathAbs(inCutLossMoney) * -1;

//---
   return(INIT_SUCCEEDED);
  }


価格動向があるたびに、OnTick()関数が呼び出されます。

void OnTick()
  {
//---

   double   tFloating = 0.0;
   int tOrder  = OrdersTotal();
   for(int i=tOrder-1; i>=0; i--)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
         if(OrderMagicNumber() == inMagicNumber)
           {
            tFloating   += OrderProfit()+OrderCommission() + OrderSwap();
           }
        }
     }

   if(tFloating >= inTargetProfitMoney || (tFloating <= inCutLossMoney && inCutLossMoney < 0))
     {
      fCloseAllOrders();
     }

  }

OnTick関数内では、総利益または損失を計算し、目標または最大損失限度に達したすべての注文を閉じることができます。

void fCloseAllOrders()
  {
   double   priceClose = 0.0;
   int tOrders = OrdersTotal();
   for(int i=tOrders-1; i>=0; i--)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
         if(OrderMagicNumber() == inMagicNumber && (OrderType() == OP_BUY || OrderType() == OP_SELL))
           {
            priceClose  = (OrderType()==OP_BUY)?MarketInfo(OrderSymbol(), MODE_BID):MarketInfo(OrderSymbol(), MODE_ASK);
            if(!OrderClose(OrderTicket(), OrderLots(), priceClose, slippage, clrGold))
              {
               Print("警告: 閉じるのに失敗しました");
              }
           }
        }
     }
  }


詳細な情報やMQL4コードの教育共有については、ぜひ私たちのTelegramに参加してください。 t.me/codeMQL




연관 포스트

댓글 (0)