Помогите разобраться с расчетом залога

 

Вот вчера открыл на демке EURUSD "учебный пример" чтобы на выходных спокойно и правильно посчитать залог. По моим расчетам залог должен быть 103.89 а в терминале - 103.74

Начал разбираться со встречными позициями. Насколько я понимаю то что написано в документации, MODE_MARGINHEDGED - это как бы маржа взимаемая за "объем стандартного лота" в случае наличия одновременно открытых встречных поз. Однако Print("MODE_MARGINHEDGED = "+MarketInfo(OrderSymbol(),MODE_MARGINHEDGED)); выдал почему то 50000. Ладно - будем считать это размером контракта для перекрытых поз. Но тогда получается что залог должен быть 97.39 (половина за перекрытые 0.01 и полный за 0.07). Все равно не 103.74


Контракт


100,000.00



50,000.00



100,000.00

Плечо


100.00



100.00



100.00

Ask


1.2986



1.2986



1.2986










MARGINREQUIRED


1,298.60



649.30



1,298.60











Лот Залог


Лот Залог


Лот Залог

Buy

0.01

12.99



0.00



0.00

Sell

0.01

12.99


0.01

6.49



0.00

Sell

0.07

90.90



0.00


0.07

90.90










Совокупный лот

0.08

103.89


0.01

6.49


0.07

90.90










Общий залог


103.89



97.39





Разница всего 0.15 и очень похоже на три раза взятый SWAPLONG. Но почему? Ведь у меня или совокупный SHORT или два SHORTa и один LONG.

Кто поможет разобраться - как всетаки правильно считать залог для этого примера?

Файлы:
screenshots.zip  98 kb
 

Я недавно писал советника на заказ, столкнулся с похожей проблемой.

Вот некая формула:

double pr=MarketInfo(Symbol(),MODE_MARGINREQUIRED);
  
  {
  if (MarketInfo(Symbol(),MODE_DIGITS)==4)
  if (AccountProfit()>=(NormalizeDouble((pr/100*lot)/Bid,2))*close_at_profit)
  }


  {
  if (MarketInfo(Symbol(),MODE_DIGITS)==2)
  if (AccountProfit()>=(NormalizeDouble(((pr/100*lot)*100)/Bid,2))*close_at_profit)
  }

Была задача: вроде OrderProfit показывать прибыль не в валюте счета а в пунктах. Трудность была в чем, в том что нужно было по разных парах разчитатывать залог c extern double lot и сравнить с OrderProfit.

 
MOLET >>:

Я недавно писал советника на заказ, столкнулся с похожей проблемой.

Вот некая формула:

Была задача: вроде OrderProfit показывать прибыль не в валюте счета а в пунктах. Трудность была в чем, в том что нужно было по разных парах разчитатывать залог c extern double lot и сравнить с OrderProfit.

... ну и каким боком это отвечает на мой вопрос?

 

В хедж. моржа какая ?

 

По скринам.

маржу расчитывают:

pr=MarketInfo(Symbol(),MODE_MARGINREQUIRED);

(pr/100*lot)/Bid

например:

0.1*1000=100$ залога при плече 1:100 и лоте 0.1.

EURUSD 0.1

BID=1.3600

0.1*1000*1.3600=136.00 залог по EURUSD, лот 0.1.

 
JavaDev >>:

В хедж. моржа какая ?

Насколько я понимаю то что написано в документации, MODE_MARGINHEDGED - это как бы маржа взимаемая за "объем стандартного лота" в случае наличия одновременно открытых встречных поз. Однако Print("MODE_MARGINHEDGED = "+MarketInfo(OrderSymbol(),MODE_MARGINHEDGED)); выдал почему то 50000. Ладно - будем считать это размером контракта для перекрытых поз.

 
MOLET >>:

По скринам.

маржу расчитывают:

MOLET - хватит прикалываться ;)

у меня в табличке - расчет который дает две неправильные(?) цифры. Возьми посчитай как считаеш правильно и получи то что выдал терминал. Если получишь 103.74 - расскажи КАК считал.

 
MarketInfo довольно часто неверные значения выдаёт. Особенно по чужому символу. Не самая надёжная функция.
 
goldtrader >>:
MarketInfo довольно часто неверные значения выдаёт.

А откуда такая информация? и что значит НЕвервные? это значит что гдето есть или можно посчитать ВЕРНЫЕ? тогда как?

 
ForexTools >>:

А откуда такая информация?

Из личного опыта. Да и на форуме не раз поднималась тема. Кстати в некоторых билдах бывают ошибки, а в некоторых нет.

Статистику не вёл, но спотыкался не раз. :(

ForexTools >>:

и что значит НЕвервные?

Отличающиеся от реальных.

ForexTools >>:

это значит что гдето есть или можно посчитать ВЕРНЫЕ? тогда как?

Возможно ...

Иногда МаркетИнфо можно заменить чем-то..

 
ForexTools писал(а) >>

Вот вчера открыл на демке EURUSD "учебный пример" чтобы на выходных спокойно и правильно посчитать залог. По моим расчетам залог должен быть 103.89 а в терминале - 103.74

Начал разбираться со встречными позициями. Насколько я понимаю то что написано в документации, MODE_MARGINHEDGED - это как бы маржа взимаемая за "объем стандартного лота" в случае наличия одновременно открытых встречных поз. Однако Print("MODE_MARGINHEDGED = "+MarketInfo(OrderSymbol(),MODE_MARGINHEDGED)); выдал почему то 50000. Ладно - будем считать это размером контракта для перекрытых поз. Но тогда получается что залог должен быть 97.39 (половина за перекрытые 0.01 и полный за 0.07). Все равно не 103.74

Смотри здесь 'AccountStopout.. : опубликуйте пожалуста более подробную документацию'

Поиск рулит.. :)

Причина обращения: