सिस्टम ट्रेडिंग 게시글

लाभ लक्ष्य या नुकसान कटौती द्वारा आदेश बंद करें - MetaTrader 4 के लिए सरल टूल

첨부파일
34194.zip (995 bytes, 다운로드 0회)
हम इस ईए को ट्रेडिंग टूल के रूप में उपयोग करते हैं।

इसमें 3 इनपुट की आवश्यकता होती है, जो निम्नलिखित हैं:

  • लाभ लक्ष्य
  • नुकसान कटौती
  • मैजिक नंबर
extern    double         inTargetProfitMoney     = 10;       //लाभ लक्ष्य ($)
extern    double         inCutLossMoney          = 0.0      //नुकसान कटौती ($)
extern    int            inMagicNumber           = 0        //मैजिक नंबर


जब यह ईए कार्यान्वित होता है, तो यह सबसे पहले 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 कोड शिक्षा के लिए, कृपया हमारे टेलीग्राम समूह में जुड़ें t.me/codeMQL




연관 포스트

댓글 (0)