Нужна формула размера LOT для управления капиталом, основанная на SL и риске счета! - страница 4
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
... в этой части кода есть проблема с новой компиляцией (ошибка ---> 'MarketInfo' - illegal switch expression type), возможно, все было в порядке до обновления до MT4 build 600+ ... но с тех пор это больше не работает.
Поэтому, не могли бы вы выложить более новую версию... если, конечно, вы еще здесь.
Я думаю, если вы измените
switch ( MarketInfo( strSymbol, MODE_DIGITS ) )
на
Он будет компилироваться нормально
... в этой части кода есть проблема с новой компиляцией (ошибка ---> 'MarketInfo' - illegal switch expression type), возможно, все было в порядке до обновления до MT4 build 600+ ... но с тех пор это больше не работает.
Поэтому, не могли бы вы выложить более новую версию... если, конечно, вы еще здесь.
https://book.mql4.com/operators/switch
"Значениями Выражения и Параметров могут быть только значения типа int. Выражение может быть константой, переменной, вызовом функции или выражением. Каждый вариативный "случай" может быть обозначен целочисленной константой, символьной константой или константным выражением. Константное выражение не может включать переменные или вызовы функций."
И снова вы предлагаете более простое и лучшее решение.
В моем другом советнике это выглядит следующим образом:
extern double Risk_Percent = 3;
extern int StopLoss = 50;
//+------------------------------------------------------------------+
{
double lot = MathCeil(AccountFreeMargin() * Risk_Percent / 1000) / 100;
if(lot<MarketInfo(Symbol(),MODE_MINLOT))lot=MarketInfo(Symbol(),MODE_MINLOT);
if(lot>MarketInfo(Symbol(),MODE_MAXLOT))lot=MarketInfo(Symbol(),MODE_MAXLOT);
return (MathMin(NormalizeDouble(lot,PipMultiplier),MaxLotSize));
}
//+------------------------------------------------------------------+
if(_Digits==5 || _Digits==3)PipMultiplier=10;
else PipMultiplier=1;
slippage=Slippage*PipMultiplier;
if(_Digits<4)
{
point=0.01;
}
else
{
point=0.0001;
}
return(0);
//+------------------------------------------------------------------+
double lot = MathCeil(AccountFreeMargin() * Risk_Percent / 1000) /