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

externENUM_TIMEFRAMES TF = PERIOD_CURRENT;// टाइम फ्रेम चुनेंexternint period = 8;// DeMarker का पीरियडexterndouble lt = 0.01;// लॉट्सexternint sl = 100;// स्टॉप लॉसexternint tp = 100;// टेक प्रॉफिटexterndouble OB = 0.7;// ओवर सोल्डexterndouble OS = 0.3;// ओवर बॉटexternbool 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 एरे वैरिएबल को इनिशियलाइज करना है और स्पेसिफिक प्रकार के ब्रोकर की आवश्यकताओं के लिए ट्रेडिंग का न्यूनतम लॉट साइज भी चेक करना है।
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnInit() { ArrayInitialize(dmrk,0.0); //--- constdouble 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