или отупел, или был тупым, или от жары, тут у нас 35, или еще что...

 

друзья, 

1.имею CFD сумвол, именно 

US30

2. имею для него стоплосс, скажем = 300 pips

3. имею процент риска на сделку, скажем 1 процент от баланса,

то есть при закрытие по стоп-лосу, убыток должен составить 1 процент от баланса

вот спецификация


надо вычислить  размер лота для торговли...


для обычных форекс символов нет проблем

 
Denis Sartakov:

друзья, 

1.имею CFD сумвол, именно 

US30

2. имею для него стоплосс, скажем = 300 pips

3. имею процент риска на сделку, скажем 1 процент от баланса,

то есть при закрытие по стоп-лосу, убыток должен составить 1 процент от баланса

вот спецификация


надо вычислить  размер лота для торговли...


для обычных форекс символов нет проблем

Привет!

Мы севернее, у нас только 33 ))

Для CFD так:

Profit:  (close_price - open_price) * Contract_Size * Lots


Вот тут много информации о способах вычисления. 

Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Информация об инструменте - Состояние окружения - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Ihor Herasko #:

Привет!

Для CFD так:

Profit:  (close_price - open_price) * Contract_Size * Lots


Вот тут много информации о способах вычисления. 

у меня мт4

 
Denis Sartakov #:

у меня мт4

Без разницы. Формула от этого не меняется.

 
Ihor Herasko #:

Без разницы. Формула от этого не меняется.

   double d_LotTrade;

   i_StopLossPips = 300;
   
   double d_Tickval = MarketInfo(Symbol(), MODE_TICKVALUE);

   double d_ROB_PerTrade = AccountBalance() * (ppd_ROB_PerTrade/100);

   d_LotTrade = d_ROB_PerTrade/(i_StopLossPips*d_Tickval);
   
   d_LotTrade = MathMin(MathMax(MathRound(d_LotTrade/md_LotStep)*md_LotStep,md_MinLot),md_MaxLot);
   return (d_LotTrade);

вот так всегда вычислял

 
Denis Sartakov #:

вот так всегда вычислял

Да, если MarketInfo(Symbol(), MODE_PROFITCALCMODE) возвращает 0 (Forex). Если возвращает 1 (CFD), то MODE_TICKVALUE уже не нужно использовать. Лот рассчитать так:

profit / ((close_price - open_price) * Contract_Size)

где:

profit - d_ROBPerTrade

close_price - Stop Loss

Contract_Size - SymbolInfoDouble(Symbol(), SYMBOL_TRADE_CONTRACT_SIZE)

 
Ihor Herasko #:

Да, если MarketInfo(Symbol(), MODE_PROFITCALCMODE) возвращает 0 (Forex). Если возвращает 1 (CFD), то MODE_TICKVALUE уже не нужно использовать. Лот рассчитать так:

profit / ((close_price - open_price) * Contract_Size)

где:

profit - d_ROBPerTrade

close_price - Stop Loss

Contract_Size - SymbolInfoDouble(Symbol(), SYMBOL_TRADE_CONTRACT_SIZE)

здорово, спасибо, игорь,

попробую...

 

что-то не так, вот вычисляю лот

double cExpert::LotSize(int i_Type)
{
   double d_LotTrade;
   
   double d_ROB_PerTrade = 100;// $100 loss when SL is hit  
   
   double d_Contract_Size = SymbolInfoDouble(Symbol(), SYMBOL_TRADE_CONTRACT_SIZE);
   
   double d_OrderStopLoss;
   int    i_OrderStopLossPips = 300;
   
   double d_OrderOpenPrice;
   if (i_Type == OP_SELL)
   {
      d_OrderStopLoss  = Ask + i_OrderStopLossPips * Point;
      d_OrderOpenPrice = Bid;
   }
   if (i_Type == OP_BUY)
   {
      d_OrderStopLoss  = Bid - i_OrderStopLossPips * Point;
      d_OrderOpenPrice = Ask;
   }
   d_LotTrade = d_ROB_PerTrade/(MathAbs(d_OrderStopLoss - d_OrderOpenPrice) * d_Contract_Size); 

   d_LotTrade = MathMin(MathMax(MathRound(d_LotTrade/md_LotStep)*md_LotStep,md_MinLot),md_MaxLot);
   return (d_LotTrade);
}
//+------------------------------------------------------------------+

при депозите 10 000 получаю огромнейший нереальный лот = 32.26

само-собой, 10 000 не хватает, чтобы открыться с таким лотом

 

не, все в порядке, игорь, звииняй !

просто с CFD сильно не разгонишься,

поставил

double d_ROB_PerTrade = 20;// $20 loss when SL is hit 

при закрытие по стоп-лосу получил убыток 20 баксов !


с меня вискарь при встрече !