Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2161

 
Tretyakov Rostyslav #:
Выставлять бай лимитки все равно по какой цене Bid или Ask лишь бы вписаться в стоплевел, а вот тралить надо по Ask

получается тот код, в моем посте выше -  не совсем правильно написан?

 
законопослушный гражданин #:

получается тот код, в моем посте выше -  не совсем правильно написан?

Все зависит от задумки автора, если тралить по Bid, то бай лимитки открываются на спред позже.
 
Tretyakov Rostyslav #:
Все зависит от задумки автора, если тралить по Bid, то бай лимитки открываются на спред позже.

спасибо

 
Maxim Kuznetsov #:

смотря что вы разумеете под risk%, - стоит добавлять AccountMargin() к Free; просто обратите внимание, а то возможны сюрпризы

Насчет сюрпризов понял, особенно это касается мультивалютников с доливками и закрытием по общему профиту.

Я Вас правильно понял ?

Добавить в минус  AccountMargin() к Free ?

double Free = (AccountFreeMargin() - AccountMargin());

исходный код функции:

//+---------------------------------------------------------------------------+
//|   Функция расчета риска от процента и расстояния  (c) Boshetunmay 2021    |
//+---------------------------------------------------------------------------+
double LotSize(int sl,double risk)
  {
   double Free = AccountFreeMargin();
   double LotVal  = MarketInfo(Symbol(),MODE_TICKVALUE);//стоимость 1 пункта 1 лота
   double Min_Lot = MarketInfo(Symbol(),MODE_MINLOT);
   double Max_Lot = MarketInfo(Symbol(),MODE_MAXLOT);
   double Step    = MarketInfo(Symbol(),MODE_LOTSTEP);
   if(sl<=0)
      return(Min_Lot); // исключение деления на ноль если SL передали в функцию нулем
   double Lot     = NormalizeDouble((MathFloor((Free*risk/100)/(sl*LotVal)/Step)*Step),2);
   if(Lot<Min_Lot)
      Lot=Min_Lot;
   if(Lot>Max_Lot)
      Lot=Max_Lot;
   return(Lot);
  }
//--- End ---
 
Volodymyr Zubov #:

Насчет сюрпризов понял, особенно это касается мультивалютников с доливками и закрытием по общему профиту.

Я Вас правильно понял ?

Добавить в минус  AccountMargin() к Free ?

исходный код функции:

зачем в минус-то ? складывать надо...AccountMarginFree()+AccountMargin() = полный залог. Используется если риск считается как % от баланса .

если риск считаете как % от свободных средств то только  AccountMarginFree(). 

 
Метатрейдер - нет связи. Паричём с инетом всё в порядке, перегрузка не помогает. С у тра всё было.
 
ALT #:
Метатрейдер - нет связи. Паричём с инетом всё в порядке, перегрузка не помогает. С у тра всё было.

Терминал на компьютере, на VPS, демо или реал ?

 
Maxim Kuznetsov #:

зачем в минус-то ? складывать надо...AccountMarginFree()+AccountMargin() = полный залог. Используется если риск считается как % от баланса .

если риск считаете как % от свободных средств то только  AccountMarginFree(). 

Ну от баланса считать некорректно, но в моём случае это альтернатива. Так как работает на многих парах одновременно, частично сеткой без мартингейла. И от 

AccountFreeMargin()

немного понижал лот, что плохо сказывалось на общем закрытии. 

Теперь или лот держать должен или немного увеличивать от ситуации и без мартингейла.

 
Tretyakov Rostyslav #:

Чтобы сделать как Вы хотите, надо добавлять процедуру перевода координаты во время

Проще добавить отступ от текущего бара

bars - количество баров для отступа

Спасибо, уже вариант) Но есть нюанс: если кнопку "смещение графика к концу" отжать, то стрелки уезжают за график.) А хотелось бы чтобы они постоянно при любом раскладе находились возле правого края графика... Я не знаю как это сделать..

 
FEEX #:

Спасибо, уже вариант) Но есть нюанс: если кнопку "смещение графика к концу" отжать, то стрелки уезжают за график.) А хотелось бы чтобы они постоянно при любом раскладе находились возле правого края графика... Я не знаю как это сделать..

datetime time2;
double y;
int x=(int)ChartGetInteger(ChartID(),CHART_WIDTH_IN_PIXELS,0);
ChartXYToTimePrice(0,x-5,0,0,time2,y);
double price2 = 0;
string BPtext3;
color clr2 = 0;
if (BULine(0) > 0)
{
clr2 = clrOrangeRed;
BPtext3 = "q";
price2 = BULine(0);
}
if (BULine(1) > 0)
{
clr2 = clrLime;
BPtext3 = "q";
price2 = BULine(1);
}
ObjectCreate("label_object14", OBJ_TEXT, 0, 0, 0);
ObjectSet("label_object14",OBJPROP_ANCHOR,ANCHOR_LEFT_UPPER); // ANCHOR_RIGHT_UPPER, ANCHOR_UPPER
ObjectSet("label_object14", OBJPROP_TIME1 ,time2); //Бар стрелки
ObjectSet("label_object14", OBJPROP_PRICE1 ,price2); //Цена стрелки
ObjectSetText("label_object14",StringConcatenate(B Ptext3), 10, "Wingdings 3", clr2);   }

Выделенным числом регулируйте отступ, чтобы не ушла стрелка вне графика

Причина обращения: