- Фиксированный процент от депозита
- От теории к практике
- Мартингейл
Я так считаю
input double risk=0.05; //0.0 - 1.0 input double Maxlots=10; double lotmin=0,lotmax=0,lotstep=0,margin=0; double lots() { lotstep = MarketInfo(Symbol(),MODE_LOTSTEP), lotmax = MathMin(MarketInfo(Symbol(), MODE_MAXLOT),Maxlots), lotmin = MarketInfo(Symbol(), MODE_MINLOT), margin = MarketInfo(Symbol(),MODE_MARGINREQUIRED); lot = lotstep*MathRound((AccountFreeMargin()*risk/margin)/lotstep); if(lot < lotmin) lot = lotmin; if(lot > lotmax) lot = lotmax; return(lot); }
И еще пару вопросов: Вы не учитываете размер плеча? А также Вы не учитываете размер стопа в пунктах? Я правильно понимаю?
Я так считаю
А что у Вас за переменная "AllocatedMargin"?
И еще пару вопросов: Вы не учитываете размер плеча? А также Вы не учитываете размер стопа в пунктах? Я правильно понимаю?
AllocatedMargin - делитель, указывает какую часть от свободных средств можно использовать для расчета лота. Можно удалить, лот будет рассчитан только от заданного риска, если риск=1 - то на все средства.
Да, плечо и стоп не учитывается, только процент от средств и всё. А зачем учитывать плечо и стоп в лоте?
AllocatedMargin - делитель, указывает какую часть от свободных средств можно использовать для расчета лота. Можно удалить, лот будет рассчитан только от заданного риска, если риск=1 - то на все средства.
Да, плечо и стоп не учитывается, только процент от средств и всё. А зачем учитывать плечо и стоп в лоте?
Ну делите тогда ещё на некий коэффициент, пропорциональный стопу в пунктах, я как-то в этом смысла не видел, у меня размер стопов постоянен. А плечо там учитыватеся, от плеча зависит margin = MarketInfo(Symbol(),MODE_MARGINREQUIRED);
Ну делите тогда ещё на некий коэффициент, пропорциональный стопу в пунктах, я как-то в этом смысла не видел, у меня размер стопов постоянен. А плечо там учитыватеся, от плеча зависит margin = MarketInfo(Symbol(),MODE_MARGINREQUIRED);
///////Расчет лота////////// double LotSize( int type, double LotRisk, int SL ) { // int znakov_lot=0; double lot_min = MarketInfo( Symbol(), MODE_MINLOT ); double lot_max = MarketInfo( Symbol(), MODE_MAXLOT ); double lot_step = MarketInfo( Symbol(), MODE_LOTSTEP ); double lotcost = MarketInfo( Symbol(), MODE_TICKVALUE ); double lot = 0.0; double dollarsPerPip = 0.0; lot = AccountBalance()*LotRisk/100.0; dollarsPerPip = lot/SL; // if (lot_min<2) {znakov_lot=0; if (lot_min<0.2) {znakov_lot=1; if (lot_min<0.02) {znakov_lot=3; if (lot_min<0.002) {znakov_lot=4; }}}} lot = NormalizeDouble( dollarsPerPip/lotcost, 2 ); lot = NormalizeDouble( lot / lot_step, 0 ) * lot_step; if ( lot < lot_min ) lot = lot_min; if ( lot > lot_max ) lot = lot_max; if ( AccountFreeMarginCheck( Symbol(), type, lot ) < 10 || GetLastError() == 134 ) { if(UninitializeReason()!=3) { Alert ( "Невозможно открыть ордер лотом ", DoubleToStr( lot, 2 ), ". Недостаточно денег."+Symbol() ); return(-1); } } return( lot ); }В этой функции также есть проблемы с максимальным лотом. То есть, при попытке установить риск от 8% и выше, выходит ошибка о нехватке средств. И в интернете ПОЛНОСТЬЮ рабочую функцию по расчету лота мне найти так и не удалось.
Ну делите тогда ещё на некий коэффициент, пропорциональный стопу в пунктах, я как-то в этом смысла не видел, у меня размер стопов постоянен. А плечо там учитыватеся, от плеча зависит margin = MarketInfo(Symbol(),MODE_MARGINREQUIRED);
Скажите, я правильно понимаю, что ошибку о нехватке средств нужно перехватывать перед открытием ордера?
Правильно.
И депозит побольше, с 1000 долларов (или центов) и меньше смысла нет играться. И сделки 50% от средств - чисто казино. 1-5% надо на форекс.
... И сделки 50% от средств - чисто казино. 1-5% надо на форекс.
Одно из вреднейших ошибочных утверждений, играющих на руку ДЦ.
Чем больше Вы совершаете сделок (с этой Вашей философией), тем меньше шанса у Вас на успех
(если надо - могу потом аргументировать...)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования