//TENGRI ñîâåòíèê òîðãóåò íà ïàðe Åâðî äîëëàð, è Äîëëàð øâåéöàðåö, âåøàòü íà äâå ïàðû ñðàçó, ñ ðàçíûìè MagicNumber = 12345; //äëÿ ðàáîòû ñîâåòíèêà íå îáõîäèì èíäèêàòîð Silence2_02 äîëæåí íàõîäèòñÿ â ïàïêå èíäèêàòîðîâ, âåøàòü ñîâåòíèê íà Ì1, //èíäèêàòîð íà ãðàôèê âåøàòü íå îáÿçàòåëüíî, òîðãóåò ñîâåòíèê â äâå ñòîðîíû ñðàçó //Äîáàâëåíî íîðìàëèçàöèÿ îðäåðîâ, îòêðûòèå - ïðè ðåèíâåñòèðîâàíèè ïåðâîãî îðäåðà ïî ýêâèòè, íàñòðîéêè ïî ÒÔ òåïåðü ìîæíî //îïòèìèçèðîâàòü òàéìôðåéìû ïî ïîðÿäêó î÷åðåäíîñòè ÒÔ, âûâåäåíû âñå íàñòðîéêè ïî èíäþêàì âî âíåøíèå ïåðåìåííûå. extern string af4 = " fx.09@mail.ru novakazahi@yandex.ru"; //òàéìôðåéìû èñ÷èñëÿþòñÿ â ïîðÿäêå î÷åðåäíîñòè, åñëè TF =1; òî ýòî 1-M1, 2-M5, 3-M15, 4-M30, 5-H1, 6-H4, 7-D1 èòä //ñïàñèáî ïðîãðàììèñòó runik, çà êóñîê êîäà ïî ÒÔ extern string a = "-------ïî áàðó 1-ãî îðäåðà -------"; extern int TF_Op1 = 4; //òàéìôðåéì äëÿ áàðà, íàïðàâëåíèå äëÿ îòêðûòèÿ 1-ãî îðäåðà, åñëè 1-Ì1, 2-Ì5, 3-Ì15...èòä extern string b = "-------Silence 1-ãî îðäåðà -------"; extern int TFSilence1 = 2; //òàéìôðåéì 1-ãî îðäåðà èíäèêàòîð Silence, åñëè 1-Ì1, 2-Ì5, 3-Ì15...èòä extern int PerSilence1 = 11; //ïåðèîä Silence 1-ãî îðäåðà extern int BuffSilence1= 220; //BuffSize Silence 1-ãî îðäåðà extern int Sil_Level1 = 80; //óðîâåíü Level èíäèêàòîðà Silence 1-ãî îðäåðà extern string ñ = "-------Silence êîëåí -------"; extern int TFSilence2 = 3; //òàéìôðåéì êîëåí èíäèêàòîð Silence, åñëè 1-Ì1, 2-Ì5, 3-Ì15...èòä extern int PerSilence2 = 12; //ïåðèîä Silence êîëåí extern int BuffSilence2= 96; //BuffSize Silence êîëåí extern int Sil_Level2 = 80; //óðîâåíü Level èíäèêàòîðà Silence êîëåí extern string k = "------- ÌÀ êîëåí -------"; extern int TF_MA2 = 3; //òàéìôðåéì êîëåí èíäèêàòîðà ÌÀ, åñëè 1-Ì1, 2-Ì5, 3-Ì15...èòä extern int Per_MA2 = 30; //ïåðèîä MA êîëåí extern string Block = "-------Ïàðàìåòðû -------"; extern double PipStepExponent = 1; //åñëè íóæåí ïðîãðåññèâíûé øàã extern double LotExponent1 = 1.70; //ïðîãðåññèâíûé ëîò äî StepX extern double LotExponent2 = 2.08; //ïðîãðåññèâíûé ëîò ïîñëå StepX extern int StepX = 5; //Step=5, äî 5øàãà óâåëè÷èâàåò ïî ýêñïîíåíòî1, ïîñëå 5 ïî ýêñïîíåíòî2 extern double LotSize = 0.01; //ðàçìåð ëîòà 1-ãî îðäåðà åñëè FixLot = true; extern bool FixLot = false; //true - ôèêñèðîâàííûé ëîò, åñëè false - òî òîãäà ñìîòðèì LotStep extern int LotStep = 2000; //øàã óâåëè÷åíèÿ ëîòà. ò.å. ñêîëüêî â äåïîçèòå LotStep âîñòîëüêî óâåëè÷èòñÿ LotSize. åñëè äåïî 2000 òî ëîò 0.01, åñëè ñòàíåò 4000 òî ëîò 0.02 extern int PipStep = 10; //øàã ìåæäó äîëèâêàìè. êàæäûé øàã óâèëè÷èâàåòñÿ â PipStepExponent ðàç åñëè Silence íèæå Level. extern int PipStep2 = 20; //øàã ìåæäó äîëèâêàìè. êàæäûé øàã óâèëè÷èâàåòñÿ â PipStepExponent ðàç åñëè Silence âûøå Level. extern int TP = 10; //òýéêïðîôèò extern int MaxTrades=10; //ìàêñèìàëüíîå êîë-âî êîëåí extern string GeneralBlock = "-------Îáùèå ïàðàìåòðû-------"; extern bool Ostanov=true; //Âêëþ÷åíèå çàêðûòèÿ Ëîêà âñåõ îðäåðîâ ïî äîñòèæåíèè çàäàííîãî ëèìèòà extern double Limit = 50; //Ëèìèò íà çàêðûòèå îðäåðîâ(â åäèíèöàõ âàëþòû) extern int OpenNewTF = 1; //òàéìôðåì äëÿ îòêðûòèÿ íîâûõ îðäåðîâ, åñëè 1-Ì1, 2-Ì5, 3-Ì15...èòä extern int OpenNextTF = 1; //òàéìôðåéì äëÿ îòêðûòèÿ êîëåí îðäåðîâ, åñëè 1-Ì1, 2-Ì5, 3-Ì15...èòä extern int Povtor = 1; //òàéìôðåéì äëÿ ïîâòîðà çàïðîñîâ extern string d = "ðàáîòà ñîâåòíèêà â ïÿòíèöó äî"; extern bool CloseFriday=true; // èñïîëüçîâàòü îãðàíè÷åíèå ïî âðåìåíè â ïÿòíèöó true, íå èñïîëüçîâàòü false extern int CloseFridayHour=19; // âðåìÿ â ïÿòíèöó ïîñëå êîòîðîãî íå âûñòàâëÿåòñÿ ïåðâûé îðäåð extern string OfficialVariable = "-------Ñëóæåáíûå ïåðåìåíûå-------"; extern string InformationOnChartString = "InformationOnChart - îòêëþ÷èòü äëÿ òåñòåðà (çàìåäëÿåò)"; extern bool InformationOnChart = true; //âûâîäèòü ëè èíôîðìàöèþ íà ãðàôèê, îòêëþ÷èòü äëÿ òåñòåðà (çàìåäëÿåò) extern int MagicNumber = 12345; //ïî ýòîìó íîìåðó ïðîèñõîäèò èäåíòèôèêàöèÿ îðäåðîâ íà ïðåíàäëåæíîñòü ñîâåòíèêó extern string af5 = "-===Kazakstan treider==- "; extern int LotDecimal = 0; datetime timeprevMIN=0; datetime timeprevMAX=0; int total, ticket, CountTrades; int mper[10]={0,1,5,15,30,60,240,1440,10080,43200}; bool LongTradeNew, ShortTradeNew; double Buy_NextLot,Sell_NextLot, Buy_NewLot, Sell_NewLot, Buy_LastLot, Sell_LastLot, Prof; string CommentTrades; //=========================== int init(){ LotDecimal = LotDecimal(); return(0);} //=========================== int deinit(){ return(0);} //============= íàïðàâëåíèå = int ind_iOP; int ind_iOP2; //============= Ñòàðò ======= int start(){ //== Áàðû îòêðûòèå öåíû 1-ãî îðäåðà ==================================================== double i_OP = iOpen (Symbol(), mper[TF_Op1], 0); // óñëîâèå íàïðàâëåíèÿ äëÿ ïåðâîãî îðäåðà if (i_OP < Bid) ind_iOP = 1; // óñëîâèå äëÿ áàé else if (i_OP > Bid) ind_iOP = - 1; // óñëîâèå äëÿ ñåëë //====================================================================================== if (LotDecimal==0) LotDecimal = LotDecimal(); Information(); LongTradeNew=true; ShortTradeNew=true; //========= Çàêðûòèå ëîêîâ ïðè ïðîôèòå ================================================= if ((Ostanov)&&CountTrades("buy")>0&&CountTrades("sell")>0&&(Balance("buy","Balance")+Balance("sell", "Balance"))>=AccountEquity()/Limit){ int slippage=3; for (int i=OrdersTotal()-1; i>=0; i--) { if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break; if (OrderType()==OP_BUY ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slippage); if (OrderType()==OP_SELL) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),slippage); } } //====================================================================================== if(timeprevMIN!=iTime(NULL,mper[OpenNewTF],0)) { ticket=0; CountTrades = CountTrades("buy"); if(CloseFriday==true&&DayOfWeek()==5&&TimeCurrent()>=StrToTime(CloseFridayHour+":00"))return(0); // çàïðåò â ïÿòíèöó if (ind_iOP > 0) // óñëîâèå äëÿ ïåðâîãî îðäåðà áàé åñëè öåíà íèæå óðîâíÿ îòêðûòèÿ áàðà, òî îðäåð áàé íå îòêðûâàåòñÿ { if (iRSI(NULL, PERIOD_H1, 14, PRICE_CLOSE, 0) < 70.0) { if (iCustom(NULL, mper[TFSilence1], "Silence2_02", PerSilence1, BuffSilence1, 2, 0) < Sil_Level1) { if (CountTrades==0 && LongTradeNew==true) { CommentTrades = "TENGRI "+Symbol()+" - Buy "+(CountTrades+1); Buy_NewLot = NewLot("buy"); while(ticket<1) { Prof = Prof("buy"); Print("Ïîêóïàåì. Íîâûé. Ïàðàìåòðû. ñèìâîë="+Symbol()+", ëîò="+DoubleToStr(Buy_NewLot,2)+", öåíà="+DoubleToStr(Ask,4)+" ïðîôèò="+DoubleToStr(Prof,4)+", êîììåíò="+CommentTrades+" ìàäæèê="+MagicNumber); ticket = OrderSend(Symbol(),OP_BUY,Buy_NewLot,NormalizeDouble(Ask,Digits),3,0,Prof,CommentTrades,MagicNumber,0,Blue); if(ticket<1) {Print("Îøèáêà: ",GetLastError()," Íîâàÿ ïîïûòêà ïîêóïêè ÷åðåç "+(Povtor*60)+" ñåêóíä");Sleep(Povtor*60*1000);} RefreshRates(); } } } } } CountTrades = CountTrades("sell"); if(CloseFriday==true&&DayOfWeek()==5&&TimeCurrent()>=StrToTime(CloseFridayHour+":00"))return(0); //çàïðåò â ïÿòíèöó if (ind_iOP < 0) // óñëîâèå äëÿ ïåðâîãî îðäåðà ñåëë åñëè öåíà âûøå óðîâíÿ îòêðûòèÿ áàðà, òî îðäåð ñåëë íå îòêðûâàåòñÿ { if (iRSI(NULL, PERIOD_H1, 14, PRICE_CLOSE, 0) > 30.0) { if (iCustom(NULL, mper[TFSilence1], "Silence2_02", PerSilence1, BuffSilence1, 2, 0) < Sil_Level1) { if (CountTrades==0 && ShortTradeNew==true) { CommentTrades = "TENGRI "+Symbol()+" - Sell "+(CountTrades+1); Sell_NewLot = NewLot("sell"); while(ticket<1) { Prof = Prof("sell"); Print("Ïðîäàåì. Íîâûé. Ïàðàìåòðû. ñèìâîë="+Symbol()+", ëîò="+DoubleToStr(Sell_NewLot,2)+", öåíà="+DoubleToStr(Bid,4)+" ïðîôèò="+DoubleToStr(Prof,4)+", êîììåíò="+CommentTrades+" ìàäæèê="+MagicNumber); ticket = OrderSend(Symbol(),OP_SELL,Sell_NewLot,NormalizeDouble(Bid,Digits),3,0,Prof,CommentTrades,MagicNumber,0,Red); if(ticket<1) {Print("Îøèáêà: ",GetLastError()," Íîâàÿ ïîïûòêà ïîêóïêè ÷åðåç "+(Povtor*60)+" ñåêóíä");Sleep(Povtor*60*1000);} RefreshRates(); } } } } } timeprevMIN=iTime(NULL,mper[OpenNewTF],0); } if(timeprevMAX!=iTime(NULL,mper[OpenNextTF],0)) { ticket=0; CountTrades = CountTrades("buy"); if (CountTrades>0 && NextOrder("buy")) { CommentTrades = "TENGRI "+Symbol()+" - Buy "+(CountTrades+1); Buy_NextLot = NextLot("buy"); while(ticket<1) { Print("Ïîêóïàåì. Ñëåäóþùèé. Ïàðàìåòðû. ñèìâîë:"+Symbol()+", ëîò="+DoubleToStr(Buy_NextLot,2)+", öåíà ="+DoubleToStr(Ask,4)+", êîììåíò="+CommentTrades+", ìàäæèê="+MagicNumber); ticket = OrderSend(Symbol(),OP_BUY,Buy_NextLot,NormalizeDouble(Ask,Digits),3,0,0,CommentTrades,MagicNumber,0,Blue); if(ticket<1) {Print("Îøèáêà: ",GetLastError()," Íîâàÿ ïîïûòêà ïîêóïêè ÷åðåç "+(Povtor*60)+" ñåêóíä");Sleep(Povtor*60*1000);} else Ñorrect("buy"); RefreshRates(); } } CountTrades = CountTrades("sell"); if (CountTrades>0 && NextOrder("sell")) { CommentTrades = "TENGRI "+Symbol()+" - Sell "+(CountTrades+1); Sell_NextLot = NextLot("sell"); while(ticket<1) { Print("Ïðîäàåì. Ñëåäóþùèé. Ïàðàìåòðû. ñèìâîë:"+Symbol()+", ëîò="+DoubleToStr(Sell_NextLot,2)+", öåíà="+DoubleToStr(Bid,4)+", êîììåíò="+CommentTrades+", ìàäæèê="+MagicNumber); ticket = OrderSend(Symbol(),OP_SELL,Sell_NextLot,NormalizeDouble(Bid,Digits),3,0,0,CommentTrades,MagicNumber,0,Red); if(ticket<1) {Print("Îøèáêà: ",GetLastError()," Íîâàÿ ïîïûòêà ïðîäàæè ÷åðåç "+(Povtor*60)+" ñåêóíä");Sleep(Povtor*60*1000);} else Ñorrect("sell"); RefreshRates(); } } timeprevMAX=iTime(NULL,mper[OpenNextTF],0); } return(0); } //+------------------------------------------------------------------+ double Prof(string OrdType) { double Zena=0; if (TP<MarketInfo(Symbol(),MODE_STOPLEVEL)) TP=MarketInfo(Symbol(),MODE_STOPLEVEL); if (OrdType=="buy")Zena=Ask+TP*Point; if (OrdType=="sell")Zena=Bid-TP*Point; return (Zena); } //+------------------------------------------------------------------+ void Ñorrect(string OrdType) { int trade; double TP_all; double AveragePrice; AveragePrice = AveragePrice(OrdType); for(trade=OrdersTotal()-1;trade>=0;trade--) { OrderSelect(trade, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber) continue; if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { //----- if (OrdType=="buy") { if(OrderType()==OP_BUY) { TP_all = AveragePrice+TP*Point; if (OrderTakeProfit() != TP_all) { Print("Ìîäèôèöèðóåì ïîêóïêó. Áåçóáûòîê = "+DoubleToStr(AveragePrice,4)+", ÒÐ = "+DoubleToStr(TP,4)+" Íîâûé óðîâåíü = "+DoubleToStr(TP_all,4)); OrderModify(OrderTicket(), AveragePrice, OrderStopLoss(), TP_all, 0, Yellow); } } } //---- if (OrdType=="sell") { if(OrderType()==OP_SELL) { TP_all = AveragePrice-TP*Point; if (OrderTakeProfit() != TP_all) { Print("Ìîäèôèöèðóåì ïðîäàæó. Áåçóáûòîê = "+DoubleToStr(AveragePrice,4)+", ÒÐ = "+DoubleToStr(TP,4)+" Íîâûé óðîâåíü = "+DoubleToStr(TP_all,4)); OrderModify(OrderTicket(), AveragePrice, OrderStopLoss(), TP_all, 0, Yellow); } } } //---- } } } //+------------------------------------------------------------------+ //Âû÷èñëÿåì ðàçìåð ïåðâîãî ëîòà double NewLot(string OrdType) { double tLots; double minlot = MarketInfo(Symbol(), MODE_MINLOT); if (OrdType=="buy") { if (FixLot) tLots = LotSize; else tLots = NormalizeDouble(LotSize * NormalizeDouble(AccountEquity()/LotStep,0), LotDecimal); } if (OrdType=="sell") { if (FixLot) tLots = LotSize; else tLots = NormalizeDouble(LotSize * NormalizeDouble(AccountEquity()/LotStep,0), LotDecimal); } if(tLots < minlot) tLots = minlot; return(tLots); } //+------------------------------------------------------------------+ //Âû÷èñëÿåì ðàçìåð ñëåäóþùåãî ëîòà double NextLot(string OrdType){ double tLots; int st_P=CountTrades(OrdType); if (OrdType=="buy"){ if (st_P >= StepX) tLots = NormalizeDouble(FindLastOrder(OrdType, "Lots") * LotExponent2, LotDecimal); else tLots = NormalizeDouble(FindLastOrder(OrdType, "Lots") * LotExponent1, LotDecimal); } if (OrdType=="sell"){ if (st_P >= StepX) tLots = NormalizeDouble(FindLastOrder(OrdType, "Lots") * LotExponent2, LotDecimal); else tLots = NormalizeDouble(FindLastOrder(OrdType, "Lots") * LotExponent1, LotDecimal); } return(tLots); } //+------------------------------------------------------------------+ //Ïðîâåðÿåì íóæíî ëè îòêðûâàòü ñëåäóþùèé îðäåð bool NextOrder(string OrdType) { double MA_30 = iMA(Symbol(), mper[TF_MA2], Per_MA2, 0, 0, PRICE_CLOSE, 0); bool NextOrd = false; int PipStepEX; if (OrdType=="buy"&&MA_30<Bid) { if(iCustom(NULL, mper[TFSilence2], "Silence2_02", PerSilence2, BuffSilence2, 2, 0) < Sil_Level2) PipStepEX = NormalizeDouble(PipStep*MathPow(PipStepExponent,CountTrades(OrdType)),0); else PipStepEX = NormalizeDouble(PipStep2*MathPow(PipStepExponent,CountTrades(OrdType)),0); if (FindLastOrder(OrdType, "Price") - Ask >= PipStepEX * Point && CountTrades(OrdType)<MaxTrades) { { NextOrd = TRUE; } } } if (OrdType=="sell"&&MA_30>Bid) { if(iCustom(NULL, mper[TFSilence2], "Silence2_02", PerSilence2, BuffSilence2, 2, 0) < Sil_Level2) PipStepEX = NormalizeDouble(PipStep*MathPow(PipStepExponent,CountTrades(OrdType)),0); else PipStepEX = NormalizeDouble(PipStep2*MathPow(PipStepExponent,CountTrades(OrdType)),0); if (Bid - FindLastOrder(OrdType, "Price") >= PipStepEX * Point && CountTrades(OrdType)<MaxTrades) { { NextOrd = TRUE; } } } return(NextOrd); } //+------------------------------------------------------------------+ //Âîçâðàùàåò öåíó èëè ëîò ïîñëåäíåãî îðäåðà double FindLastOrder(string OrdType, string inf) { double OrderPrice; double LastLot; int trade, oldticketnumber=0; for(trade=OrdersTotal()-1;trade>=0;trade--) { OrderSelect(trade, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber) continue; if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { //---- if (OrdType=="buy") { if(OrderType()==OP_BUY) { if(OrderTicket()>oldticketnumber) { OrderPrice=OrderOpenPrice(); LastLot = OrderLots(); oldticketnumber=OrderTicket(); } } } //---- if (OrdType=="sell") { if(OrderType()==OP_SELL) { if(OrderTicket()>oldticketnumber) { OrderPrice=OrderOpenPrice(); LastLot = OrderLots(); oldticketnumber=OrderTicket(); } } } //---- } } if (inf=="Price") return(OrderPrice); if (inf=="Lots") return(LastLot); } //+------------------------------------------------------------------+ //Âîçâðàùàåò êîëè÷åñòâî îðäåðîâ int CountTrades(string OrdType) { int count=0; int trade; for(trade=OrdersTotal()-1;trade>=0;trade--) { OrderSelect(trade,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber) continue; if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber) { //---- if (OrdType == "buy") { if(OrderType()==OP_BUY) count++; } //---- if (OrdType == "sell") { if(OrderType()==OP_SELL) count++; } //---- } } return(count); } //+------------------------------------------------------------------+ //Âîçâðàùàåò ñðåäíþþ öåíó îòêðûòûõ ïîç ïî íàïðàâëåíèþ double AveragePrice(string OrdType) { double AveragePrice=0; double Count=0; int trade; for(trade=OrdersTotal()-1;trade>=0;trade--) { OrderSelect(trade, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber) continue; if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber) { //----- if (OrdType == "buy") { if(OrderType()==OP_BUY) { AveragePrice=AveragePrice+OrderOpenPrice()*OrderLots(); Count=Count + OrderLots(); } } //---- if (OrdType == "sell") { if(OrderType()==OP_SELL) { AveragePrice=AveragePrice+OrderOpenPrice()*OrderLots(); Count=Count + OrderLots(); } } //---- } } AveragePrice=NormalizeDouble(AveragePrice/Count, Digits); return(AveragePrice); } //---------------------------------------------------------------------- //Ïðîöåäóðà âûâîäèò èíôîðìàöèþ ïî òîðãàì: void Information() { if (InformationOnChart) { Comment("" //+ "\n" + " TENGRI MARTINGEIL fx.09@mail.ru "+Symbol() + "\n" + " ------------------------------------------------" + "\n" + " Broker: " + AccountCompany()+". AccountLeverage: 1:"+ DoubleToStr(AccountLeverage(), 0) + "\n" + " ------------------------------------------------" + "\n" + " Buy open -> "+CountTrades("buy")+" MaxTrades -> "+MaxTrades + "\n" + " Open balance: " + DoubleToStr(Balance("buy", "Balance"), 2) + "\n" + " Open lot: " + DoubleToStr(Balance("buy", "Lot"), 2) + "\n" + " ------------------------------------------------" + "\n" + " Sell open -> "+CountTrades("sell")+" MaxTrades -> "+MaxTrades + "\n" + " Open balance: " + DoubleToStr(Balance("sell", "Balance"), 2) + "\n" + " Open lot: " + DoubleToStr(Balance("sell", "Lot"), 2) + "\n" + " ------------------------------------------------" + "\n" + " Close Lock: " + DoubleToStr ((AccountEquity() / (Limit)), 2) + "\n" + " Balance Buy && Sell: " + DoubleToStr((Balance("buy", "Balance")+Balance("sell", "Balance")), 2) ); } } //--------------------------------------------------- //ôóíêöèÿ ðàñ÷åòà èíôîðìàöèè ïî òåêóùèì òîðãàì double Balance(string OrdType, string inf) { double result=0; int trade; for(trade=OrdersTotal()-1;trade>=0;trade--) { OrderSelect(trade, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber) continue; if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber) { //----- if (OrdType == "buy") { if(OrderType()==OP_BUY) { if (inf=="Balance") result=result+OrderProfit()-OrderSwap()-OrderCommission(); if (inf=="Lot") result=result+OrderLots(); } } //---- if (OrdType == "sell") { if(OrderType()==OP_SELL) { if (inf=="Balance") result=result+OrderProfit()-OrderSwap()-OrderCommission(); if (inf=="Lot") result=result+OrderLots(); } } //---- } } return(result); } //--------------------------------------------------- double LotDecimal() { double steplot=MarketInfo(Symbol(), MODE_LOTSTEP); int LotsDigits = MathCeil(MathAbs(MathLog(steplot)/MathLog(10))); return(LotsDigits); } //=================================================== //Çàêðûòèå âñåõ ïîçèöèé
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Relative strength index
Moving average indicator
Custom Indicators Used:
Silence2_02
Order Management characteristics:
Checks for the total of open orders
It automatically opens orders when conditions are reached
It can change open orders parameters, due to possible stepping strategy
Other Features: