प्रॉप फर्म चैलेंज के लिए ब्रेकआउट स्ट्रेटेजी और हेल्पर फंक्शन

Mike 2024.05.11 12:45 75 0 0
संलग्नक

नमस्ते दोस्तों,

आज मैं आपको "सादा लेकिन प्रभावी ब्रेकआउट स्ट्रेटेजी" का अपडेट देने जा रहा हूँ। इस कोड में मैंने प्रॉप फर्म चैलेंज के लिए कुछ हेल्पर फंक्शन जोड़े हैं।

आमतौर पर, प्रॉप फर्म चैलेंज पास करने के लिए आपको तीन मुख्य मापदंडों को पूरा करना होता है:

  • लक्ष्य लाभ
  • अधिकतम दैनिक हानि का उल्लंघन न करना
  • अधिकतम हानि का उल्लंघन न करना

इस कोड में, मैंने दो फंक्शन शामिल किए हैं जो "लक्ष्य लाभ" और "लगभग अधिकतम दैनिक हानि का उल्लंघन" की जांच करते हैं ताकि सभी पोजीशन को स्वचालित रूप से बंद किया जा सके और सभी लंबित ऑर्डर को हटाया जा सके। "अधिकतम हानि" आपके ट्रेडिंग स्ट्रेटेजी और रिस्क मैनेजमेंट पर निर्भर करता है, इसलिए इसे इस MQL5 स्क्रिप्ट में उल्लेख नहीं किया गया है।

//+------------------------------------------------------------------+//| प्रॉप फर्म हेल्पर फंक्शंस                                       |//+------------------------------------------------------------------+// सभी लंबित ऑर्डर को हटाएं और सभी पोजीशन को बंद करेंvoid ClearAll(string message)
{
   Comment(message);
   for (int i = OrdersTotal() - 1; i >= 0; i--)
   {
      ulong orderTicket = OrderGetTicket(i);
      if (OrderSelect(orderTicket)) 
      {
         trade.OrderDelete(orderTicket);
      }
   }

   for (int i = PositionsTotal() - 1; i >= 0; i--)
   {
      ulong posTicket = PositionGetTicket(i);
      trade.PositionClose(posTicket);
   }
}

// लक्ष्य लाभ प्राप्त किया है या नहीं, इसकी जांच करेंbool isPassed()
{
   returnAccountInfoDouble(ACCOUNT_EQUITY) > PASS_CRITERIA;
}

// अधिकतम दैनिक हानि का उल्लंघन होने वाला है या नहीं, इसकी जांच करेंbool isDailyLimit()
{
   MqlDateTime date_time;
   TimeToStruct(TimeCurrent(), date_time);
   int current_day = date_time.day, current_month = date_time.mon, current_year = date_time.year;
   
   // वर्तमान बैलेंस
   double current_balance = AccountInfoDouble(ACCOUNT_BALANCE);
   
   // आज के बंद हुए ट्रेड का लाभ और हानि
   HistorySelect(0, TimeCurrent());
   int orders = HistoryDealsTotal();
   
   double PL = 0.0;
   for (int i = orders - 1; i >= 0; i--)
   {
      ulong ticket=HistoryDealGetTicket(i);
      if(ticket==0)
      {
         Print("HistoryDealGetTicket विफल, कोई ट्रेड इतिहास नहीं है");
         break;
      }
      double profit = HistoryDealGetDouble(ticket,DEAL_PROFIT);
      if (profit != 0)
      {
         // डील का समय प्राप्त करें
         MqlDateTime deal_time;
         TimeToStruct(HistoryDealGetInteger(ticket, DEAL_TIME), deal_time);
         // डील का समय जांचें
         if (deal_time.day == current_day && deal_time.mon == current_month && deal_time.year == current_year)
         {
            PL += profit;
         }
         else
            break;
      }
   }
   double starting_balance = current_balance - PL;
   double current_equity   = AccountInfoDouble(ACCOUNT_EQUITY);
   return current_equity < starting_balance - DAILY_LOSS_LIMIT;
}

हमें जो पैरामीटर निर्दिष्ट करने की आवश्यकता है वे हैं:

inputstring dd = "-------------प्रॉप फर्म चैलेंज-----------------";
inputbool   isChallenge = false;
inputdouble PASS_CRITERIA = 110100.;
inputdouble DAILY_LOSS_LIMIT = 4500.;

उम्मीद है कि आपको इस स्क्रिप्ट में उपयोगी जानकारी मिलेगी।


सूची
टिप्पणी 0