//+----------------------------------------------------------------------------+ //| i-TotalStopCurrency.mq4 | //| | //| Ким Игорь В. aka KimIV | //| http://www.kimiv.ru | //| | //| 21.12.2011 Indicator of the Total Stop in the Deposit Currency. | //| Индикатор суммарного стопа в валюте депозита. | //| 04.05.2012 Добавил способ расчета прибыли для Futures. | //+----------------------------------------------------------------------------+ #property copyright "Ким Игорь В. aka KimIV" #property link "http://www.kimiv.ru" #property indicator_chart_window #property indicator_buffers 0 //------- Внешние параметры индикатора ----------------------------------------+ extern string symbol = "GOLD"; extern color ecText = Navy; // Цвет текста extern int eiCorner = 2; // Номер угла привязки: //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ // 0 - левый верхний // 1 - правый верхний // 2 - левый нижний // 3 - правый нижний //------- Глобальные переменные индикатора ------------------------------------+ //+----------------------------------------------------------------------------+ //| | //| ПРЕДОПРЕДЕЛЁННЫЕ ФУНКЦИИ | //| | //+----------------------------------------------------------------------------+ //| Custom indicator initialization function | //+----------------------------------------------------------------------------+ void init() { Comment(""); } //+----------------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+----------------------------------------------------------------------------+ void deinit() { Comment(""); for(int i=0; i<4; i++) ObjectDelete("iTotalStopCurrency"+i); } //+----------------------------------------------------------------------------+ //| Custom indicator iteration function | //+----------------------------------------------------------------------------+ void start() { double s=ProfitIFStopInCurrency(symbol); SetLabel("iTotalStopCurrency0","Уровень стопа",ecText,5,17,eiCorner); SetLabel("iTotalStopCurrency1",DoubleToStr(s,2)+" "+AccountCurrency(),ecText,5,5,eiCorner); SetLabel("iTotalStopCurrency2",DoubleToStr(s/AccountBalance()*100,2)+" %",ecText,100,5,eiCorner); } //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 03.05.2012 | //| Описание : Возвращает предполагаемую прибыль/убыток в валюте депозита | //| в случае срабатывания стопа открытых позиций. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ( "" - любой символ, | //| NULL - текущий символ) | //| op - операция ( -1 - любая позиция) | //| mn - MagicNumber ( -1 - любой магик) | //+----------------------------------------------------------------------------+ double ProfitIFStopInCurrency(string sy="",int op=-1,int mn=-1) { if(sy=="0") sy=Symbol(); // Текущий символ int i, k=OrdersTotal(); // Подсчёт открытых позиций int m; // Способ расчета прибыли: 0 - Forex, 1 - CFD, 2 - Futures double l; // Размер контракта в базовой валюте инструмента double p; // Размер пункта в валюте котировки double t; // Минимальный шаг изменения цены инструмента в валюте котировки double v; // Размер минимального изменения цены инструмента в валюте депозита double s=0; // Подсчёт стопа в валюте депозита for(i=0; i0) { if(m==0) s-=(OrderStopLoss()-OrderOpenPrice())/p*v*OrderLots(); if(m==1) s-=(OrderStopLoss()-OrderOpenPrice())/p*v/t/l*OrderLots(); if(m==2) s-=(OrderStopLoss()-OrderOpenPrice())/p*v*OrderLots(); s+=OrderCommission()+OrderSwap(); } else s=-AccountBalance(); } } } } } if(AccountBalance()+s<0) s=-AccountBalance(); // Ограничение убытка балансом счёта return(s); } //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 12.10.2007 | //| Описание : Установка текстовой метки, объект OBJ_LABEL. | //+----------------------------------------------------------------------------+ //| Параметры: | //| nm - наименование объекта | //| tx - текст | //| cl - цвет метки | //| xd - координата X в пикселах | //| yd - координата Y в пикселах | //| cr - номер угла привязки (0 - левый верхний ) | //| 1 - правый верхний | //| 2 - левый нижний | //| 3 - правый нижний ) | //| fs - размер шрифта (9 - по умолчанию ) | //+----------------------------------------------------------------------------+ void SetLabel(string nm,string tx,color cl,int xd,int yd,int cr=0,int fs=9) { if(ObjectFind(nm)<0) ObjectCreate(nm,OBJ_LABEL,0,0,0); ObjectSetText(nm,tx,fs); ObjectSet(nm,OBJPROP_COLOR,cl); ObjectSet(nm,OBJPROP_XDISTANCE,xd); ObjectSet(nm,OBJPROP_YDISTANCE,yd); ObjectSet(nm,OBJPROP_CORNER,cr); ObjectSet(nm,OBJPROP_FONTSIZE,fs); } //+----------------------------------------------------------------------------+