//+------------------------------------------------------------------+ //| et4_MTC_v1.mq4 //| goldenlion@ukr.net //| http://GlobeInvestFund.com/ //+------------------------------------------------------------------+ #property copyright "Copyright c 2005, goldenlion@ukr.net" #property link "http://GlobeInvestFund.com/" #include <stdlib.mqh> extern double TakeProfit = 150; extern double Lots = -10; extern double StopLoss = 50; extern double Slippage = 3; extern double LogOn = 0; /////////////////////////////////////////////// int newCandel = 0; //ïðèçíàê íîâîé ñâå÷è int prev_candel_time = 0; int err; int ticket; int LastTradeTime; //+------------------------------------------------------------------+ //| Çàìåíà ñòàíäàðòíûì, ðåãèñòðèðóþò âðåìÿ ñîáûòèÿ | //+------------------------------------------------------------------+ bool MOrderDelete( int ticket ) { LastTradeTime = CurTime(); return ( OrderDelete( ticket ) ); } bool MOrderClose( int ticket, double lots, double price, int slippage, color Color=CLR_NONE) { LastTradeTime = CurTime(); price = MathRound(price*10000)/10000; return ( OrderClose( ticket, lots, price, slippage, Color) ); } bool MOrderModify( int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE) { LastTradeTime = CurTime(); price = MathRound(price*10000)/10000; stoploss = MathRound(stoploss*10000)/10000; takeprofit = MathRound(takeprofit*10000)/10000; return ( OrderModify( ticket, price, stoploss, takeprofit, expiration, arrow_color) ); } int MOrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment="", int magic=0, datetime expiration=0, color arrow_color=CLR_NONE) { LastTradeTime = CurTime(); price = MathRound(price*10000)/10000; stoploss = MathRound(stoploss*10000)/10000; takeprofit = MathRound(takeprofit*10000)/10000; return ( OrderSend( symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment, magic, expiration, arrow_color ) ); } //+------------------------------------------------------------------+ //| Ðàññ÷èòàåì ëîò //+------------------------------------------------------------------+ double LotsCalc() { double Lots2 = Lots; if( Lots2 < 0 ) Lots2 = ( MathFloor( ( AccountBalance() /1000*(-Lots2))/10 )/10 ); if ( Lots2 < 0.1 ) return (0.1); return (Lots2); } //+------------------------------------------------------------------+ //| Âûñòàâëÿåì óðîâíè //+------------------------------------------------------------------+ int CheckLevels() { //ïðèçíàê íîâîé ñâå÷è if( prev_candel_time == Time[0] ) newCandel = 0; else { newCandel = 1; prev_candel_time = Time[0]; } //Âàø êîä return(0); } //+------------------------------------------------------------------+ //| Îòêðûâàåì ïîçèöèè //+------------------------------------------------------------------+ int OpenPos() { //Âàø êîä return(0); } //+------------------------------------------------------------------+ //| Ñîïðîâîæäàåì //+------------------------------------------------------------------+ int MovePos() { //Âàø êîä return(0); } //+------------------------------------------------------------------+ //| Çàêðûâàåì ïîçèöèè | //+------------------------------------------------------------------+ int ClosePos() { //Âàø êîä return(0); } //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //Âàø êîä return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //Âàø êîä return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { if( CurTime() - LastTradeTime < 30 ) return (0); //çàäåðæêà íà 30 ñåêóíä åñëè áûëà ïåðàöèÿ CheckLevels(); //óñòàíàâëèâàåì ïðèçíàêè ïî êîòîðûì îòêðûâàåìñÿ //åñëè â ôóíêöèôÿõ ïðîèçâîäèì îïåðàöèè ñ îðäåðàìè òî îáÿçàòåëüíî ñðàçó ïîñëå ýòèõ îïåðàöèé //çàâåðøàåì èõ îïåðàòîðì return(1) äëÿ òîãî ÷òî áû ïðåêðàòèòü äàëüíåéøóþ ðàáîòó ñîâåòíèêà //è âûæäàòü ïàóçà ïîêà îòðàáîòàåò îðäåð if ( OpenPos() == 1 ) return(0); //òîëüêî îòêðûòèÿ ïîçèöèé if ( MovePos() == 1 ) return(0); //òîëüêî ñîïðîâîæäåíèå ïîçèöèé if ( ClosePos() == 1 ) return(0); //òîëüêî çàêðûòèÿ è óäàëåíèÿ îðäåðîâ return(0); } // the end.
Sample
Analysis
Market Information Used:
Series array that contains open time of each bar
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
It Closes Orders by itself
It can change open orders parameters, due to possible stepping strategy
It automatically opens orders when conditions are reached
Other Features: