Перевод денег в пункты - страница 2

 
Alexey Viktorov:

Зачем мне что-то проверять когда я и так знаю что это неверно. Вы можете пользоваться чем угодно. Покажите пожалуйста где в документации вы нашли

я не утверждаю, я знаю и я практик

дочитайте мой пост на предыдущей странице

 
Renat Akhtyamov:

я не утверждаю, я знаю и я практик

дочитайте мой пост на предыдущей странице

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

 
Alexey Viktorov:

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

потому что я знаю, что по другому будет ошибка

удачи!

 
Renat Akhtyamov:

вот так:

(PositionGetDouble(POSITION_PROFIT)+PositionGetDouble(POSITION_COMMISSION)+PositionGetDouble(POSITION_SWAP))/(PositionGetDouble(POSITION_VOLUME)*SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_VALUE))

double pointProfit = (positionInfo.Profit()+positionInfo.Commission()+positionInfo.Swap()) / (positionInfo.Volume()*symbolInfo.TickValue());

Print("Profit ",positionInfo.Profit());

Print("pointProfit: ", pointProfit);


У меня на EURUSD все время получается профит умноженный на 100, тут что-то не то...

Profit -0.3 -> pointProfit: -30.0

Profit -0.22 -> pointProfit: -22.0

и так далее... 

 
Alexey Viktorov:

Это получается в котировках. Если считать, что позиция открыта на цене N+0.0 и закрыта N-0.0003 то это будет 30 пятизначных пунктов. Отсюда следует: Чтобы получить пункты надо это значение разделить на _Point или SymbolInfoDouble(_Symbol, SYMBOL_POINT)

double pointProfit = (positionInfo.Profit() / ((symbolInfo.TickValue() / symbolInfo.TickSize()) * positionInfo.Volume())) / symbolInfo.Point();

Попробовал так получается тоже просто умножение profit на 100

Не могу понять то ли оба решения рабочие и Ваше и Renat Akhtyamov, то ли что-то я делаю не так.

 
Павел Раввич:


У меня на EURUSD все время получается профит умноженный на 100, тут что-то не то...

Profit -0.3 -> pointProfit: -30.0

Profit -0.22 -> pointProfit: -22.0

и так далее... 

в слепую никак не объяснить

покажите сделку полностью: лот, цена открытия/закрытия, профит, комиссия, своп

 
Павел Раввич:


У меня на EURUSD все время получается профит умноженный на 100, тут что-то не то...

Profit -0.3 -> pointProfit: -30.0

Profit -0.22 -> pointProfit: -22.0

и так далее... 

А что не нравится? Прошли 30 пунктов в минусовую сторону, на пятизнаке - это около двух спредов, в деньгах получается минус 30 центов. При лоте 0,01 - вполне нормальные показатели.

Дополнено.

Будут кроссы или другие лоты, уже не будет умноженный на 100

 
Vasiliy Pushkaryov:

А что не нравится? Прошли 30 пунктов в минусовую сторону, на пятизнаке - это около двух спредов, в деньгах получается минус 30 центов. При лоте 0,01 - вполне нормальные показатели.

Дополнено.

Будут кроссы или другие лоты, уже не будет умноженный на 100

Да у меня как раз лот 0.01, выходит работает верно.

 
Павел Раввич:


У меня на EURUSD все время получается профит умноженный на 100, тут что-то не то...

Profit -0.3 -> pointProfit: -30.0

Profit -0.22 -> pointProfit: -22.0

и так далее... 

Я не понимаю в чём вы заблудились.

void OnStart()
 {
  double tickValue = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);
  double posProfit = PositionGetDouble(POSITION_PROFIT);
  double posVolume = PositionGetDouble(POSITION_VOLUME);
  posProfit = 0.3;  // Это для проверки
  posVolume = 0.01; // Это для проверки
  double point = SymbolInfoDouble(_Symbol, SYMBOL_POINT);
  double pips = posProfit/(tickValue*posVolume);
  Comment(pips);
 }/*******************************************************************/

Позапускайте такой скрипт на разных валютах. В дополнение можете вывести стоимость тика.


ps: Надеюсь вы понимаете что профит и объём позиции не так надо получать как это в моём примере.

 

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

вот на фото - такая функция? или что то другое, нужно  ?

Файлы:
zpj01u4.PNG  110 kb