होम सिस्टम ट्रेडिंग पोस्ट

सिंपल DeMarker इंडिकेटर के साथ EA - MetaTrader 4 के लिए आसान ट्रेडिंग

संलग्नक
32418.zip (1.46 KB, डाउनलोड 2 बार)

नमस्ते दोस्तों! आज हम बात करेंगे एक बेहद आसान EA (एक्सपर्ट एडवाइजर) के बारे में, जो मैंने अपने ट्रेडिंग के लिए बनाया है। यह EA सबसे सरल है, जो मैंने कभी इस्तेमाल किया है। कृपया इसे पढ़कर अपनी राय जरूर बताएं...

यह EA केवल एक ही ट्रेडिंग पेयर पर काम करता है। इसमें टाइमफ्रेम, लॉट, स्टॉप लॉस और टेक प्रॉफिट के सेटिंग्स मेनू प्रॉपर्टीज में इनपुट किए गए हैं।


extern ENUM_TIMEFRAMES TF  = PERIOD_CURRENT;// टाइम फ्रेम चुनें
extern int period          = 8;// DeMarker का पीरियड
extern double lt           = 0.01;// लॉट्स
extern int sl              = 100;// स्टॉप लॉस
extern int tp              = 100;// टेक प्रॉफिट
extern double OB           = 0.7;// ओवर सोल्ड
extern double OS           = 0.3;// ओवर बॉट
extern bool OPENBAR        = false;// नई बार के ओपन प्राइस पर ट्रेडिंग

गुप्त बात यह है कि मैंने इसे तीन भागों में बाँटा है:
1. डेटा | टाइमफ्रेम
2. ऑर्डर
3. पेयर

//+------------------------------------------------------------------+
//-- टाइम फ्रेम | इंडिकेटर
double dmrk[5];
int signal  =-1;//-- 0. खरीदना 1. बेचना
int hold = 0;

//-- ऑर्डर
int ticket  =0;
double lot  =0.0;
int typ     =-1;

//-- पेयर
datetime t1=0;
bool newbar=false;
bool entry =false;

//+------------------------------------------------------------------+

OnInit() फंक्शन में, मैंने एक इंडिकेटर DeMarker एरे वैरिएबल को इनिशियलाइज करना है और स्पेसिफिक प्रकार के ब्रोकर की आवश्यकताओं के लिए ट्रेडिंग का न्यूनतम लॉट साइज भी चेक करना है।

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnInit()
  {
   ArrayInitialize(dmrk,0.0);
  //---
      const double test_lot   = SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
      if(lt<test_lot)   lt    = test_lot;
  }

OnTick() फंक्शन में, यह इंडिकेटर की गणना करने और खरीदने और बेचने के सिग्नल का निर्धारण करने का काम करता है।

//---------------------------------------------------------------------------
   signal = -1;
//---------------------------------------------------------------------------

//---कैलकुलेट
   for(int i=0; i<ArraySize(dmrk); i++)
     {
      dmrk[i]  =  iDeMarker(Symbol(),TF,period,i);
     }
//---

   if(dmrk[1] > OB)
     {
      hold = 1;//सेट
     }
   else
      if(dmrk[1] < OS)
        {
         hold = -1;//सेट
        }
      else
        {
         hold = 0;//रीसेट
        }

   if(hold ==  1)
     {
      if(dmrk[0]<OB && dmrk[1]>OB)
        {
         signal = OP_SELL;
        }
     }
   if(hold == -1)
     {
      if(dmrk[0]>OS && dmrk[1]<OS)
        {
        signal = OP_BUY;
        }
     }

खरीदने और बेचने के सिग्नल खोलने के लिए...

//---------------------------------------------------------------------------
   if(signal != -1)
      if(newbar==true)
         if(entry==false)// दरवाजा खुला
           {
            //---
            entry =true;//सेट
            //---

            if(signal == OP_BUY)
              {
               ticket = OrderSend(Symbol(),OP_BUY,lt,Ask,(int)((Ask-Bid)/Point,
                                  sl>0?Bid-sl*Point:0.0,
                                  tp>0?Bid+tp*Point:0.0,
                                  EAName+":signal= "+IntegerToString(signal)+":hold= "+IntegerToString(hold),
                                  EANumber,
                                  0,
                                  clrBlue);
               signal=-1;
               //hold =0;
              }//रीसेट
            else
               if(signal == OP_SELL)
                 {
                  ticket = OrderSend(Symbol(),OP_SELL,lt,Bid,(int)((Ask-Bid)/Point,
                                     sl>0?Ask+sl*Point:0.0,
                                     tp>0?Ask-tp*Point:0.0,
                                     EAName+":signal= "+IntegerToString(signal)+":hold= "+IntegerToString(hold),
                                  EANumber,
                                  0,
                                  clrRed);
                  signal=-1;
                  //hold =0;
                 }//रीसेट सिग्नल

           }

और क्लोजिंग के लिए...

   if(entry == true) // क्लोजिंग
     {

      if(OrderSelect(ticket,SELECT_BY_TICKET))
        {
         if(OrderCloseTime() == 0)//-- ऑर्डर सक्रिय ट्रेड
           {
            /*  todo क्लोज करने की शर्त  */
            //entry = false;
           }
         //else
            if(OrderCloseTime() != 0)//--  1. मैनुअल 2. sl/tp 3. ea द्वारा क्लोज
              {
               entry = false;// रीसेट एंट्री
              }
        }
     }

  



संबंधित पोस्ट

टिप्पणी (0)