विचार के लेखक — जॉन स्मिथ, एमक्यूएल5 कोड के लेखक — बाराबाश्कक्वन.
यह एक्सपर्ट एडवाइजर USDJPY पर H1 टाइमफ्रेम पर ट्रेड करने के लिए कॉन्फ़िगर किया गया है।
इस EA में दो मूविंग एवरेज, एक MACD और एक CCI का उपयोग किया जाता है। OnTradeTransaction का उपयोग स्थिति खोलने के समय को प्राप्त करने के लिए किया जाता है।
सभी संकेतक मान 1 इंडेक्स वाले बार से लिए जाते हैं।
//--- संकेतक सेटअप CAMELHIGHP1=iMAGet(handle_iMA_PRICE_HIGH,1); CAMELLOWP1=iMAGet(handle_iMA_PRICE_LOW,1); // MACDSP1=iMACDGet(SIGNAL_LINE,1); MACDSP2=iMACDGet(SIGNAL_LINE,2); // MACDHP1=iMACDGet(MAIN_LINE,1); MACDHP2=iMACDGet(MAIN_LINE,2); // CCIP1=iCCIGet(1);
सही नियंत्रण किया जाता है: यह देखने के लिए कि क्या वर्तमान बार पर पहले से ही एक स्थिति खोली गई है, ताकि सभी स्थितियों की जांच करने की आवश्यकता न हो (क्योंकि एक ही ट्रेडिंग अकाउंट पर अन्य एक्सपर्ट एडवाइजर्स भी चल सकते हैं)।
स्थिति खोलने का समय OnTradeTransaction में नियंत्रित किया जाता है। अगर स्थिति बंद होने का रिकॉर्ड है, तो खोलने का समय रीसेट कर दिया जाएगा:
//+------------------------------------------------------------------+ //| TradeTransaction कार्य | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { //--- लेनदेन प्रकार को एनमरेशन मान के रूप में प्राप्त करें ENUM_TRADE_TRANSACTION_TYPE type=trans.type; //--- यदि लेनदेन लेनदेन को इतिहास में जोड़ने का परिणाम है if(type==TRADE_TRANSACTION_DEAL_ADD) { long deal_entry =0; long deal_time =0; string deal_symbol =""; long deal_magic =0; if(HistoryDealSelect(trans.deal)) { deal_entry=HistoryDealGetInteger(trans.deal,DEAL_ENTRY); deal_time=HistoryDealGetInteger(trans.deal,DEAL_TIME); deal_symbol=HistoryDealGetString(trans.deal,DEAL_SYMBOL); deal_magic=HistoryDealGetInteger(trans.deal,DEAL_MAGIC); } else return; if(deal_symbol==m_symbol.Name() && deal_magic==m_magic) { if(deal_entry==DEAL_ENTRY_OUT) { m_last_close_time=(datetime)deal_time; } else if(deal_entry!=DEAL_ENTRY_OUT) { m_last_close_time=0; } } } }
टिप्पणी 0