//+----------------------------------------------------------------------+ //| JQS Terminator Line v1.0.0 | //| Copyright © 2010, JQS aka Joo. | //| http://www.mql4.com/ru/users/joo | //+----------------------------------------------------------------------+ //| Терминатор (астрономия) (от лат. terminare — ограничивать) — линия | //| светораздела, отделяющая освещённую (светлую) часть небесного тела от| //| неосвещённой (тёмной) части. | //| | //| Терминатор (ДНК) — последовательность нуклеотидов ДНК, узнаваемая | //| РНК-полимеразой как сигнал к прекращению синтеза молекулы РНК и | //| диссоциации транскрипционного комплекса. | //| | //| Терминатор (электроника) — поглотитель энергии (обычно резистор) на| //| конце длинной линии, сопротивление которого равно волновому | //| сопротивлению линии. | //+----------------------------------------------------------------------+ #property copyright "Copyright © 2010, JQS aka Joo." #property link "http://www.mql4.com/ru/users/joo" //----------------------------------------------------- //-------------------Ввод глобальных переменных--------------------------- extern string MM = "-----------Управление капиталом--------"; extern double K_Martin =1.0; //Коэфф Мартина extern double MinLoss =1.0; //Мин. возможный убыток в валюте депо extern double ProfitRatio=1.0; //Отношение TP/SL extern int SLdefault =20; //Относительный размер SL //------------------------------------------------------------------------ //-------------------Глобальные переменные-------------------------------- double TP; //Относительный размер double TakeProfit; //Абсолютная величина расстояния от TP до ask/bid double TPline; //Абсолютная величина лини TP double SL; //Относительный размер double StopLoss; //Абсолютная величина расстояния от SL до ask/bid double SLline; //Абсолютная величина лини SL string UsersOrderType; double Loss; //Текущий допустимый убыток в валюте депо double Loss_Prev; //Предыдущий допустимый убыток в валюте депо double Lots_New; //Количество лотов для новых ордеров //------------------------------------------------------------------------ //======================================================================== int init() { //------------------------------------- Loss_Prev=MinLoss; //------------------------------------- return; } //======================================================================== //======================================================================== int start() { //------------------------------------- if (OrdersTotal()>=1) { ObjectDelete("SignalLineSL"); ObjectDelete("SignalLineTP"); } else { LineDraw(); LineSens(); Criterion();//Зацикленная функция //------------------------------------- OpenOrder(); //------------------------------------- } //------------------------------------- return; } //======================================================================== //======================================================================== int deinit() { //------------------------------------- ObjectDelete("SignalLineSL"); ObjectDelete("SignalLineTP"); //------------------------------------- return; } //======================================================================== //======================================================================== void Criterion() { bool Flag=true; //------------------------------------- while (Flag==true) { if (LineFind()==true) { LineSens(); Inform(); } else { Flag=false; } } //------------------------------------- } //======================================================================== //======================================================================== void LineDraw() { //------------------------------------- double ask; double bid; double point; //------------------------------------- string Symb=Symbol(); ask =MarketInfo(Symb,MODE_ASK); bid =MarketInfo(Symb,MODE_BID); point =MarketInfo(Symb,MODE_POINT); //------------------------------------- StopLoss =SLdefault*point; //Нормализовано. Абсолютная величина расстояния от SL до ask/bid SLline =bid-StopLoss; //Нормализовано. Ценовое значение уровня стопа TakeProfit =NormalizeDouble(StopLoss*ProfitRatio,Digits);//Нормализовано. Абсолютная величина расстояния от TP до ask/bid TPline =ask+TakeProfit; //Нормализовано. Ценовое значение уровня профита //------------------------------------- //Создадим линию TP ObjectCreate("SignalLineTP", OBJ_HLINE, 0, 0,TPline); ObjectSet ("SignalLineTP", OBJPROP_COLOR, Blue); //Создадим линию SL ObjectCreate("SignalLineSL", OBJ_HLINE, 0, 0,SLline); ObjectSet ("SignalLineSL", OBJPROP_COLOR, Red); //------------------------------------- } //======================================================================== //======================================================================== void LineSens() { //------------------------------------- RefreshRates(); string Symb = Symbol(); double stoplevel = MarketInfo(Symb,MODE_STOPLEVEL)*Point;//Абсолютный размер в пунктах double CurrentValue; //------------------------------------- //Определим, Buy или Sell позиция CurrentValue =NormalizeDouble(ObjectGet("SignalLineSL", OBJPROP_PRICE1),Digits);//Нормализованное ценовое значение уровня SL //Если линия стопа ниже середины между Ask и Bid то... if (CurrentValue<(Ask+Bid)*0.5) {//...имеем дело с длинной позицией---------- if (Bid-CurrentValue