Нужна помощь в расчете лота. - страница 2

 
hope >>:

Не силён в советах...заинтересовался только по причине, что сам дроблю лоты и изменяю их. В своё время дали хороший совет отделить мух от котлет...Попробуй сначала создавать условия для открытия противоположных ордеров (не пошло в твоём направлении) и лишь затем расчитывай их проф/лосс и последующее перекрытие в положительную сторону.

По поводу скобок не посчитал всё..., НО по моему, действия функции MathAbs должны быть заключены в скобки...т.е. должно быть MathAbs ((AllLotsProfit)/Take_Profit_Buy/MarketInfo(Symbol(),MODE_TICKVALUE))


Так ведь так и делаю:
      if (FindLastBuyPrice(Magic)<=-Pips_Sell && TypeOrder(Magic)=="BUY")
      {
         OpenPosSell(MathAbs(AllLotsProfit)/Take_Profit_Sell/MarketInfo(Symbol(),MODE_TICKVALUE), Magic);
      }   
 
Я про - OpenPosSell(MathAbs ((AllLotsProfit)/Take_Profit_Sell/MarketInfo(Symbol(),MODE_TICKVALUE)), Magic) - сравни...в докуменации вроде так.
 

Функция возвращает абсолютное значение (значение по модулю) переданного ей числа.

Я думаю без разницы, то ли взять число по модулю, затем разделить, то ли разделить, затем взять по модулю. Или я не прав??? 

 

Дано:

PS - суммарная прибыль всех ордеров перед открытием нового ордера (при убытке отрицательное число);

LS - суммарный лот всех ордеров перед открытием нового ордера (лоты ордеров бай прибавлять, лоты ордеров селл - вычитать);

TP - тейкпрофит нового ордера в пунктах;

D - направление нового ордер (1 - buy, -1 - sell);

PV - стоимость одного пункта;

Найти:

NL - лот нового ордера.

Решение:

PS+PS2=0. Где PS2 - прибыль всех ордеров на момент срабатывания тейкпрофита нового ордера.

PS2=(LS+D*NL)*TP*PV;

И т.д...

PS+(LS+D*NL)*TP*PV=0;

Надеюсь, выразить NL по этой формуле не составит труда.

Стоимость пункта вычисляется так:

double PointValue=MarketInfo(Symbol(),MODE_TICKVALUE)*(MarketInfo(Symbol(),MODE_POINT)/MarketInfo(Symbol(),MODE_TICKSIZE));
 
Гмм.. я думаю, что при твоём варианте MathAbs(AllLotsProfit)/Take_Profit_Sell/MarketInfo(Symbol(),MODE_TICKVALUE) она будет возвращать значение указанное в скобках MathAbs(AllLotsProfit), а затем вычислять всё остальное /Take_Profit_Sell/MarketInfo(Symbol(),MODE_TICKVALUE. В моём варианте возвращать всё заданное условие MathAbs ((AllLotsProfit)/Take_Profit_Sell/MarketInfo(Symbol(),MODE_TICKVALUE)). В любом случае, что мешает попробовать... Либо перейти к первому мной предложенному варианту.
 
skdon >>:

В общем ситуация такая. 

Допустим есть одна, или несколько открытых позиций. 

Как можно рассчитать лот для следующей позиции, что бы при заданном значении тейк профита перекрыть минуса предыдущих сделок.

А не прикидывали на сколько открытий может не хватить депозита?
 
coaster писал(а) >>
А не прикидывали на сколько открытий может не хватить депозита?

ИМХО: другая, давно описанная тема...

 

To skdon

Вот он, Integer, силён в советах...

 
hope >>:
Гмм.. я думаю, что при твоём варианте MathAbs(AllLotsProfit)/Take_Profit_Sell/MarketInfo(Symbol(),MODE_TICKVALUE) она будет возвращать значение указанное в скобках MathAbs(AllLotsProfit), а затем вычислять всё остальное /Take_Profit_Sell/MarketInfo(Symbol(),MODE_TICKVALUE. В моём варианте возвращать всё заданное условие MathAbs ((AllLotsProfit)/Take_Profit_Sell/MarketInfo(Symbol(),MODE_TICKVALUE)). В любом случае, что мешает попробовать... Либо перейти к первому мной предложенному варианту.


Попробовал. Результат абсолютно идентичен. Но все равно спасибо.
 
To Integer - спасибо буду пробовать.
Причина обращения: