Скрипт для расчета кол-ва лотов?

 

Привет Всем,

Может у кого-нибудь завалялся mq4-скрипт, который расчитывает кол-во лотов

по заданному Риску и имеющейся наличности? Очень уж не хочется тратить время на изобретение колеса.

Спасибо!

 
//+------------------------------------------------------------------+
//| Расчет лота соотв риску и балансу                                |
//+------------------------------------------------------------------+
double CalcLotsAuto(){double LotOpt,LotNeOpt,Zalog;
   RefreshRates();
   double Set=GlobalVariableGet("multi")-GlobalVariableGet("disable");
   double Sredstwa =GlobalVariableGet("sredstva");
   double lott=MarketInfo(Symbol(),MODE_MARGINREQUIRED)/1000;
   double Marga=AccountFreeMargin();
   double Balans=AccountBalance();
   double LotMin=MarketInfo(Symbol(),MODE_MINLOT);
   double LotMax=MarketInfo(Symbol(),MODE_MAXLOT);
   double StepLot=MarketInfo(Symbol(),MODE_LOTSTEP);
   double StopLv=AccountStopoutLevel();
   int PrsMinLot=1000*LotMin;
   if(Sredstwa==0){Sredstwa=AccountBalance();GlobalVariableSet("sredstva",Balans);}
   if(GlobalVariableGet("multi")>1){Risk=GlobalVariableGet("Risc");}
   if(Risk<0)Risk=0;
   if(Risk>100)Risk=100; 
   if(StepLot==0.01){int step=2;}else{step=1;}  
   if(Set<1){Set=1;}
//---------------------------     
   Zalog=(Sredstwa*(Risk/100))/Set;
   LotOpt=NormalizeDouble((Zalog/1000),step);
   if(LotOpt>LotMax)LotOpt=LotMax;
   if(LotOpt<LotMin)LotOpt=LotMin;
   //if(Marga<Sredstva/2){return(0);}
   return(LotOpt);
} 
 
xrust писал(а) >>

Как этим пользоваться? - я сделал следующее (в данном случае речь о Пользовательском Индикаторе):

1. Задал этот модуль как функцию с

extern int Risk = 2;
2.
Comment(
   "\n", "CalcLotsAuto = ", CalcLotsAuto(), 
   "\n" );  

- Все верно или может я в чем-то ошибся?

.

Спасибо!

 
.
Файлы:
 

Установил для проверки,задал риск 100.

Лот расчитался неправильно. Можно открыться большим лотом. Проверте, где то отшибка в расчетах

 
Prival >>:

Установил для проверки,задал риск 100.

Лот расчитался неправильно. Можно открыться большим лотом. Проверте, где то отшибка в расчетах

Есть ограничение :

if(LotOpt>LotMax)LotOpt=LotMax;
 
нет не в этом дело. Не в ограничении максимума. Ваш скрипт при риске 100 показывает допустим, что можно открыться лотом 1.26, а на самом деле открыться можно на 1.97.
 

1. Может кто-то сможет добавить сюда расчет точной стоимости 1 пипса в валюте депозита ($$)?

2. Какова функция хтой строчки?

double Set = GlobalVariableGet("multi")-GlobalVariableGet("disable");

 

Вот что я обнаружил, может кому тоже пригодится: 'Калькулятор Forex'

 

Вот можете пользоваться, если в рынке только 1 ордер, то все правильно работает, если нужно расчитать при уже открытых позициях, то нужно доделывать. У меня все руки не доходят.

правдо это не скрипт, а индикатор, но думаю это то что вам нужно

Файлы:
lot.mq4  6 kb
 
Prival писал(а) >>

Вот можете пользоваться, если в рынке только 1 ордер, то все правильно работает, если нужно расчитать при уже открытых позициях, то нужно доделывать. У меня все руки не доходят.

правдо это не скрипт, а индикатор, но думаю это то что вам нужно

Спасибо!