Архив
Копируете код в MQL4 файл = компиляция = см нет ли ошибок
extern string _B_Expert_1 = "---------- Риски торговли";
extern double Risk_1=1; // торговые риски по валюте
color Risk_1_color=LawnGreen;
extern double Risk_3=3;
color Risk_3_color=Yellow;
extern double Risk_5=5;
color Risk_5_color=Orange;
string _B_Expert_2 = "---------- Шрифты";
int FontSize=12; // Размер шрифта
int eiOffsetY = 30; // Смещение текста по вертикали
int eiStepY = 12; // Шаг смещения текста по вертикали
int eiX1Row = 3;
int WorkTime=0,Periods=0;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
if (Minute()==0 || WorkTime != Time[0] || Periods != Period() ){
string st="Risk";
int i, j;
for (i=0; i<1; i++) {
for (j=1; j<10; j++) ObjectDelete(st+i+j);}
double Lot_1=LotsOptimized(NormalizeDouble(Risk_1,2),Symb ol()); //
Расчет Лота от риска по выбранной валюте
double Lot_3=LotsOptimized(NormalizeDouble(Risk_3,2),Symb ol());
double Lot_5=LotsOptimized(NormalizeDouble(Risk_5,2),Symb ol());
string Sy=Symbol();
SetLabel("Risk11", " "+ DoubleToStr(Risk_1, 1), Risk_1_color,eiX1Row+10-5, eiOffsetY);
SetLabel("Risk12", " "+ DoubleToStr(Lot_1,2), Risk_1_color, eiX1Row+50, eiOffsetY);
SetLabel("Risk32", ""+ DoubleToStr(Lot_1/2, 2), Risk_1_color, eiX1Row+135+5, eiOffsetY);
SetLabel("Risk13", " "+ DoubleToStr(Risk_3, 1), Risk_3_color, eiX1Row+10-5, eiOffsetY+35);
SetLabel("Risk14", " "+ DoubleToStr(Lot_3, 2), Risk_3_color, eiX1Row+50, eiOffsetY+35);
SetLabel("Risk15", " "+ DoubleToStr(Risk_5,1), Risk_5_color, eiX1Row+10-5, eiOffsetY+70);
SetLabel("Risk16", " "+ DoubleToStr(Lot_5, 2), Risk_5_color, eiX1Row+50, eiOffsetY+70); /// сам процесс нанесения инфы на график пары
}
WorkTime = Time[0];
Periods= Period();
} // расчет лота от % риска от депо каждый час! если надо каждый тик = тупо убираете строчку if (Minute()
//+--------------------------------------------------------------------------------------------------------------+
//| Вычисление лота по риску
//+--------------------------------------------------------------------------------------------------------------+
double LotsOptimized(double RiskPercent, string Sy)
{
double LotDiggits=2;double OpLot;
double MaxLot = MarketInfo(Sy, MODE_MAXLOT);
double MinLot = MarketInfo(Sy, MODE_MINLOT);
double LotStep = MarketInfo(Sy, MODE_LOTSTEP);
double NeedMargin = MarketInfo(Sy, MODE_MARGINREQUIRED) * LotStep;
double FreeMargin = AccountFreeMargin() * RiskPercent /100; //--- Расчет маржи относительно риска}
OpLot = NormalizeDouble(MathFloor(FreeMargin / NeedMargin) * LotStep, LotDiggits); //--- Расчет нового объёма
//--- Сравнение нового объёма с MinLot, MaxLot и MaxLots
if (OpLot < MinLot) OpLot = MinLot;
if (OpLot > MaxLot) OpLot = MaxLot;
return (OpLot);
}
а вот по отложеникам, Вам никто не сделает такой код ;( это надо в цикле см по всем парам = есть ли отложеники, перебирать их, вытаскивать инфу по лотам, эмулировать их сработку, и см инфу по текущим открытым лотам, на цену срабатывания отложеника = ну что бы прикинуть в +/- откр ордера, и как сработка отложеника повлияет на просадку по торговле...