Как получить стоимость пункта и лота, например, недельной давности?

 

Как получить стоимость пункта и лота, например, недельной давности?

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

 

Видимо нужно пересчитывать исходя из котировок недельной давности. Существуют формулы - нужно только поискать.... Только зачем? Это не сильно отличается - разница крайне не существенна......

 
Здесь калькуоятор. Можно попробовать использовать алгоритм рассчёта лота не с учётом значений нулевого бара, а с учётом котировок нужного вам момента времени.
 
LeoV писал(а) >>

Видимо нужно пересчитывать исходя из котировок недельной давности. Существуют формулы - нужно только поискать.... Только зачем? Это не сильно отличается - разница крайне не существенна......

Думаю вы не правы относительно разницы....

Возьмем простой случай... EUR/USD... Предположим, неделю назад мы купили 1 лот по цене 1.30. т.е. за 100000 EUR заплатили 130000 USD или при плече равным 1:100 нам для удержания позиции потребуется маржа, равная 1300 USD... Сегодня. допустим, цена скакнула и равна 1.35... Теперь, если мы сейчас решили купить, то для поддержания позиции нам понадобится 1350 USD... Разница в 50 баксов... Стоимость пункта не поменяется, как была 10 USD так и останется... Другое дело, если ваш депозит в EUR, то стоимость пункта тоже изменится... 10 USD/1.30=7.69 EUR и 10 USD/1.35=7.41 EUR... Разница 7.69 - 7.41 = 0.28 EUR..

 
sayfuji писал(а) >>
Здесь калькуоятор. Можно попробовать использовать алгоритм рассчёта лота не с учётом значений нулевого бара, а с учётом котировок нужного вам момента времени.

Спасибо... Очень близко... Придется писать свой калькулятор :)

 

А если... ;)

Определяем дату открытия позиции, и эту дату в поиск

ближайшей котировки, например на М5 ...

 
kombat писал(а) >>

А если... ;)

Определяем дату открытия позиции, и эту дату в поиск

ближайшей котировки, например на М5 ...

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

 
kharko писал(а) >> Другое дело, если ваш депозит в EUR, то стоимость пункта тоже изменится...

А если посчитать в зимбабвийских долларах, то стоимость пункта будет расти в разы.....)))) Стоимость пункта изначально приводится к доллару - потом пересчитывается в валюту депозита.....

 
LeoV писал(а) >>

Стоимость пункта изначально приводится к доллару - потом пересчитывается в валюту депозита.....

Причем здесь доллар, если базовая валюта счета евра, швецарский франк или фунт... Все расчеты должны быть в базовой валюте... Это логично...

как оно рассчитывается на самом деле могут сказать тока разработчики МТ4...

 
kharko писал(а) >>

Причем здесь доллар, если базовая валюта счета евра, швецарский франк или фунт... Все расчеты должны быть в базовой валюте... Это логично...

как оно рассчитывается на самом деле могут сказать тока разработчики МТ4...

Блин, ну есчё раз говорю - стоимость пункта и прибыль изначально расчитывается в долларах, потом по текущему курсу пересчитывается в валюту депозита - хоть в евро, хоть в рубли, хоть в зимбабвийские доллары. Как вам будет угодно.....))))) Это по правилам - а как там какие-нибудь ДЦ мухлюют - ХЗ. Надо смотреть договор с этим ДЦ.....))))

 

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

//+------------------------------------------------------------------+
// Залоговые средства от открытой позиции
double TestMargin(string symb,datetime time,double lot)
{
   int
      Leverage=AccountLeverage(),
      index;
   string
      basesymbol,
      symbol;
//---
   basesymbol=AccountCurrency();
// Прямая пара
   if(StringSubstr(symb,3,0)==basesymbol)
   {
      index=iBarShift(symb,PERIOD_M1,time,false);
      return(NormalizeDouble(100000/Leverage*lot*iOpen(symb,PERIOD_M1,index),2));
   }
// Обратная пара
   if(StringSubstr(symb,0,3)==basesymbol)
      return(NormalizeDouble(100000/Leverage*lot,2));

// Кросс
// Поиск валютной пары для расчета маржи в базовой валюте
   symbol=StringConcatenate(StringSubstr(symb,0,3),basesymbol);
   if(MarketInfo(symbol,MODE_BID)!=0)
   {
      index=iBarShift(symbol,PERIOD_M1,time,false);
      return(NormalizeDouble(100000/Leverage*lot*iOpen(symbol,PERIOD_M1,index),2));
   }

   symbol=StringConcatenate(basesymbol,StringSubstr(symb,0,3));
   if(MarketInfo(symbol,MODE_BID)!=0)
   {
      index=iBarShift(symbol,PERIOD_M1,time,false);
      return(NormalizeDouble(100000/Leverage*lot/iOpen(symbol,PERIOD_M1,index),2));
   }
   return(0); // Нет данных
}
Причина обращения: