Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Такой вариант отработал чётко, но только в советнике, в индикаторе выдаёт 0.01, что и стоило ожидать. Мне нужно считать в индикаторе, есть решение?
Такой вариант отработал чётко, но только в советнике, в индикаторе выдаёт 0.01, что и стоило ожидать. Мне нужно считать в индикаторе, есть решение?
есть у меня такой код расчета лота, но в него нужно передавать размер стоплосса в пипсах
{
double lot=0.0;
double procent=0.0;
double MinLot=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN);
double MaxLot=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX);
double balans=0.0;
double tc = SymbolInfoDouble(symbol,SYMBOL_TRADE_CONTRACT_SIZE);
double tv = SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_VALUE_LOSS);
double ts=SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE);
double point=SymbolInfoDouble(symbol,SYMBOL_POINT);
double LotStep=SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP);
if(Type_Balanse==Balance) balans=AccountInfoDouble(ACCOUNT_BALANCE);
if(Type_Balanse==Equity) balans=AccountInfoDouble(ACCOUNT_EQUITY);
if(Type_Balanse==FreeMargin) balans=AccountInfoDouble(ACCOUNT_MARGIN_FREE);
procent=(balans/100.0)*risk;
switch((ENUM_SYMBOL_CALC_MODE)SymbolInfoInteger(symbol,SYMBOL_TRADE_CALC_MODE))
{
case SYMBOL_CALC_MODE_FOREX:
if(sl!=0 && tv!=0)
{
Print("balans = ",balans," :sl = ",sl,": tv = ",tv);
Print("(sl*tv) =" ,(sl*tv));
Print("procent =" ,procent);
lot=procent/(sl*tv);
Print("lot=procent/(sl*tv) =" ,lot);
}
break;
case SYMBOL_CALC_MODE_FUTURES:if(sl!=0 && point!=0 && tv!=0 && ts!=0) lot=procent/(sl*point*(tv/ts));break;
case SYMBOL_CALC_MODE_CFD:if(sl!=0 && point!=0 && tc!=0) lot=procent/(sl*point*tc);break;
case SYMBOL_CALC_MODE_CFDINDEX:if(sl!=0 && point!=0 && tc!=0) lot=procent/(sl*point*tc);break;
case SYMBOL_CALC_MODE_CFDLEVERAGE:if(sl!=0 && point!=0 && tc!=0) lot=procent/(sl*point*tc);break;
case SYMBOL_CALC_MODE_EXCH_STOCKS:if(sl!=0 && point!=0 && tc!=0) lot=procent/(sl*point*tc);break;
case SYMBOL_CALC_MODE_EXCH_FUTURES:if(sl!=0 && point!=0 && tv!=0 && ts!=0) lot=procent/(sl*point*(tv/ts));break;
case SYMBOL_CALC_MODE_EXCH_FUTURES_FORTS:if(sl!=0 && point!=0 && tv!=0 && ts!=0) lot=procent/(sl*point*(tv/ts));break;
}
return(NormalizeVolume(symbol,lot));
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double NormalizeVolume(string symbol,double lot)
{
double MinLot=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN);
double MaxLot=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX);
double volume_step=SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP);
int volume_digits=(int)(MathLog(1.0/volume_step)/MathLog(10.0));
if(lot<MinLot)lot=MinLot;
if(lot>MaxLot)lot=MaxLot;
return(NormalizeDouble(lot,volume_digits));
}
//+------------------------------------------------------------------+
...
есть у меня такой код расчета лота, но в него нужно передавать размер стоплосса в пипсах
return(NormalizeDouble(lot,volume_digits));
}
//+------------------------------------------------------------------+
...
Со стопом не годиться, у меня такой есть, нужен именно такой, чтоб сразу и на все 100%, как предыдущий - всё чётко, но чтоб работал в индикаторе.
Спасибо!
не совсем понял что значит на каждом баре свой?
При курсе EURUSD 1.50 при плече 500 MarginRequared 3.00 USD. При курсе 1.10 при тех же условиях 2.20
Перестают запускаться советники.
Сразу после старта терминала все ОК, работает некоторое время(сутки-двое) без проблем...
...затем в один прекрасный момент исчезает возможность загрузить/перегрузить советник. Кроме того, если теряется коннект, сам уже не восстановится - нужно перегружать терминал.
Прим.
НАДПИСИ В ТЕРМИНАЛЕ СТАЛИ НЕЧИТАЕМЫ.....ЭТО ПОСЛЕ ОБНОВЛЕНИЯ ...У МЕНЯ ВИНДА 10...ПОМОГИТЕ ПОЖАЛУЙСТА