Энное количество Лет тому назад, прочитав статью о туннельном методе Вегас, по моему алгоритму попросил (сам не программист) написать советник, но по принципу отката.
В коде есть ошибка, не удаляет отложенники.....а так при портфельном варианте работы, рубил по маленьку.
Код выставляю, может поправите?....
extern double Lots1=0.05; extern double Lots2=0.1; extern double Lots3=0.2; extern double Lots4=0.4; extern int RiskModel=5; extern int MA1=144; extern int MA2=169; //datetime TimeN, TimeC; double BidP; bool Stavim1, Stavim2; int cnt, t; double digits; int init() { BidP=0; Stavim1=false; Stavim2=false; t=-1; digits=MarketInfo(Symbol(),MODE_DIGITS); } int start() { //if(AccountNumber()!=123) return(0); //TimeC=Time[0]; double s=MarketInfo(Symbol(),MODE_SPREAD)*Point; double MA_1=NormalizeDouble(iMA(NULL,0,MA1,0,MODE_EMA,PRICE_CLOSE,0),digits); double MA_2=NormalizeDouble(iMA(NULL,0,MA2,0,MODE_EMA,PRICE_CLOSE,0),digits); double MA_1v1, MA_1v2, MA_1v3, MA_1v4, MA_1n1, MA_1n2, MA_1n3, MA_1n4; double MA_2v1, MA_2v2, MA_2v3, MA_2v4, MA_2n1, MA_2n2, MA_2n3, MA_2n4; double SL1, SL2, SL3, SL4, TP1, TP2, TP3, TP4; if(RiskModel==1) { MA_1v1=MA_1+34*Point; MA_1v2=MA_1+55*Point; MA_1v3=MA_1+89*Point; MA_1n1=MA_1-34*Point; MA_1n2=MA_1-55*Point; MA_1n3=MA_1-89*Point; MA_2v1=MA_2+34*Point; MA_2v2=MA_2+55*Point; MA_2v3=MA_2+89*Point; MA_2n1=MA_2-34*Point; MA_2n2=MA_2-55*Point; MA_2n3=MA_2-89*Point; SL1=21*Point; TP1=21*Point; SL2=34*Point; TP2=21*Point; SL3=55*Point; TP3=34*Point; } if(RiskModel==2) { MA_1v1=MA_1+55*Point; MA_1v2=MA_1+89*Point; MA_1v3=MA_1+144*Point; MA_1n1=MA_1-55*Point; MA_1n2=MA_1-89*Point; MA_1n3=MA_1-144*Point; MA_2v1=MA_2+55*Point; MA_2v2=MA_2+89*Point; MA_2v3=MA_2+144*Point; MA_2n1=MA_2-55*Point; MA_2n2=MA_2-89*Point; MA_2n3=MA_2-144*Point; SL1=34*Point; TP1=21*Point; SL2=55*Point; TP2=34*Point; SL3=89*Point; TP3=55*Point; } if(RiskModel==3) { MA_1v1=MA_1+89*Point; MA_1v2=MA_1+144*Point; MA_1v3=MA_1+233*Point; MA_1n1=MA_1-89*Point; MA_1n2=MA_1-144*Point; MA_1n3=MA_1-233*Point; MA_2v1=MA_2+89*Point; MA_2v2=MA_2+144*Point; MA_2v3=MA_2+233*Point; MA_2n1=MA_2-89*Point; MA_2n2=MA_2-144*Point; MA_2n3=MA_2-233*Point; SL1=55*Point; TP1=34*Point; SL2=89*Point; TP2=55*Point; SL3=144*Point; TP3=89*Point; } if(RiskModel==4) { MA_1v1=MA_1+144*Point; MA_1v2=MA_1+233*Point; MA_1v3=MA_1+377*Point; MA_1n1=MA_1-144*Point; MA_1n2=MA_1-233*Point; MA_1n3=MA_1-377*Point; MA_2v1=MA_2+144*Point; MA_2v2=MA_2+233*Point; MA_2v3=MA_2+377*Point; MA_2n1=MA_2-144*Point; MA_2n2=MA_2-233*Point; MA_2n3=MA_2-377*Point; SL1=89*Point; TP1=55*Point; SL2=144*Point; TP2=89*Point; SL3=233*Point; TP3=144*Point; } if(RiskModel==5) { MA_1v1=MA_1+89*Point; MA_1v2=MA_1+144*Point; MA_1v3=MA_1+233*Point; MA_1v4=MA_1+377*Point; MA_1n1=MA_1-89*Point; MA_1n2=MA_1-144*Point; MA_1n3=MA_1-233*Point; MA_1n4=MA_1-377*Point; MA_2v1=MA_2+89*Point; MA_2v2=MA_2+144*Point; MA_2v3=MA_2+233*Point; MA_2v4=MA_2+377*Point; MA_2n1=MA_2-89*Point; MA_2n2=MA_2-144*Point; MA_2n3=MA_2-233*Point; MA_2n4=MA_2-377*Point; SL1=55*Point; TP1=34*Point; SL2=89*Point; TP2=55*Point; SL3=144*Point; TP3=89*Point; SL4=233*Point; TP4=144*Point; } int ticket1=0, ticket2=0, ticket3=0, ticket4=0, ticket5=0, ticket6=0, ticket7=0, ticket8=0, total=0; bool CB=false, CS=false; if(RiskModel!=5) { for(cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol()) { if(OrderMagicNumber()==1703091) {ticket1++; if(OrderType()==OP_SELL) CB=true;} if(OrderMagicNumber()==1703092) {ticket2++; if(OrderType()==OP_SELL) CB=true;} if(OrderMagicNumber()==1703093) {ticket3++; if(OrderType()==OP_SELL) CB=true;} if(OrderMagicNumber()==1703094) {ticket4++; if(OrderType()==OP_BUY) CS=true;} if(OrderMagicNumber()==1703095) {ticket5++; if(OrderType()==OP_BUY) CS=true;} if(OrderMagicNumber()==1703096) {ticket6++; if(OrderType()==OP_BUY) CS=true;} } } total=ticket1+ticket2+ticket3+ticket4+ticket5+ticket6; if(CB==true && ticket1+ticket2+ticket3!=0) CloseBuy(); if(CS==true && ticket4+ticket5+ticket6!=0) CloseSell(); if(((BidP<MA_1 && Bid>=MA_1) || (BidP>MA_1 && Bid<=MA_1)) && BidP!=0 && total==0 && !Stavim2) Stavim1=true; if(Stavim1 && ticket1==0) OrderSend(Symbol(),OP_SELLLIMIT,Lots1,MA_1v1,3,MA_1v1+SL1+s,MA_1v1-TP1+s,"B",1703091,0,Blue); if(Stavim1 && ticket2==0) OrderSend(Symbol(),OP_SELLLIMIT,Lots2,MA_1v2,3,MA_1v2+SL2+s,MA_1v2-TP2+s,"B",1703092,0,Blue); if(Stavim1 && ticket3==0) OrderSend(Symbol(),OP_SELLLIMIT,Lots3,MA_1v3,3,MA_1v3+SL3+s,MA_1v3-TP3+s,"B",1703093,0,Blue); if(Stavim1 && ticket4==0) OrderSend(Symbol(),OP_BUYLIMIT,Lots1,MA_1n1+s,3,MA_1n1-SL1,MA_1n1+TP1,"B",1703094,0,Red); if(Stavim1 && ticket5==0) OrderSend(Symbol(),OP_BUYLIMIT,Lots2,MA_1n2+s,3,MA_1n2-SL2,MA_1n2+TP2,"B",1703095,0,Red); if(Stavim1 && ticket6==0) t=OrderSend(Symbol(),OP_BUYLIMIT,Lots3,MA_1n3+s,3,MA_1n3-SL3,MA_1n3+TP3,"B",1703096,0,Red); if(((BidP<MA_2 && Bid>=MA_2) || (BidP>MA_2 && Bid<=MA_2)) && BidP!=0 && total==0 && !Stavim1) Stavim2=true; if(Stavim2 && ticket1==0) OrderSend(Symbol(),OP_SELLLIMIT,Lots1,MA_2v1,3,MA_2v1+SL1+s,MA_2v1-TP1+s,"B",1703091,0,Blue); if(Stavim2 && ticket2==0) OrderSend(Symbol(),OP_SELLLIMIT,Lots2,MA_2v2,3,MA_2v2+SL2+s,MA_2v2-TP2+s,"B",1703092,0,Blue); if(Stavim2 && ticket3==0) OrderSend(Symbol(),OP_SELLLIMIT,Lots3,MA_2v3,3,MA_2v3+SL3+s,MA_2v3-TP3+s,"B",1703093,0,Blue); if(Stavim2 && ticket4==0) OrderSend(Symbol(),OP_BUYLIMIT,Lots1,MA_2n1+s,3,MA_2n1-SL1,MA_2n1+TP1,"B",1703094,0,Red); if(Stavim2 && ticket5==0) OrderSend(Symbol(),OP_BUYLIMIT,Lots2,MA_2n2+s,3,MA_2n2-SL2,MA_2n2+TP2,"B",1703095,0,Red); if(Stavim2 && ticket6==0) t=OrderSend(Symbol(),OP_BUYLIMIT,Lots3,MA_2n3+s,3,MA_2n3-SL3,MA_2n3+TP3,"B",1703096,0,Red); if(t>0) {Stavim1=false; Stavim2=false;} } else { for(cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol()) { if(OrderMagicNumber()==1703091) {ticket1++; if(OrderType()==OP_SELL) CB=true;} if(OrderMagicNumber()==1703092) {ticket2++; if(OrderType()==OP_SELL) CB=true;} if(OrderMagicNumber()==1703093) {ticket3++; if(OrderType()==OP_SELL) CB=true;} if(OrderMagicNumber()==1703097) {ticket7++; if(OrderType()==OP_SELL) CB=true;} if(OrderMagicNumber()==1703094) {ticket4++; if(OrderType()==OP_BUY) CS=true;} if(OrderMagicNumber()==1703095) {ticket5++; if(OrderType()==OP_BUY) CS=true;} if(OrderMagicNumber()==1703096) {ticket6++; if(OrderType()==OP_BUY) CS=true;} if(OrderMagicNumber()==1703098) {ticket8++; if(OrderType()==OP_BUY) CS=true;} } } total=ticket1+ticket2+ticket3+ticket4+ticket5+ticket6+ticket7+ticket8; if(CB==true && ticket1+ticket2+ticket3+ticket7!=0) CloseBuy(); if(CS==true && ticket4+ticket5+ticket6+ticket8!=0) CloseSell(); if(((BidP<MA_1 && Bid>=MA_1) || (BidP>MA_1 && Bid<=MA_1)) && BidP!=0 && total==0 && !Stavim2) Stavim1=true; if(Stavim1 && ticket1==0) OrderSend(Symbol(),OP_SELLLIMIT,Lots1,MA_1v1,3,MA_1v1+SL1+s,MA_1v1-TP1+s,"B",1703091,0,Blue); if(Stavim1 && ticket2==0) OrderSend(Symbol(),OP_SELLLIMIT,Lots2,MA_1v2,3,MA_1v2+SL2+s,MA_1v2-TP2+s,"B",1703092,0,Blue); if(Stavim1 && ticket3==0) OrderSend(Symbol(),OP_SELLLIMIT,Lots3,MA_1v3,3,MA_1v3+SL3+s,MA_1v3-TP3+s,"B",1703093,0,Blue); if(Stavim1 && ticket7==0) OrderSend(Symbol(),OP_SELLLIMIT,Lots4,MA_1v4,3,MA_1v4+SL4+s,MA_1v4-TP4+s,"B",1703097,0,Blue); if(Stavim1 && ticket4==0) OrderSend(Symbol(),OP_BUYLIMIT,Lots1,MA_1n1+s,3,MA_1n1-SL1,MA_1n1+TP1,"B",1703094,0,Red); if(Stavim1 && ticket5==0) OrderSend(Symbol(),OP_BUYLIMIT,Lots2,MA_1n2+s,3,MA_1n2-SL2,MA_1n2+TP2,"B",1703095,0,Red); if(Stavim1 && ticket6==0) OrderSend(Symbol(),OP_BUYLIMIT,Lots3,MA_1n3+s,3,MA_1n3-SL3,MA_1n3+TP3,"B",1703096,0,Red); if(Stavim1 && ticket8==0) t=OrderSend(Symbol(),OP_BUYLIMIT,Lots4,MA_1n4+s,3,MA_1n4-SL4,MA_1n4+TP4,"B",1703098,0,Red); if(((BidP<MA_2 && Bid>=MA_2) || (BidP>MA_2 && Bid<=MA_2)) && BidP!=0 && total==0 && !Stavim1) Stavim2=true; if(Stavim2 && ticket1==0) OrderSend(Symbol(),OP_SELLLIMIT,Lots1,MA_2v1,3,MA_2v1+SL1+s,MA_2v1-TP1+s,"B",1703091,0,Blue); if(Stavim2 && ticket2==0) OrderSend(Symbol(),OP_SELLLIMIT,Lots2,MA_2v2,3,MA_2v2+SL2+s,MA_2v2-TP2+s,"B",1703092,0,Blue); if(Stavim2 && ticket3==0) OrderSend(Symbol(),OP_SELLLIMIT,Lots3,MA_2v3,3,MA_2v3+SL3+s,MA_2v3-TP3+s,"B",1703093,0,Blue); if(Stavim2 && ticket7==0) OrderSend(Symbol(),OP_SELLLIMIT,Lots4,MA_2v4,3,MA_2v4+SL4+s,MA_2v4-TP4+s,"B",1703097,0,Blue); if(Stavim2 && ticket4==0) OrderSend(Symbol(),OP_BUYLIMIT,Lots1,MA_2n1+s,3,MA_2n1-SL1,MA_2n1+TP1,"B",1703094,0,Red); if(Stavim2 && ticket5==0) OrderSend(Symbol(),OP_BUYLIMIT,Lots2,MA_2n2+s,3,MA_2n2-SL2,MA_2n2+TP2,"B",1703095,0,Red); if(Stavim2 && ticket6==0) OrderSend(Symbol(),OP_BUYLIMIT,Lots3,MA_2n3+s,3,MA_2n3-SL3,MA_2n3+TP3,"B",1703096,0,Red); if(Stavim2 && ticket8==0) t=OrderSend(Symbol(),OP_BUYLIMIT,Lots4,MA_2n4+s,3,MA_2n4-SL4,MA_2n4+TP4,"B",1703098,0,Red); if(t>0) {Stavim1=false; Stavim2=false;} } BidP=Bid; return(0); } void CloseBuy() { for(cnt=0;cnt<OrdersTotal();cnt++) { if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderType()==OP_BUYLIMIT) { while(true) { bool result=OrderDelete(OrderTicket()); if(result!=TRUE) { Print("LastError = ",GetLastError()); if(GetLastError()==135) RefreshRates(); } else break; } } } } } void CloseSell() { for(cnt=0;cnt<OrdersTotal();cnt++) { if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderType()==OP_SELLLIMIT) { while(true) { bool result=OrderDelete(OrderTicket()); if(result!=TRUE) { Print("LastError = ",GetLastError()); if(GetLastError()==135) RefreshRates(); } else break; } } } } }
Энное количество Лет тому назад, прочитав статью о туннельном методе Вегас, по моему алгоритму попросил (сам не программист) написать советник, но по принципу отката.
В коде есть ошибка, не удаляет отложенники.....а так при портфельном варианте работы, рубил по маленьку.
Энное количество Лет тому назад, прочитав статью о туннельном методе Вегас, по моему алгоритму попросил (сам не программист) написать советник, но по принципу отката.
В коде есть ошибка, не удаляет отложенники.....а так при портфельном варианте работы, рубил по маленьку.
Смотрел код, тестировал на истории, не понял почему вы говорите, что не удаляет отложенники. По коду при наступлении сигнала на Буй и срабатывании одного отложенника БуйЛимит удаляются отложенники СеллЛимит, и наоборот.
Необходимо Ваше уточнение теоретической схемы работы данной торговой системы,
т.е. при каких сигналах какие отложенники удалять?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Тоннельный метод:
Author: Sergey Kolesnik