Как получить программно "Процент маржи" - страница 9

 
K-2SO:

Снимаю шляпу, у вас почти получилось! У всех трех ранее рассматриваемых брокеров с разным процентом маржи, расчет для золота (для ордеров в одном направлении) верен.

Но вот с экзотикой скрипт все еще не справляется. Остановился вот на брокере fxcm. Процент маржи для золота 70000, для обычных валютных пар 130, валюта маржи походу везде USD. И нигде ничто не считается корректно! (. Я сам к нему уже два дня ключ ищу и собственно в результате этого и ищу теперь ответ на вопрос, как так получается что в результате расчетов по базовым валютам и их курсов с валютами котировок, мы получаем валюту маржи... может дело в этом, а может и в том, что у этого брокера процент маржи учитывается даже для обычных валютных пар.

Здесь можно скачать терминал ru.files.fm/u/xfezz883#_   , распаковать, запустить по экзешнику, завести демку...

Открыл я демку, даже две, в одной золота нет, в другой XAUUSD с процентом маржи 70000 и стандартный лот 1. И причина не правильного расчёта в

percentage = NormalizeDouble(
                             margin          // Маржа получена в валюте депозита с учётом плеча
                           /(contractSize    // Размер контракта в базовой валюте
                            *price           // Умножаем на текущую цену и получаем в валюте депозита
                            /100)            // Это для того чтобы коэффициент перевести в проценты
                           *(calcMode == 0 ? leverage : 1) // Это получено методом научно-технического тыка.
                                    // Если способ расчёта 0 - Forex; то надо учесть плечо
                                    //                     1 - CFD; то плечо не учитывается
                                    //                     2 - Futures; 3 - CFD на индексы НЕ проверялись, их у меня нету...
                           , 0);

поэкспериментируй сам с этими строками

      percentage = NormalizeDouble(margin/(contractSize*price/100)*(calcMode == 0 ? leverage : 1), 0);
      orderMargin = (orderLots*contractSize*orderOpenPrice*percentage/100)/(calcMode == 0 ? leverage : 1);

Если я заскучаю, может тоже поэкспериментирую.

 
Alexey Viktorov:

Кроссы посчитать не проблема. Просто надо брать котировку по которой переводится валюта маржи в валюту депозита.

Например EURJPY price

если депозит в USD, надо считать по EURUSD. А CADJPY считать по USDCAD. Тут надо посмотреть как складывать валюту депозита с валютой маржи, не вбивать-же тупо списком.

Да и встречные не особо затруднительно имея MarketInfo(symbol, MODE_MARGINHEDGED). Единственная проблема, это сначала надо найти встречные, а дальше разложить часть встречными, а остаток по полной...

В общем, от всего написанного я вижу пользу только в том, что при рискованной стратегии можно заранее узнать маржу которая будет взята когда активируется отложка и чтобы не нарваться на ошибку вовремя удалить отложку если средств не хватит. Когда-то я боролся с этим при размещении советника в маркет.

2017.06.06 18:00:01.890 Script vik2 XAUUSD,H1: removed
2017.06.06 18:00:01.875 vik2 XAUUSD,H1: uninit reason 0
2017.06.06 18:00:01.875 vik2 XAUUSD,H1: ******** AccountMargin = 12.93 USD
2017.06.06 18:00:01.875 vik2 XAUUSD,H1: ******** Процент маржи 1 Маржа ордера XAUUSD 1.0 = 12.933
2017.06.06 18:00:01.875 vik2 XAUUSD,H1: initialized
2017.06.06 18:00:01.859 Script vik2 XAUUSD,H1: loaded successfully
2017.06.06 17:59:51.593 Compiling 'vik2'

плечо 100

 
Alexey Viktorov:

Открыл я демку, даже две, в одной золота нет, в другой XAUUSD с процентом маржи 70000 и стандартный лот 1. И причина не правильного расчёта в

Ну так об этом вся эта тема и есть... и мне кажется универсального расчета все таки нет )
 

И потом разве в обычных валютных парах при методе расчета Forex, нужно учитывать percentage?

2017.06.06 18:09:54.640 Script vik2 EURUSD,H1: removed
2017.06.06 18:09:54.640 vik2 EURUSD,H1: uninit reason 0
2017.06.06 18:09:54.640 vik2 EURUSD,H1: ******** AccountMargin = 1295.77 USD
2017.06.06 18:09:54.640 vik2 EURUSD,H1: ******** Процент маржи 115 Маржа ордера EURUSD 1.0 = 1295.774
2017.06.06 18:09:54.640 vik2 EURUSD,H1: initialized
2017.06.06 18:09:54.625 Script vik2 EURUSD,H1: loaded successfully


 
K-2SO:
Ну так об этом вся эта тема и есть... и мне кажется универсального расчета все таки нет )
Почему нет? На первой странице ссылка где есть формулы. Можно разложить на несколько алгоритмов в зависимости от способа расчёта. То что я предложил поэкспериментировать, в корне не верно, не трать время. Надо идти другим путём.
 
Alexey Viktorov:
Почему нет? На первой странице ссылка где есть формулы. Можно разложить на несколько алгоритмов в зависимости от способа расчёта. То что я предложил поэкспериментировать, в корне не верно, не трать время. Надо идти другим путём.
Я пробовал эти формулы по методу расчета FOREX, на последнем брокере вообще ничего не работает правильно даже для EURUSD.
 
K-2SO:
Я пробовал эти формулы по методу расчета FOREX, на последнем брокере вообще ничего не работает правильно даже для EURUSD.
Как-же не работает? В моём скрипте формулы оттуда и вроде-бы на forex и cfd работают. А фьючерсы и индексы считаются по другим формулам и их я не использовал.
 
Alexey Viktorov:
Как-же не работает? В моём скрипте формулы оттуда и вроде-бы на forex и cfd работают. А фьючерсы и индексы считаются по другим формулам и их я не использовал.
Я вам скрины выше привел, как они работают...
 
K-2SO:
Я вам скрины выше привел, как они работают...
Правильно. В моём скрипте считается маржа по CFD и форексу, а твои скрины с фьючерсом, формулы для которых на той-же странице.
 
Alexey Viktorov:
Правильно. В моём скрипте считается маржа по CFD и форексу, а твои скрины с фьючерсом, формулы для которых на той-же странице.

Это вы откуда это такие выводы сделали?  ^ ^ 


Способ вычисления маржи для XAUUSD, также Forex... там прибыль фьючерс, а не ее мы пытаемся считать.
Причина обращения: