//+------------------------------------------------------------------+ //| i-UrovenZero-Uni.mq4 | //| Bor-ix i Kirill + помощь d_tom i Don_Leone | //+------------------------------------------------------------------+ #property copyright "Bor-ix i Kirill" #property indicator_chart_window //Индикатор рисует два уровня на графике торгуемой валюты, при достижении которого ценой //все открытые позиции в сумме уйдут в такой минус, что свободная маржа станет равна нулю (уровень ZeroMargin) //и при достижения ценой уровня, при котором все открытые ордера в сумме будут равны нулю (уровень ZeroProfit)... //Работает только при торговле по одной валюте. //Отложенные ордера не принимаются в расчёт //Варианты режима расчета могут принимать следующие значения: //v.0 - "Нереализованные прибыли/убытки не используются. Свободная маржа не зависит от текущей цены". //v.1 - "При расчете свободных средств используется как нереализованная прибыль, так и убыток по открытым позициям на текущем счете". //v.2 - "Нереализованные убытки не используются. Свободная маржа не уменьшается при изменении тек. цены." //v.3 - "При расчете используется только значение убытка, текущая прибыль по открытым позициям не учитывается. Будет рассчитано два уровня". extern bool INFO_COMENT=false; extern string CALC_Bar_0 = "=== Панель Расчетов ==="; extern bool CALC_0 = false; extern double Lots_R=1.0; // вводим значение объема лота extern double Rastojanie_R=50.0; // вводим значение расстояния в пунктах extern double Pribyl_R=0.0; // вводим значение прибыли/убытка в центах extern color cvet_CALC_0 = Violet; //цвет основной надписи панели extern color cvet_CALC_R = Orange; //цвет надписи результата расчетов extern int Ugol_0 = 2; // положение на графике extern int MP_X_0 = 10; // значение координат по горизонтали extern int MP_Y_0 = 10; // значение координат по вертикали extern string Shrift_Bar = "=== Размер Шрифта ==="; extern int RazmerShrifta = 9; extern string MetodR_Block = "=== Вариант Расчета Безубытка ==="; extern bool MetodRBezubytkaNew = true; // true - новый метод расчета; false - старый метод расчета без свопов и комиссий; extern bool MetodRBNew_Sw_Com = true; // true - со свопами и комиссиями; false - без свопов и комиссий; extern string ZeroProfit_Block = "=== Парам. Общего Безубытка ==="; extern bool ZeroProfit = true; extern color Colour_ZP = DarkTurquoise; extern int Style_ZP = 1; //0,1,2,3,4 extern int Width_ZP = 2; //0,1,2,3,4 extern string ZeroBUY_Block = "=== Парам.Безубытка для BUY ==="; extern bool ZeroBUY = true; extern color Colour_ZB = DarkTurquoise; extern int Style_ZB = 2; //0,1,2,3,4 extern int Width_ZB = 1; //0,1,2,3,4 extern string ZeroBUYP_Block="=== Уров.Прибыли по ТР для BUY ==="; extern bool ZeroBUYP = false; extern int PlusB = 50; extern color Colour_ZB_P = MediumSeaGreen; extern int Style_ZB_P = 2; //0,1,2,3,4 extern int Width_ZB_P = 1; //0,1,2,3,4 extern string ZeroSELL_Block = "=== Парам.Безубытка для SELL ==="; extern bool ZeroSELL = true; extern color Colour_ZS = DarkTurquoise; extern int Style_ZS = 2; //0,1,2,3,4 extern int Width_ZS = 1; //0,1,2,3,4 extern string ZeroSELLP_Block="=== Уров.Прибыли по ТР для SELL ==="; extern bool ZeroSELLP = false; extern int PlusS = 50; extern color Colour_ZS_P = MediumSeaGreen; extern int Style_ZS_P = 2; //0,1,2,3,4 extern int Width_ZS_P = 1; //0,1,2,3,4 extern string ZeroMargin_Block = "=== Парам. Нулевой Маржи ==="; extern bool ZeroMargin = true; extern color Colour_ZM = Orange; extern int Style_ZM = 0; //0,1,2,3,4 extern int Width_ZM = 2; //0,1,2,3,4 extern string ZeroMarginPr_Block = "=== Парам. % Нулевой Маржи ==="; extern bool ZeroMarginPr = true; extern int Procent_ZM = 150; // проценты от общего уровня для предупреждения extern int Style_ZM_Procent = 2; //0,1,2,3,4 extern int Width_ZM_Procent = 1; //0,1,2,3,4 extern string Zona_LOCK_Param = "=== Парам. Зоны LOCK ==="; extern bool Cvet_zony_LOCK_p = false; extern color Cvet_zony_LOCK=LightYellow; //C'70,100,00'; // цвет зоны LOCK extern string ZeroFull_Block = "=== Парам. Полного СЛИВА ==="; extern bool ZeroFull = true; extern color Colour_ZF = Red; extern int Style_ZF = 0; //0,1,2,3,4 extern int Width_ZF = 2; //0,1,2,3,4 extern string ZeroFull_Pr_Block = "=== StopOut/Принуд.Закр.Ордеров ==="; extern bool ZeroFull_Pr = true; extern int Style_ZF_Procent = 2; //0,1,2,3,4 extern int Width_ZF_Procent = 1; //0,1,2,3,4 extern string Zona_dDZ_Param = "=== Парам. Мертвой Зоны ==="; extern bool Cvet_zony_dDZ_f = false; extern color Cvet_zony_dDZ=LightPink; //C'70,00,00'; // цвет зоны DEAD ZONE extern string INFO_Bar_1 = "=== Панель Информации 1 ==="; extern bool INFO_1 = true; extern int Ugol_1 = 3; // положение на графике extern int MP_X = 10; // значение координат по горизонтали extern int MP_Y = 10; // значение координат по вертикали extern string INFO_Bar_2 = "=== Панель Информации 2 ==="; extern bool INFO_2 = false; extern color cvet_dop_info2 = Silver; // цвет инфо. панели 2 extern int Ugol_2 = 3; // положение на графике extern int MP_X_2 = 10; // значение координат по горизонтали extern int MP_Y_2 = 10; // значение координат по вертикали extern string INFO_Bar_3 ="=== Панель Информации 3 ==="; extern int Ugol_3=1; // положение на графике инфо. панели 3 extern string INFO_Bar_4 = "=== Панель Информации 4 ==="; extern bool INFO_4 = false; extern color cvet_dop_info4 = Tan; // цвет инфо. панели 4 extern int Ugol_4 = 3; // положение на графике extern int MP_X_4 = 10; // значение координат по горизонтали extern int MP_Y_4 = 10; // значение координат по вертикали extern string Sound_Bar = "=== Воспроизведение Звука ==="; extern bool SoundPlay_Menshe = true; extern string Sound_Alert = "Alert.wav"; extern bool SoundPlay_Bolshe = false; extern string Sound_OK = "clock.wav"; extern string Urov_BS_SS_Bar = "=== Уровни Buy и Sell Stop ==="; extern bool Urov_BS_SS = false; extern color Colour_SB = LightPink; extern int Style_SB = 2; extern int Width_SB = 0; extern color Colour_SS = LightSkyBlue; extern int Style_SS = 2; extern int Width_SS = 1; extern string URLock_Bar = "=== Уровень Равного Лока ==="; extern bool U_R_Lock = true; extern color Colour_URLock = DodgerBlue; extern int Style_URLock = 2; //0,1,2,3,4 extern int Width_URLock = 1; //0,1,2,3,4 string comment=""; //---------------------------------------------------------------------------------------------// //стирание нарисованных объектов после закрытия индикатора //---------------------------------------------------------------------------------------------// int deinit() { ObjectDelete("Уровень Нулевой Маржи"); ObjectDelete("Уровень СЛИВА"); ObjectDelete("LOCK"); ObjectDelete("DEAD ZONE"); ObjectDelete("DEAD ZONE ="); ObjectDelete("DEAD ZONE = 2"); ObjectDelete("GAME OVER"); ObjectDelete("GAME OVER 2"); ObjectDelete("GAME OVER 3"); ObjectDelete("Проценты до Уровня Нулевой Маржи"); ObjectDelete("Уровень Принудительного Закрытия Ордеров ДЦ / StopOut"); ObjectDelete("Общий Уровень Безубытка"); ObjectDelete("Уровень Безубытка BUY"); ObjectDelete("Уровень+ от Безубытка BUY"); ObjectDelete("Прибыль - Расчет BUY"); ObjectDelete("Уровень Безубытка SELL"); ObjectDelete("Уровень+ от Безубытка SELL"); ObjectDelete("Прибыль - Расчет SELL"); ObjectDelete("Растояние между BUY = 0 и SELL = 0"); ObjectDelete("Расстояние до Общего Уровня Безубытка - инфо"); ObjectDelete("Общий Уровень Безубытка - инфо"); ObjectDelete("Расстояние до Нулевой Маржи - инфо"); ObjectDelete("Уровень Нулевой Маржи - инфо"); ObjectDelete("Уровень СЛИВА - инфо"); ObjectDelete("Мертвая Зона - инфо"); ObjectDelete("Мертвая Зона - цвет"); ObjectDelete("Зона LOCK - цвет"); ObjectDelete("Уровень Принудительного Закрытия Ордеров ДЦ / StopOut - инфо"); ObjectDelete("Можно купить лотов - инфо"); ObjectDelete("Залог за минимальный лот - инфо"); ObjectDelete("Минимальный лот - инфо"); ObjectDelete("Максимальный лот - инфо"); ObjectDelete("Стоимость 1 пп для 1 лота - инфо"); ObjectDelete("Спред, пп - инфо"); ObjectDelete("Своп BUY, пп - инфо"); ObjectDelete("Своп SELL, пп - инфо"); ObjectDelete("Прибыль - Расчет"); ObjectDelete("Расстояние - Расчет"); ObjectDelete("Объем Лота - Расчет"); ObjectDelete("Панель Расчета - Расчет"); ObjectDelete("Комментарии - Расчет"); ObjectDelete("Общ.текущ.прибыль - инфо"); ObjectDelete("Приб.от.SELL.сделок - инфо"); ObjectDelete("Приб.от.BUY.сделок - инфо"); ObjectDelete("Уров.SELL=0 - инфо"); ObjectDelete("Уров.BUY=0 - инфо"); ObjectDelete("Объем.SELL.лотов - инфо"); ObjectDelete("Объем.BUY.лотов - инфо"); ObjectDelete("Коллич.SELL - инфо"); ObjectDelete("Коллич.BUY - инфо"); ObjectDelete("ZeroLevel"); ObjectDelete("ZeroLevel_BUY"); ObjectDelete("ZeroLevel_SELL"); ObjectDelete("не ниже для Buy.Stop"); ObjectDelete("не выше для Sell.Stop"); ObjectDelete("Уровень Равного Лока"); return(0); } //---------------------------------------------------------------------------------------------// int start() { //---------------------------------------------------------------------------------------------// //стирание нарисованных объектов //---------------------------------------------------------------------------------------------// ObjectDelete("Уровень Нулевой Маржи"); ObjectDelete("Уровень СЛИВА"); ObjectDelete("LOCK"); ObjectDelete("DEAD ZONE"); ObjectDelete("DEAD ZONE ="); ObjectDelete("DEAD ZONE = 2"); ObjectDelete("GAME OVER"); ObjectDelete("GAME OVER 2"); ObjectDelete("GAME OVER 3"); ObjectDelete("Проценты до Уровня Нулевой Маржи"); ObjectDelete("Уровень Принудительного Закрытия Ордеров ДЦ / StopOut"); ObjectDelete("Общий Уровень Безубытка"); ObjectDelete("Уровень Безубытка BUY"); ObjectDelete("Уровень+ от Безубытка BUY"); ObjectDelete("Прибыль - Расчет BUY"); ObjectDelete("Уровень Безубытка SELL"); ObjectDelete("Уровень+ от Безубытка SELL"); ObjectDelete("Прибыль - Расчет SELL"); ObjectDelete("Растояние между BUY = 0 и SELL = 0"); ObjectDelete("Расстояние до Общего Уровня Безубытка - инфо"); ObjectDelete("Общий Уровень Безубытка - инфо"); ObjectDelete("Расстояние до Нулевой Маржи - инфо"); ObjectDelete("Уровень Нулевой Маржи - инфо"); ObjectDelete("Уровень СЛИВА - инфо"); ObjectDelete("Мертвая Зона - инфо"); ObjectDelete("Мертвая Зона - цвет"); ObjectDelete("Зона LOCK - цвет"); ObjectDelete("Уровень Принудительного Закрытия Ордеров ДЦ / StopOut - инфо"); ObjectDelete("Можно купить лотов - инфо"); ObjectDelete("Залог за минимальный лот - инфо"); ObjectDelete("Минимальный лот - инфо"); ObjectDelete("Максимальный лот - инфо"); ObjectDelete("Стоимость 1 пп для 1 лота - инфо"); ObjectDelete("Спред, пп - инфо"); ObjectDelete("Своп BUY, пп - инфо"); ObjectDelete("Своп SELL, пп - инфо"); ObjectDelete("Прибыль - Расчет"); ObjectDelete("Расстояние - Расчет"); ObjectDelete("Объем Лота - Расчет"); ObjectDelete("Панель Расчета - Расчет"); ObjectDelete("Комментарии - Расчет"); ObjectDelete("Общ.текущ.прибыль - инфо"); ObjectDelete("Приб.от.SELL.сделок - инфо"); ObjectDelete("Приб.от.BUY.сделок - инфо"); ObjectDelete("Уров.SELL=0 - инфо"); ObjectDelete("Уров.BUY=0 - инфо"); ObjectDelete("Объем.SELL.лотов - инфо"); ObjectDelete("Объем.BUY.лотов - инфо"); ObjectDelete("Коллич.SELL - инфо"); ObjectDelete("Коллич.BUY - инфо"); ObjectDelete("ZeroLevel"); ObjectDelete("ZeroLevel_BUY"); ObjectDelete("ZeroLevel_SELL"); ObjectDelete("не ниже для Buy.Stop"); ObjectDelete("не выше для Sell.Stop"); ObjectDelete("Уровень Равного Лока"); //---------------------------------------------------------------------------------------------// //начло кода - личная информация //---------------------------------------------------------------------------------------------// int i,total= OrdersTotal(); double lots=0.0,shift,shift_ZLB,shift_ZLS; Comment_("----------------------------"); Comment_(" "+AccountName()); string type="Реал"; if(IsDemo()) type="Демо"; Comment_(" Тип счета: "+type+" - №: "+(string)AccountNumber()); Comment_(" Плечо: 1/"+(string)AccountLeverage()); Comment_("----------------------------"); //---------------------------------------------------------------------------------------------// //константы //---------------------------------------------------------------------------------------------// double minlot = MarketInfo(Symbol(),MODE_MINLOT); //размер минимального лота double maxlot = MarketInfo(Symbol(),MODE_MAXLOT); //размер максимального лота double lot_cena = MarketInfo(Symbol(),MODE_MARGINREQUIRED); //цена 1.0 лота double lot_zalog = MarketInfo(Symbol(),MODE_MARGININIT); //залог за 1.0 лот double min_balans = (lot_cena + lot_zalog) * minlot; //расчет стоимости минимального лота double lotsss = AccountFreeMargin()*minlot/min_balans; //количество лотов которое можно купить double pp_cena = MarketInfo(Symbol(),MODE_TICKVALUE); //цена одного пункта double swap_long = MarketInfo(Symbol(),MODE_SWAPLONG); //своп для BUY в пунктах double swap_short = MarketInfo(Symbol(),MODE_SWAPSHORT); //своп для SELL в пунктах double spread = MarketInfo(Symbol(),MODE_SPREAD); //размер спрэда double sredsva = AccountEquity(); //имеющиеся на счету средства double Znakov = MathPow ( 10 , MarketInfo(Symbol(),MODE_DIGITS)); //кооэф.умножения для знаков валютной пары //---------------------------------------------------------------------------------------------// //панель "GAME OVER" //---------------------------------------------------------------------------------------------// if(AccountBalance()=0; i_b--) { if(OrderSelect(i_b,SELECT_BY_POS)) { if(OrderSymbol()!=Symbol()) continue; if(OrderType()==OP_BUY) { BuyLots_b=BuyLots_b+OrderLots(); if(MetodRBNew_Sw_Com==true) BuyProfit_b=BuyProfit_b+OrderProfit()+OrderCommission()+OrderSwap(); else BuyProfit_b=BuyProfit_b+OrderProfit(); } if(OrderType()==OP_SELL) { SellLots_b=SellLots_b+OrderLots(); if(MetodRBNew_Sw_Com==true) SellProfit_b=SellProfit_b+OrderProfit()+OrderCommission()+OrderSwap(); else SellProfit_b=SellProfit_b+OrderProfit(); } } } double TickValue_b=MarketInfo(Symbol(),MODE_TICKVALUE); if(BuyLots_b>0) price_bzu_B=Bid -(BuyProfit_b/(TickValue_b*BuyLots_b)*Point); //уровень безубытка для всех BUY ордеров else price_bzu_B=0; if(SellLots_b>0) price_bzu_S=Ask+(SellProfit_b/(TickValue_b*SellLots_b)*Point); //уровень безубытка для всех SELL ордеров else price_bzu_S=0; if((BuyLots_b-SellLots_b)>0) price_bzu_o=Bid -((BuyProfit_b+SellProfit_b)/(TickValue_b *(BuyLots_b-SellLots_b))*Point); if((SellLots_b-BuyLots_b)>0) price_bzu_o=Ask+((BuyProfit_b+SellProfit_b)/(TickValue_b *(SellLots_b-BuyLots_b))*Point); } else { //---------------------------------------------------------------------------------------------// //расчет общего безубытка - расчет безубытка #1 - old //---------------------------------------------------------------------------------------------// double lots_bzu= 0; double sum_bzu = 0; for(int i_bzu=0; i_bzuProcent_ZM) PlaySound(Sound_OK); } if(OMarginLevel<=Procent_ZM) { if(OMarginLevel>100) { ObjectCreate("LOCK",OBJ_LABEL,0,0,0); ObjectSetText("LOCK","LOCK",RazmerShrifta*5,"Verdana",Colour_ZM); ObjectSet("LOCK",OBJPROP_CORNER,Ugol_3); ObjectSet("LOCK",OBJPROP_XDISTANCE,MP_X); ObjectSet("LOCK",OBJPROP_YDISTANCE,MP_Y); } } if(OMarginLevel<=100) { ObjectCreate("DEAD ZONE",OBJ_LABEL,0,0,0); ObjectSetText("DEAD ZONE","DEAD ZONE",(int)(RazmerShrifta*2.3),"Verdana",Colour_ZF); ObjectSet("DEAD ZONE",OBJPROP_CORNER,Ugol_3); ObjectSet("DEAD ZONE",OBJPROP_XDISTANCE,MP_X+4); ObjectSet("DEAD ZONE",OBJPROP_YDISTANCE,MP_Y+RazmerShrifta*2.3); } //---------------------------------------------------------------------------------------------// //% - при котором ДЦ закрывает сделки = Stop Out //---------------------------------------------------------------------------------------------// double d_pZF,ur_pZF,Afto_Procent_ZF; Afto_Procent_ZF=AccountStopoutLevel(); //Stop Out (принудительное закрытие позиций) d_pZF=d_shift_3-dDZ*Afto_Procent_ZF/100; //расстояние до уровня закрытия ДЦ ur_pZF=Bid-d_pZF*Point; if(ZeroFull_Pr==true) { ObjectCreate("Уровень Принудительного Закрытия Ордеров ДЦ / StopOut",OBJ_HLINE,0,0,ur_pZF); ObjectSet("Уровень Принудительного Закрытия Ордеров ДЦ / StopOut",OBJPROP_COLOR,Colour_ZF); ObjectSet("Уровень Принудительного Закрытия Ордеров ДЦ / StopOut",OBJPROP_STYLE,Style_ZF_Procent); ObjectSet("Уровень Принудительного Закрытия Ордеров ДЦ / StopOut",OBJPROP_WIDTH,Width_ZF_Procent); } //---------------------------------------------------------------------------------------------// //значения расстояния в пипсах до уровня "нуля" и "безубытка" на график //---------------------------------------------------------------------------------------------// double dZM,price_bzu2=0,dZP; dZM=-shift; if(lots < 0) { price_bzu2 = (Ask - price_bzu_o) * (Znakov); } if(lots > 0) { price_bzu2 = (Bid - price_bzu_o) * (Znakov); } dZP=-price_bzu2; //---------------------------------------------------------------------------------------------// //вывод информации на график //---------------------------------------------------------------------------------------------// if(INFO_1==true) { ObjectCreate("Расстояние до Общего Уровня Безубытка - инфо",OBJ_LABEL,0,0,0); ObjectSetText("Расстояние до Общего Уровня Безубытка - инфо","...осталось: "+DoubleToStr(dZP,0),RazmerShrifta,"Verdana",Colour_ZP); ObjectSet("Расстояние до Общего Уровня Безубытка - инфо",OBJPROP_CORNER,Ugol_1); ObjectSet("Расстояние до Общего Уровня Безубытка - инфо",OBJPROP_XDISTANCE,MP_X); ObjectSet("Расстояние до Общего Уровня Безубытка - инфо",OBJPROP_YDISTANCE,MP_Y); ObjectCreate("Общий Уровень Безубытка - инфо",OBJ_LABEL,0,0,0); ObjectSetText("Общий Уровень Безубытка - инфо","Уровень Общ.Безуб.: "+DoubleToStr(price_bzu_o,Digits),RazmerShrifta,"Verdana",Colour_ZP); ObjectSet("Общий Уровень Безубытка - инфо",OBJPROP_CORNER,Ugol_1); ObjectSet("Общий Уровень Безубытка - инфо",OBJPROP_XDISTANCE,MP_X); ObjectSet("Общий Уровень Безубытка - инфо",OBJPROP_YDISTANCE,MP_Y+RazmerShrifta*1.3); //---------------------------------------------------------------------------------------------// ObjectCreate("Расстояние до Нулевой Маржи - инфо",OBJ_LABEL,0,0,0); ObjectSetText("Расстояние до Нулевой Маржи - инфо","...осталось: "+DoubleToStr(dZM,0),RazmerShrifta,"Verdana",Colour_ZM); ObjectSet("Расстояние до Нулевой Маржи - инфо",OBJPROP_CORNER,Ugol_1); ObjectSet("Расстояние до Нулевой Маржи - инфо",OBJPROP_XDISTANCE,MP_X); ObjectSet("Расстояние до Нулевой Маржи - инфо",OBJPROP_YDISTANCE,MP_Y+RazmerShrifta*3); ObjectCreate("Уровень Нулевой Маржи - инфо",OBJ_LABEL,0,0,0); ObjectSetText("Уровень Нулевой Маржи - инфо","Уровень 0-й Маржи: "+DoubleToStr(Bid-shift*Point,Digits),RazmerShrifta,"Verdana",Colour_ZM); ObjectSet("Уровень Нулевой Маржи - инфо",OBJPROP_CORNER,Ugol_1); ObjectSet("Уровень Нулевой Маржи - инфо",OBJPROP_XDISTANCE,MP_X); ObjectSet("Уровень Нулевой Маржи - инфо",OBJPROP_YDISTANCE,MP_Y+RazmerShrifta*4.3); //---------------------------------------------------------------------------------------------// ObjectCreate("Уровень Принудительного Закрытия Ордеров ДЦ / StopOut - инфо",OBJ_LABEL,0,0,0); ObjectSetText("Уровень Принудительного Закрытия Ордеров ДЦ / StopOut - инфо","Закрытие / StopOut: "+DoubleToStr(Afto_Procent_ZF,0)+"%",RazmerShrifta,"Verdana",Colour_ZF); ObjectSet("Уровень Принудительного Закрытия Ордеров ДЦ / StopOut - инфо",OBJPROP_CORNER,Ugol_1); ObjectSet("Уровень Принудительного Закрытия Ордеров ДЦ / StopOut - инфо",OBJPROP_XDISTANCE,MP_X); ObjectSet("Уровень Принудительного Закрытия Ордеров ДЦ / StopOut - инфо",OBJPROP_YDISTANCE,MP_Y+RazmerShrifta*6); ObjectCreate("Мертвая Зона - инфо",OBJ_LABEL,0,0,0); ObjectSetText("Мертвая Зона - инфо","Мёртвая зона: "+DoubleToStr(MathAbs(dDZ),0),RazmerShrifta,"Verdana",Colour_ZF); ObjectSet("Мертвая Зона - инфо",OBJPROP_CORNER,Ugol_1); ObjectSet("Мертвая Зона - инфо",OBJPROP_XDISTANCE,MP_X); ObjectSet("Мертвая Зона - инфо",OBJPROP_YDISTANCE,MP_Y+RazmerShrifta*7.3); ObjectCreate("Уровень СЛИВА - инфо",OBJ_LABEL,0,0,0); ObjectSetText("Уровень СЛИВА - инфо","Уровень Слива: "+DoubleToStr(u_shift_3,Digits),RazmerShrifta,"Verdana",Colour_ZF); ObjectSet("Уровень СЛИВА - инфо",OBJPROP_CORNER,Ugol_1); ObjectSet("Уровень СЛИВА - инфо",OBJPROP_XDISTANCE,MP_X); ObjectSet("Уровень СЛИВА - инфо",OBJPROP_YDISTANCE,MP_Y+RazmerShrifta*8.6); } //---------------------------------------------------------------------------------------------// //Окраска Мёртвой зоны //---------------------------------------------------------------------------------------------// if(Cvet_zony_dDZ_f==true) { ObjectCreate("Мертвая Зона - цвет",OBJ_RECTANGLE,0,D'0000.00.00',u_shift_3,(datetime)(TimeCurrent()*1.1),u_shift); ObjectSet("Мертвая Зона - цвет",OBJPROP_STYLE,STYLE_SOLID); ObjectSet("Мертвая Зона - цвет",OBJPROP_COLOR,Cvet_zony_dDZ); ObjectSet("Мертвая Зона - цвет",OBJPROP_BACK,True); } //---------------------------------------------------------------------------------------------// //Окраска зоны LOCK //---------------------------------------------------------------------------------------------// if(Cvet_zony_LOCK_p==true) { ObjectCreate("Зона LOCK - цвет",OBJ_RECTANGLE,0,D'0000.00.00',u_shift,(datetime)(TimeCurrent()*1.1),ur_pZM); ObjectSet("Зона LOCK - цвет",OBJPROP_STYLE,STYLE_SOLID); ObjectSet("Зона LOCK - цвет",OBJPROP_COLOR,Cvet_zony_LOCK); ObjectSet("Зона LOCK - цвет",OBJPROP_BACK,True); } } } //---------------------------------------------------------------------------------------------// //вариант 3 //---------------------------------------------------------------------------------------------// else if(AccountFreeMarginMode()==3) { Comment_(" v.3"); // + " - При расчете используется только значение убытка, \n текущая прибыль по открытым позициям не учитывается. Будет рассчитано два уровня."); for(i=0; i=0;Order_Buy--) { if(!OrderSelect(Order_Buy,SELECT_BY_POS,MODE_TRADES)) break; if(OrderSymbol()!=Symbol()) continue; if(OrderType()==OP_BUY) { AllOrder_Buy=AllOrder_Buy+1; // колличество всех Buy ордеров } } for(Order_Sell=OrdersTotal()-1;Order_Sell>=0;Order_Sell--) { if(!OrderSelect(Order_Sell,SELECT_BY_POS,MODE_TRADES)) break; if(OrderSymbol()!=Symbol()) continue; if(OrderType()==OP_SELL) { AllOrder_Sell=AllOrder_Sell+1; // колличество всех Sell ордеров } } double Buy_pribyl = (Bid - price_bzu_B) * BuyLots_b * pp_cena * Znakov; // прибыль от Buy сделок double Sell_pribyl = (price_bzu_S - Ask) * SellLots_b * pp_cena * Znakov; // прибыль от Sell сделок double pribyl_itogo = Buy_pribyl + Sell_pribyl; // прибыль от всех сделок if(INFO_4==true) { ObjectCreate("Общ.текущ.прибыль - инфо",OBJ_LABEL,0,0,0); ObjectSetText("Общ.текущ.прибыль - инфо","Общ.Текущ.Приб.: "+DoubleToStr(pribyl_itogo,2),RazmerShrifta,"Verdana",cvet_dop_info4); ObjectSet("Общ.текущ.прибыль - инфо",OBJPROP_CORNER,Ugol_4); ObjectSet("Общ.текущ.прибыль - инфо",OBJPROP_XDISTANCE,MP_X_4); ObjectSet("Общ.текущ.прибыль - инфо",OBJPROP_YDISTANCE,MP_Y_4+RazmerShrifta*21.3); ObjectCreate("Приб.от.SELL.сделок - инфо",OBJ_LABEL,0,0,0); ObjectSetText("Приб.от.SELL.сделок - инфо","Приб. всех SELL: "+DoubleToStr(Sell_pribyl,2),RazmerShrifta,"Verdana",cvet_dop_info4); ObjectSet("Приб.от.SELL.сделок - инфо",OBJPROP_CORNER,Ugol_4); ObjectSet("Приб.от.SELL.сделок - инфо",OBJPROP_XDISTANCE,MP_X_4); ObjectSet("Приб.от.SELL.сделок - инфо",OBJPROP_YDISTANCE,MP_Y_4+RazmerShrifta*22.6); ObjectCreate("Приб.от.BUY.сделок - инфо",OBJ_LABEL,0,0,0); ObjectSetText("Приб.от.BUY.сделок - инфо","Приб. всех BUY: "+DoubleToStr(Buy_pribyl,2),RazmerShrifta,"Verdana",cvet_dop_info4); ObjectSet("Приб.от.BUY.сделок - инфо",OBJPROP_CORNER,Ugol_4); ObjectSet("Приб.от.BUY.сделок - инфо",OBJPROP_XDISTANCE,MP_X_4); ObjectSet("Приб.от.BUY.сделок - инфо",OBJPROP_YDISTANCE,MP_Y_4+RazmerShrifta*23.9); //---------------------------------------------------------------------------------------------// ObjectCreate("Уров.SELL=0 - инфо",OBJ_LABEL,0,0,0); ObjectSetText("Уров.SELL=0 - инфо","Уров.SELL=0: "+DoubleToStr(price_bzu_S,Digits),RazmerShrifta,"Verdana",cvet_dop_info4); ObjectSet("Уров.SELL=0 - инфо",OBJPROP_CORNER,Ugol_4); ObjectSet("Уров.SELL=0 - инфо",OBJPROP_XDISTANCE,MP_X_4); ObjectSet("Уров.SELL=0 - инфо",OBJPROP_YDISTANCE,MP_Y_4+RazmerShrifta*25.7); ObjectCreate("Уров.BUY=0 - инфо",OBJ_LABEL,0,0,0); ObjectSetText("Уров.BUY=0 - инфо","Уров.BUY=0: "+DoubleToStr(price_bzu_B,Digits),RazmerShrifta,"Verdana",cvet_dop_info4); ObjectSet("Уров.BUY=0 - инфо",OBJPROP_CORNER,Ugol_4); ObjectSet("Уров.BUY=0 - инфо",OBJPROP_XDISTANCE,MP_X_4); ObjectSet("Уров.BUY=0 - инфо",OBJPROP_YDISTANCE,MP_Y_4+RazmerShrifta*27.0); //---------------------------------------------------------------------------------------------// ObjectCreate("Объем.SELL.лотов - инфо",OBJ_LABEL,0,0,0); ObjectSetText("Объем.SELL.лотов - инфо","Объем SELL лотов: "+DoubleToStr(-SellLots_b,2),RazmerShrifta,"Verdana",cvet_dop_info4); ObjectSet("Объем.SELL.лотов - инфо",OBJPROP_CORNER,Ugol_4); ObjectSet("Объем.SELL.лотов - инфо",OBJPROP_XDISTANCE,MP_X_4); ObjectSet("Объем.SELL.лотов - инфо",OBJPROP_YDISTANCE,MP_Y_4+RazmerShrifta*28.8); ObjectCreate("Объем.BUY.лотов - инфо",OBJ_LABEL,0,0,0); ObjectSetText("Объем.BUY.лотов - инфо","Объем BUY лотов: "+DoubleToStr(BuyLots_b,2),RazmerShrifta,"Verdana",cvet_dop_info4); ObjectSet("Объем.BUY.лотов - инфо",OBJPROP_CORNER,Ugol_4); ObjectSet("Объем.BUY.лотов - инфо",OBJPROP_XDISTANCE,MP_X_4); ObjectSet("Объем.BUY.лотов - инфо",OBJPROP_YDISTANCE,MP_Y_4+RazmerShrifta*30.1); //---------------------------------------------------------------------------------------------// ObjectCreate("Коллич.SELL - инфо",OBJ_LABEL,0,0,0); ObjectSetText("Коллич.SELL - инфо","Коллич.SELL: "+DoubleToStr(-AllOrder_Sell,0),RazmerShrifta,"Verdana",cvet_dop_info4); ObjectSet("Коллич.SELL - инфо",OBJPROP_CORNER,Ugol_4); ObjectSet("Коллич.SELL - инфо",OBJPROP_XDISTANCE,MP_X_4); ObjectSet("Коллич.SELL - инфо",OBJPROP_YDISTANCE,MP_Y_4+RazmerShrifta*31.9); ObjectCreate("Коллич.BUY - инфо",OBJ_LABEL,0,0,0); ObjectSetText("Коллич.BUY - инфо","Коллич.BUY: "+DoubleToStr(AllOrder_Buy,0),RazmerShrifta,"Verdana",cvet_dop_info4); ObjectSet("Коллич.BUY - инфо",OBJPROP_CORNER,Ugol_4); ObjectSet("Коллич.BUY - инфо",OBJPROP_XDISTANCE,MP_X_4); ObjectSet("Коллич.BUY - инфо",OBJPROP_YDISTANCE,MP_Y_4+RazmerShrifta*33.2); } //---------------------------------------------------------------------------------------------// // Уровни пределов Buy.Stop и Sell.Stop //---------------------------------------------------------------------------------------------// if(Urov_BS_SS==true) { ObjectCreate("не ниже для Buy.Stop",OBJ_HLINE,0,0,0); ObjectSet("не ниже для Buy.Stop",OBJPROP_PRICE1,Ask+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point); ObjectSet("не ниже для Buy.Stop",OBJPROP_COLOR,Colour_SB); ObjectSet("не ниже для Buy.Stop",OBJPROP_STYLE,Style_SB); ObjectSet("не ниже для Buy.Stop",OBJPROP_WIDTH,Width_SB); ObjectCreate("не выше для Sell.Stop",OBJ_HLINE,0,0,0); ObjectSet("не выше для Sell.Stop",OBJPROP_PRICE1,Bid-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point); ObjectSet("не выше для Sell.Stop",OBJPROP_COLOR,Colour_SS); ObjectSet("не выше для Sell.Stop",OBJPROP_STYLE,Style_SS); ObjectSet("не выше для Sell.Stop",OBJPROP_WIDTH,Width_SS); } //---------------------------------------------------------------------------------------------// // Уровень Равного Лока //---------------------------------------------------------------------------------------------// if(U_R_Lock==true) { double URLock; if(SellLots_b-BuyLots_b!=0) { if(SellLots_b>BuyLots_b) { URLock=Bid -(AccountFreeMargin() -(SellLots_b-BuyLots_b)*lot_cena)/(MarketInfo(Symbol(),MODE_TICKVALUE)*lots)*Point; } else { URLock=Bid -(AccountFreeMargin() -(BuyLots_b-SellLots_b)*lot_cena)/(MarketInfo(Symbol(),MODE_TICKVALUE)*lots)*Point; } ObjectCreate("Уровень Равного Лока",OBJ_HLINE,0,0,URLock); ObjectSet("Уровень Равного Лока",OBJPROP_COLOR,Colour_URLock); ObjectSet("Уровень Равного Лока",OBJPROP_STYLE,Style_URLock); ObjectSet("Уровень Равного Лока",OBJPROP_WIDTH,Width_URLock); } } //---------------------------------------------------------------------------------------------// // состояние расчетов, индикации... //---------------------------------------------------------------------------------------------// if(MetodRBezubytkaNew==true) { if(MetodRBNew_Sw_Com==true) Comment_("Расч.Безуб.New+S&C"); else Comment_("Расч.Безуб.New.без.S&C"); } else Comment_("Расч.Безуб.Old"); if(ZeroProfit!=true) Comment_("Выкл.-Уров.Общ.Безуб."); if(AccountFreeMarginMode()==1) { if(ZeroBUY!=true) Comment_("Выкл.-Уров.BUY=0"); if(ZeroBUYP != true) Comment_("Выкл.-Уров.BUY=0+"); if(ZeroSELL != true) Comment_("Выкл.-Уров.SELL=0"); if(ZeroSELLP!=true) Comment_("Выкл.-Уров.SELL=0+"); if(ZeroMargin!=true) Comment_("Выкл.-Уров.М=0"); if(ZeroFull!=true) Comment_("Выкл.-Уров.СЛИВА"); if(ZeroMarginPr!=true) Comment_("Выкл.-Уров.%.до.М=0"); if(ZeroFull_Pr !=true) Comment_("Выкл.-Уров.%.закр.ДЦ"); if(SoundPlay_Menshe != true) Comment_("Выкл.ЗВК-Цена.<.%М=0"); if(SoundPlay_Bolshe != true) Comment_("Выкл.ЗВК-Цена.>.%М=0"); if(Cvet_zony_dDZ_f!=true) Comment_("Выкл.-Цвет.Мертвая.Зона"); if(Cvet_zony_LOCK_p!=true) Comment_("Выкл.-Цвет.Зоны.LOCK"); if(Urov_BS_SS!=true) Comment_("Выкл.-Уров.BS&SS"); } if(U_R_Lock!=true) Comment_("Выкл.-Уров.Равн.Лока"); if(INFO_1 != true) Comment_("Выкл.-Панель.INFO.1"); if(INFO_2 != true) Comment_("Выкл.-Панель.INFO.2"); if(INFO_4 != true) Comment_("Выкл.-Панель.INFO.4"); if(CALC_0 != true) Comment_("Выкл.-Панель.CALC"); //---------------------------------------------------------------------------------------------// // окончание //---------------------------------------------------------------------------------------------// Comment("---------------------------- \n i-UrovenZero-v.2.2.7"+comment); comment=""; return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void Comment_(string com) { if(INFO_COMENT==true) comment=comment+"\n"+com; } // © Bor-ix & Kirill & d_tom & Don_Leone :) При поддержке www.FX4U.ru"