//+----------------------------------------------------------------------------+ //| 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); } //+----------------------------------------------------------------------------+