//+------------------------------------------------------------------+ //| Pendulum 2_05.mq4 | //| Copyright © BFE2006 | //| http://BFE2006@yandex.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © BFE2006" #property link "http://BFE2006@yandex.ru" //+------------------------------------------------------------------+ //| Параметры работы | //| - Выставляет два стартовых отложенных ордера на покупку и продажу| //| (размер лот расчитывается автоматически исходя из размеров | //| депозита и максимального увелечения "плеча"от 0.01 до 0.07лота)| //| с учетом размера 2-х предидущих дневных баров (расстояние от | //| текущей цены, величина тралла и пипсовки) | //| | //| - Траллит отложенные ордера вслед за ценой до срабатываия | //| одного из них | //| | //| - Пипсует сработавший ордер, изменив противоположный ордер на | //| уровень "плеча". Отлючает тралл, таким образом обазначив | //| границы торговли | //| | //| - При развороте цены и открытии ордера с "плечом", в | //| противоположную сторону ставит отложенный ордер с большим | //| плечом в обратную сторону по цене первого открытого ордера и | //| т.д.. (максимальный лот увеличивается на 2*128). | //| Создавая маятник. Пипсовка отключается. | //| | //| - Контролирует общую прибыль и убыток (автоматически | //| расчитывается процент прибыли от 2% до 0.2%). При наличии | //| прибыли закрывает все ордера. | //+------------------------------------------------------------------+ // ============== Параметры, настраиваимые пользователем ============= // ---------------- Параметры, общие для всех ордеров ---------------- int MAGIC=0; //У ордеров открытых вручную MAGIC=0. double Lot; //Лот для установки ордера. extern string text1="--- Выбор коэффициента увеличения лота ---"; extern double ruka=9; //Рука изменнения лота при отрицательном развитии событий. extern string text2="--- Выбор уровня риска ---"; extern string text3="risk = 0: уровень риска понижается, процент профита ниже"; extern string text4="Диапазон: 1% - 0.1%"; extern string text5="risk = 1: риск больше, процент профита выше"; extern string text6="Диапазон: 1.7% - 0.5%"; //extern double risk=1; extern string text7="--- Выбор расстояния между ордерами ---"; extern string text8="--- Если 0, подбирается автоматически (от 70-100 пунктов) ---"; extern double rastoyanie=0; extern string text9="--- Выбор расчёта профита ---"; extern string text10="--- Если procent=0, профит - процент от депозита ---"; extern string text11="--- Если procent=1, используем ТРЕЙЛИНГ СТОП ---"; extern double PP=100; extern double procent=1; extern string text12="--- Уровень ТРЕЙЛИНГ СТОП ---"; extern string text13="--- Если TRS=0, минимальный ---"; extern double TRS=0; extern string text14="--- Стартовый депозит ---"; extern double Start_Depo=1000; bool Auto=true; //Если вкл., автоматически рассчитывается размер лота, руки и //глобальных стопов. bool Ustan_BuyStop=true; //Можно ли ставиь Бай-Cтоп если в рынке такого у нас нет. bool Ustan_SellStop=true; //Можно ли ставиь Cелл-Cстоп если в рынке такого у нас нет. int st_Step; //Расстояние в пунктах от уровня текущей цены //до уорвня установки стопового ордера. int st_TrStop; //Трейлинг-Стоп стоповых ордеров. //Если = 0 то тарла нет и st_TrStep не важен. int st_TrStep; //Шаг трала стоповых ордеров. int PipsProfit; //Профит при пипсовке можно ставить 1, 2, 3, ... int Proskalz=5; //Проскальзывание в пунктах (нужно только когда PipsProfit>0). double pipsruka; //Пипсовка для ордеров с рукой. bool UseGlobalLevels=true; //Вкл./Выкл. отслежиания глобальных уровней прибыли/убытка //если UseGlobalLevels=false, то значенит //Global_TakeProfit и Global_StopLoss не важно. double Global_TakeProfit; //Глобальный Тейк-Профит (задаётся в процентах). double Global_StopLoss; //Глобальный Стоп-Лосс (задаётся в процентах). // ---------- Прочие переменные --------------------------------------- double lot,sts,PNT,NewPrice,Price,Balans,Free,pips,glp,klv,prb,sred_profit; double s_buy,s_sell,s_buystop,s_sellstop,s_buy_lot,s_buystop_lot,s_sell_lot,s_sellstop_lot; //открытые и отложенные ордера string SMB,com1,com2,com3,com4,com5; int MinLevel; bool fm,b,s; double prc2,prc1,prc08,prc06,prc04,prc02,l1,l2,raznost,t_raznost,L,H,sr,zzz; double risk,prov,price_buy,price_sell,uroven_stop,izm,buy_sell,lll,mmm,nnn,vvv,min_lot,lot_ruka,MRG,T,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,balanc1,balanc2,balanc3,balanc4,balanc5,balanc6,balanc7,balanc8,balanc9,balanc10; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //------------ Проверяем вкл. советника ------------------------------ if(!IsExpertEnabled())//если ложь {Alert("Ошибка! Не нажата кнопка *Советники*");} else {Comment("Как только цена изменится, Советник начнёт работу.");} //------------- Запоминаем начальные значения ------------------------ SMB=Symbol(); //Символ валютной пары PNT=MarketInfo(SMB,MODE_POINT); //Размер пункта в валюте котировки. //Для текущего инструмента хранится в предопределенной //переменной Point. MinLevel=MarketInfo(SMB,MODE_STOPLEVEL);//Минимально допустимый уровень //стоп-лосса/тейк-профита в пунктах //-------------------------------------------------------------------- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { ObjectCreate("label_object1", OBJ_LABEL, 0, 0, 0); ObjectSet("label_object1", OBJPROP_XDISTANCE, 500); ObjectSet("label_object1", OBJPROP_YDISTANCE, 17); ObjectSetText("label_object1", "Pendulum™ version 2_05_2",9, "Verdana", Red); //---- Проверка работы в автоматическом режиме if (Auto==true){Auto();} MinLevel=MarketInfo(SMB,MODE_STOPLEVEL);//Минимально допустимый уровень //стоп-лосса/тейк-профита в пунктах if (TRS==0){TRS=MinLevel;} //---- Определяем процент для глобального профита l1=lot;l2=Lot*ruka; raznost=l2-l1;//находим разность между стартовым лотом и лотом с рукой t_raznost=MarketInfo(SMB,MODE_TICKVALUE)*raznost; prc2=(AccountBalance()/100)*2; //2% prc1=(AccountBalance()/100)*1; //1% prc08=(AccountBalance()/100)*0.8; //0.8% prc06=(AccountBalance()/100)*0.6; //0.6% prc04=(AccountBalance()/100)*0.4; //0.4% prc02=(AccountBalance()/100)*0.2; //0.2% if(risk==1) { Global_TakeProfit=3; } if(risk==0) { Global_TakeProfit=0.1; } for(int i=1;i<=48;i++) { L=L+iLow(Symbol(),PERIOD_D1,1); H=H+iHigh(Symbol(),PERIOD_D1,1); } //---- sr=((H-L)/i)*100000; sr=(NormalizeDouble((sr),0)); PipsProfit=sr/10; PipsProfit=(NormalizeDouble((PipsProfit),0)); if(PipsProfit<1){PipsProfit=1;} st_Step=(sr-PipsProfit-Proskalz)/2; if(st_Step<1000){st_Step=1000;} //if(st_Step>100){st_Step=100;} st_TrStop=(sr-PipsProfit-Proskalz)/2; if(st_TrStop<1000){st_TrStop=1000;} //if(st_TrStop>100){st_TrStop=100;} if(rastoyanie>0){st_TrStop=rastoyanie;st_TrStop=rastoyanie;} vvv=st_TrStop; L=0;H=0; //---- Запоминаем начальные значения: lot=Lot; //Лота sts=st_TrStop; //Тралла стоповых ордеров Balans=AccountBalance(); Free=AccountEquity(); // pips=PipsProfit; glp=Balans+(Balans/100*Global_TakeProfit); glp=(NormalizeDouble((glp),2)); if(OrdersHistoryTotal()>0){chet();} //-------------------------------------------------------------------- //----------------- Считаем открытые и отложенные ордера ------------- for (int q=OrdersTotal(); q>=0; q--) { if (OrderSelect(q,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC)continue; { if(OrderType()==OP_BUY) {s_buy++; s_buy_lot=s_buy_lot+OrderLots();} if(OrderType()==OP_BUYSTOP) {s_buystop++; s_buystop_lot=s_buystop_lot+OrderLots();} if(OrderType()==OP_SELL) {s_sell++; s_sell_lot=s_sell_lot+OrderLots();} if(OrderType()==OP_SELLSTOP) {s_sellstop++;s_sellstop_lot=s_sellstop_lot+OrderLots();} } } } //------- Проверяем необходимость выставления стартовых ордеров ------ if (s_buy+s_sell==0) {ustorder();} //------- Проверяем необходимость тралла стартовых ордеров ----------- if (s_buy+s_sell>0){st_TrStop=0;com1="Тралл стоповых ордеров - выкл. (";} //Если есть открытый ордер выкл. тралл стоповых if(st_TrStop>0){tr_stop();com1="Тралл стоповых ордеров - вкл. (";}//Переходим к траллу //------------ Проверяем необходимость увелечения плеча -------------- //- 1 if (s_buy+s_sell==1){risk=1;} //- 2 if (s_buy+s_sell==2){Global_TakeProfit=1;} //- 3 if (s_buy+s_sell==3){Global_TakeProfit=1;} //- 4 if (s_buy+s_sell==4){Global_TakeProfit=1;} //- 5 if (s_buy+s_sell>4){Global_TakeProfit=0.05;} if (s_buy+s_sell>4 && AccountBalance()>50000){Global_TakeProfit=0.005;} if (s_buy+s_sell>2 && AccountBalance()>10000){Global_TakeProfit=0.0005;} if (s_buy+s_sell>2 && AccountBalance()>20000){Global_TakeProfit=0.00025;} if (s_buy+s_sell>2 && AccountBalance()>30000){Global_TakeProfit=0.0001;} //------------------------------------------ //- 1 if (s_buy+s_sell==1){plecho1();} //- 2 if (s_buy+s_sell==2){plecho2();} //- 3 if (s_buy+s_sell==3){plecho3();} //- 4 if (s_buy+s_sell==4){plecho4();} //- 5 if (s_buy+s_sell==5){plecho5();} //- 6 if (s_buy+s_sell==6){plecho6();} //- 7 //if (s_buy+s_sell==7){plecho7();} //- 8 //if (s_buy+s_sell==8){plecho8();} //- 9 //if (s_buy+s_sell==9){plecho9();} //- 10 //if (s_buy+s_sell==10){plecho10();} //--- Если есть необходимость, кол-во колебаний маятника можно увеличить //--------------- Проверяем вкл/выкл пипсовки ------------------------ if (s_buy+s_sell>1 && UseGlobalLevels==true){PipsProfit=0;com2="Пипсовка - выкл. (";} if (s_buy+s_sell>1 && UseGlobalLevels==false){pips();com2="Пипсовка - вкл. (";} if (s_buy+s_sell==1){pips();com2="Пипсовка - вкл. (";} if (s_buy+s_sell==0){com2="Пипсовка - вкл. (";} if (PipsProfit==0 || PipsProfit>4)com3=" пунктов"; if (PipsProfit==1)com3=" пункт"; if (PipsProfit>2 && PipsProfit<5)com3=" пунктa"; //-------------- Расчитываем стопы ----------------------------------- if(s_buy_lot-s_sell_lot>0) { buy_sell=MathAbs(s_buy_lot-s_sell_lot); izm=MarketInfo(SMB,MODE_TICKVALUE)*buy_sell; uroven_stop=zzz/izm; uroven_stop=(NormalizeDouble((uroven_stop),0)); // for(int wy=OrdersTotal();wy>=0;wy--) // { // if (OrderSelect(wy,SELECT_BY_POS,MODE_TRADES)==true) // { // if(OrderType()==OP_BUY) // {price_buy=OrderOpenPrice(); // OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderOpenPrice()+(uroven_stop)*Point,0);} // if(OrderType()==OP_SELL) // {price_sell=OrderOpenPrice(); // OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+(uroven_stop+vvv)*Point,0,0);} // } // } } if(s_buy_lot-s_sell_lot<0) { buy_sell=MathAbs(s_buy_lot-s_sell_lot); izm=MarketInfo(SMB,MODE_TICKVALUE)*buy_sell; uroven_stop=zzz/izm; uroven_stop=(NormalizeDouble((uroven_stop),0)); // for(int wyi=OrdersTotal();wyi>=0;wyi--) // { // if (OrderSelect(wyi,SELECT_BY_POS,MODE_TRADES)==true) // { // if(OrderType()==OP_BUY) // {price_buy=OrderOpenPrice(); // OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-(uroven_stop+vvv)*Point,0,0);} // if(OrderType()==OP_SELL) // {price_sell=OrderOpenPrice(); // OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderOpenPrice()-(uroven_stop)*Point,0);} // } // } } //--------------- Проверяем глобальные уровни ------------------------ if (s_buy+s_sell>0 && s_buy+s_sell<11 && UseGlobalLevels==true && (Free-Balans)>=(Balans/100*Global_TakeProfit)){glob_profit();} if ((Balans-Free)>=((Balans-Start_Depo)/100*PP)){glob_stop();} //----------------- Выводим информацию ------------------------------- if(Lot>0) { zzz=glp-AccountEquity(); Comment("Открытых ордеров для ",SMB,":","\n", "buy - ",s_buy," (",s_buy_lot,")"," sell - ",s_sell," (",s_sell_lot,")","\n", "buystop - ",s_buystop," (",s_buystop_lot,")"," sellstop - ",s_sellstop," (",s_sellstop_lot,")","\n", com1,vvv,")","\n", "--- Глобальный профит ---","\n",glp," ",AccountCurrency()," (",Global_TakeProfit," %)","\n","Осталось до уровня ",zzz," ",AccountCurrency(), " (",uroven_stop," пункта(ов)","\n","Кол-во сделок - ",klv,"\n","Прибыль - ",prb," ",AccountCurrency(),"\n", "Средняя прибыль - ",sred_profit," ",AccountCurrency(),"\n"); } if(Lot==0) { balanc1=(NormalizeDouble((balanc1),2)); Comment(com4,"\n",com5,"\n","Минимум - ",balanc1," ",AccountCurrency()); } //----------------- Обнуляем счетчики -------------------------------- if (s_buy+s_sell==1) {TRS=200;} if (s_buy+s_sell> 1) {TRS=200;} s_buy=0;s_buystop=0;s_sell=0;s_sellstop=0;s_buy_lot=0;s_buystop_lot=0;s_sell_lot=0;s_sellstop_lot=0; st_TrStop=sts;Lot=lot;PipsProfit=pips;sred_profit=0; sred_profit=prb/klv; sred_profit=(NormalizeDouble((sred_profit),2)); klv=0;prb=0;price_buy=0;price_sell=0; return(0); } //==================================================================== //----------------- Ставим стартовые отложенные ордера --------------- void ustorder() { if(s_sellstop==0 && st_Step>=MinLevel) { NewPrice=Bid-st_Step*Point; fm=OrderSend(SMB,OP_SELLSTOP,Lot,NewPrice,3,0,0,NULL,MAGIC,0,Red); PlaySound("Wait.wav"); } if(s_buystop==0 && st_Step>=MinLevel) { NewPrice=Ask+st_Step*Point; fm=OrderSend(SMB,OP_BUYSTOP,Lot,NewPrice,3,0,0,NULL,MAGIC,0,Blue); PlaySound("Wait.wav"); } } //----------------- Траллим стоповый ордер --------------------------- void tr_stop() { for(int w=OrdersTotal();w>=0;w--) { if (OrderSelect(w,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderType()==OP_BUYSTOP && OrderOpenPrice()>Ask+(st_TrStop+st_TrStep)*Point) {NewPrice=Ask+st_TrStop*Point;fm=OrderModify(OrderTicket(),NewPrice,0,0,0); PlaySound("Expert.wav");} if(OrderType()==OP_SELLSTOP && OrderOpenPrice()=0;e--) // { // if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true) // { // if(OrderType()==OP_BUY && OrderOpenPrice()Ask+(PipsProfit)*Point) // {OrderClose(OrderTicket(),OrderLots(),Bid,10);zachistka();} // } // } } //------------------------ Убираем лишьние ордера -------------------- void zachistka() { for(int e=OrdersTotal();e>=0;e--) { if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true) { if (OrderLots()>lot){OrderDelete(OrderTicket());} if(OrderProfit()<0){OrderClose(OrderTicket(),OrderLots(),Bid,5);PlaySound("Error.wav");} if(OrderProfit()<0){OrderClose(OrderTicket(),OrderLots(),Bid,5);PlaySound("Error.wav");} // for(int we=OrdersTotal();we>=0;we--) // { // if (OrderSelect(we,SELECT_BY_POS,MODE_TRADES)==true) // { // if(OrderType()==OP_BUY && OrderOpenPrice()Ask+(PipsProfit+Proskalz)*Point) // {OrderClose(OrderTicket(),OrderLots(),Bid,3);} // } // } } } } //------------------ Работа с глобальными уровнями ------------------- //==================================================================== void glob_profit() { TRS=70; if (procent==0) { for (int i=OrdersTotal();i>=0; i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderType()==OP_BUY){OrderClose(OrderTicket(),OrderLots(),Bid,3);PlaySound("Error.wav");} if(OrderType()==OP_SELL){OrderClose(OrderTicket(),OrderLots(),Ask,3);PlaySound("Error.wav");} } } zachistka(); } if (procent==1) { for (int it=OrdersTotal();it>=0; it--) { if (OrderSelect(it,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderProfit()<0){OrderClose(OrderTicket(),OrderLots(),Bid,7);PlaySound("Error.wav");} if(OrderProfit()<0){OrderClose(OrderTicket(),OrderLots(),Ask,7);PlaySound("Error.wav");} } } for (int eit=OrdersTotal();eit>=0; eit--) { if (OrderSelect(eit,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderProfit()>0 && OrderType()==OP_BUY && Bid-OrderOpenPrice()>TRS*Point) {if(OrderStopLoss()0 && OrderType()==OP_SELL && OrderOpenPrice()-Ask>TRS*Point) {if(OrderStopLoss()>Ask+TRS*Point || OrderStopLoss()==0) {OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TRS*Point,0,0,CLR_NONE);PlaySound("Error.wav");} } if(OrderProfit()<0){OrderClose(OrderTicket(),OrderLots(),Bid,3);PlaySound("Error.wav");} } } } zachistka(); } //==================================================================== void glob_stop() { for (int i=OrdersTotal();i>=0; i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderType()==OP_BUY) {OrderClose(OrderTicket(),OrderLots(),Bid,3);} if(OrderType()==OP_SELL){OrderClose(OrderTicket(),OrderLots(),Ask,3);} } } zachistka(); } //-------------------------- Плечо х1 -------------------------------- void plecho1() {//Определяем в какую сторону увеличивать for (int e=OrdersTotal();e>=0;e--) { if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true) { if (OrderType()==OP_BUYSTOP && OrderLots()=0;e--) { if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderLots()==lot*ruka*2 && OrderType()==OP_BUYSTOP){return(0);} if(OrderLots()==lot*ruka*2 && OrderType()==OP_SELLSTOP){return(0);} if(OrderLots()==lot && OrderType()==OP_BUY){Price=OrderOpenPrice();Lot=lot*ruka*2; fm=OrderSend(SMB,OP_BUYSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,Lime);PlaySound("Ok.wav");} if(OrderLots()==lot && OrderType()==OP_SELL){Price=OrderOpenPrice();Lot=lot*ruka*2; fm=OrderSend(SMB,OP_SELLSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,Orange);PlaySound("Ok.wav");} } } } //-------------------------- Плечо х3 -------------------------------- void plecho3() { for (int e=OrdersTotal();e>=0;e--) { if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderLots()==lot*ruka*4 && OrderType()==OP_BUYSTOP){return(0);} if(OrderLots()==lot*ruka*4 && OrderType()==OP_SELLSTOP){return(0);} if(OrderLots()==lot*ruka && OrderType()==OP_BUY){Price=OrderOpenPrice();Lot=lot*ruka*4; fm=OrderSend(SMB,OP_BUYSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,Lime);PlaySound("Ok.wav");} if(OrderLots()==lot*ruka && OrderType()==OP_SELL){Price=OrderOpenPrice();Lot=lot*ruka*4; fm=OrderSend(SMB,OP_SELLSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,Orange);PlaySound("Ok.wav");} } } } //-------------------------- Плечо х4 -------------------------------- void plecho4() { for (int e=OrdersTotal();e>=0;e--) { if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderLots()==lot*ruka*8 && OrderType()==OP_BUYSTOP){return(0);} if(OrderLots()==lot*ruka*8 && OrderType()==OP_SELLSTOP){return(0);} if(OrderLots()==lot*ruka*2 && OrderType()==OP_BUY){Price=OrderOpenPrice();Lot=lot*ruka*8; fm=OrderSend(SMB,OP_BUYSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,Lime);PlaySound("Ok.wav");} if(OrderLots()==lot*ruka*2 && OrderType()==OP_SELL){Price=OrderOpenPrice();Lot=lot*ruka*8; fm=OrderSend(SMB,OP_SELLSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,Orange);PlaySound("Ok.wav");} } } } //-------------------------- Плечо х5 -------------------------------- void plecho5() { for (int e=OrdersTotal();e>=0;e--) { if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderLots()==lot*ruka*16 && OrderType()==OP_BUYSTOP){return(0);} if(OrderLots()==lot*ruka*16 && OrderType()==OP_SELLSTOP){return(0);} if(OrderLots()==lot*ruka*4 && OrderType()==OP_BUY){Price=OrderOpenPrice();Lot=lot*ruka*16; fm=OrderSend(SMB,OP_BUYSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,Lime);PlaySound("Ok.wav");} if(OrderLots()==lot*ruka*4 && OrderType()==OP_SELL){Price=OrderOpenPrice();Lot=lot*ruka*16; fm=OrderSend(SMB,OP_SELLSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,Orange);PlaySound("Ok.wav");} } } } //-------------------------- Плечо х6 -------------------------------- void plecho6() { for (int e=OrdersTotal();e>=0;e--) { if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderLots()==lot*ruka*32 && OrderType()==OP_BUYSTOP){return(0);} if(OrderLots()==lot*ruka*32 && OrderType()==OP_SELLSTOP){return(0);} if(OrderLots()==lot*ruka*8 && OrderType()==OP_BUY){Price=OrderOpenPrice();Lot=lot*ruka*32; fm=OrderSend(SMB,OP_BUYSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,Lime);PlaySound("Ok.wav");} if(OrderLots()==lot*ruka*8 && OrderType()==OP_SELL){Price=OrderOpenPrice();Lot=lot*ruka*32; fm=OrderSend(SMB,OP_SELLSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,Orange);PlaySound("Ok.wav");} } } } //-------------------------- Плечо х7 -------------------------------- //void plecho7() //{ // for (int e=OrdersTotal();e>=0;e--) // { // if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true) // { // if(OrderLots()==lot*ruka*64 && OrderType()==OP_BUYSTOP){return(0);} // if(OrderLots()==lot*ruka*64 && OrderType()==OP_SELLSTOP){return(0);} // if(OrderLots()==lot*ruka*16 && OrderType()==OP_BUY){Price=OrderOpenPrice();Lot=lot*ruka*64; // fm=OrderSend(SMB,OP_BUYSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);} // if(OrderLots()==lot*ruka*16 && OrderType()==OP_SELL){Price=OrderOpenPrice();Lot=lot*ruka*64; // fm=OrderSend(SMB,OP_SELLSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);} // } // } //} //-------------------------- Плечо х8 -------------------------------- //void plecho8() //{ // for (int e=OrdersTotal();e>=0;e--) // { // if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true) // { // if(OrderLots()==lot*ruka*128 && OrderType()==OP_BUYSTOP){return(0);} // if(OrderLots()==lot*ruka*128 && OrderType()==OP_SELLSTOP){return(0);} // if(OrderLots()==lot*ruka*32 && OrderType()==OP_BUY){Price=OrderOpenPrice();Lot=lot*ruka*128; // fm=OrderSend(SMB,OP_BUYSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);} // if(OrderLots()==lot*ruka*32 && OrderType()==OP_SELL){Price=OrderOpenPrice();Lot=lot*ruka*128; // fm=OrderSend(SMB,OP_SELLSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);} // } // } //} //-------------------------- Плечо х9 -------------------------------- //void plecho9() //{ // for (int e=OrdersTotal();e>=0;e--) // { // if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true) // { // if(OrderLots()==lot*ruka*512 && OrderType()==OP_BUYSTOP){return(0);} // if(OrderLots()==lot*ruka*512 && OrderType()==OP_SELLSTOP){return(0);} // if(OrderLots()==lot*ruka*64 && OrderType()==OP_BUY){Price=OrderOpenPrice();Lot=lot*ruka*512; // fm=OrderSend(SMB,OP_BUYSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);} // if(OrderLots()==lot*ruka*64 && OrderType()==OP_SELL){Price=OrderOpenPrice();Lot=lot*ruka*512; // fm=OrderSend(SMB,OP_SELLSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);} // } // } //} //-------------------------- Плечо х10 ------------------------------- //void plecho10() //{ // for (int e=OrdersTotal();e>=0;e--) // { // if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true) // { // if(OrderLots()==lot*ruka*1024 && OrderType()==OP_BUYSTOP){return(0);} // if(OrderLots()==lot*ruka*1024 && OrderType()==OP_SELLSTOP){return(0);} // if(OrderLots()==lot*ruka*128 && OrderType()==OP_BUY){Price=OrderOpenPrice();Lot=lot*ruka*1024; // fm=OrderSend(SMB,OP_BUYSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);} // if(OrderLots()==lot*ruka*128 && OrderType()==OP_SELL){Price=OrderOpenPrice();Lot=lot*ruka*1024; // fm=OrderSend(SMB,OP_SELLSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);} // } // } //} //-------------------------- Счетчик --------------------------------- void chet() { for (int r=0; r<=OrdersHistoryTotal(); r++) { if(OrderSelect(r,SELECT_BY_POS,MODE_HISTORY)==true) if(OrderClosePrice()>0) prb=prb+OrderProfit()+OrderSwap(); if(OrderClosePrice()>0 && (OrderProfit()+OrderSwap())>0)klv=klv+1; if(OrderClosePrice()>0 && (OrderProfit()+OrderSwap())<0)klv=klv+1; } prb=(NormalizeDouble((prb),2)); } //------------------- Расчет лота и руки ----------------------------- //-------------------------------------------------------------------- void Auto() { min_lot=MarketInfo(SMB,MODE_MINLOT); //----- min_lot=MarketInfo(SMB,MODE_MINLOT); double min_prise=MarketInfo(SMB,MODE_TICKVALUE); Lot=(AccountFreeMargin()/min_prise)/2800;double l=Lot; Lot=NormalizeDouble((Lot),2); } //+------------------------------------------------------------------+