जब हम एक बंद की गई स्थिति के विपरीत स्थिति खोलते हैं, तो यह उसी वॉल्यूम के साथ होता है। यह किसी भी सिम्बल और किसी भी मैजिक नंबर के लिए काम करता है।
उदाहरण के लिए, मान लीजिए कि हमारे पास एक खुली AUDUSD BUY 0.01 की स्थिति है। जब यह स्थिति बंद होती है (जैसे कि हम इसे मैन्युअली बंद करते हैं), तो विपरीत ट्रेड एक्सपर्ट एडवाइजर तुरंत एक नई AUDUSD स्थिति खोलेगा, जो अब एक SELL स्थिति होगी।
संपूर्ण कोड OnTradeTransaction फ़ंक्शन में शामिल है:
//+------------------------------------------------------------------+ //| ट्रेड लेनदेन फ़ंक्शन | //+------------------------------------------------------------------+ 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_type =-1; long deal_entry =-1; double deal_volume =0.0; string deal_symbol =""; if(HistoryDealSelect(trans.deal)) { deal_type =HistoryDealGetInteger(trans.deal,DEAL_TYPE); deal_entry =HistoryDealGetInteger(trans.deal,DEAL_ENTRY); deal_volume =HistoryDealGetDouble(trans.deal,DEAL_VOLUME); deal_symbol =HistoryDealGetString(trans.deal,DEAL_SYMBOL); } else return; if(deal_entry==DEAL_ENTRY_OUT) { switch((int)deal_type) { case DEAL_TYPE_BUY: m_trade.Buy(deal_volume,deal_symbol); break; case DEAL_TYPE_SELL: m_trade.Sell(deal_volume,deal_symbol); break; default: break; } } } }
यहाँ हम स्थिति बंद होने के सौदे (DEAL_ENTRY_OUT) की प्रतीक्षा करते हैं। जब यह सौदा प्रकट होता है, तो हम सौदे की स्थिति की जांच करते हैं (यदि हम एक BUY बंद करते हैं, तो यह एक Sell सौदा होगा, और इसके विपरीत) और हम एक नई स्थिति खोलते हैं।
टिप्पणी 0