Определение стоимости 1 пункта. - страница 2

 
panelektrik:
//------------------------------------------------------
double StoimPunkt(string B)
{RefreshRates();
double S = MarketInfo(B,MODE_TICKVALUE)/(MarketInfo(B,MODE_TICKSIZE)/MarketInfo(B,MODE_POINT));
return(S);}
//+-----------------------------------------------------

всегда пользовался этой функцией, это стоимость пункта при 1 лоте

А на ошибку деления на ноль проверять не надо?
 
panelektrik:
//------------------------------------------------------
double StoimPunkt(string B)
{RefreshRates();
double S = MarketInfo(B,MODE_TICKVALUE)/(MarketInfo(B,MODE_TICKSIZE)/MarketInfo(B,MODE_POINT));
return(S);}
//+-----------------------------------------------------

всегда пользовался этой функцией, это стоимость пункта при 1 лоте

Вместо первой функции в формуле можно написать как предложил getch для универсальности:

double TrueTickValue(string Symb)
{
  double TickValue = MarketInfo(Symb, MODE_TICKVALUE);
  double Tmp = MarketInfo(Symb, MODE_MARGININIT);
  
  if (Tmp != 0) TickValue *=  MarketInfo(Symb, MODE_MARGINREQUIRED) / Tmp;
    
  return(TickValue);
}
 
Andrei01:
А на ошибку деления на ноль проверять не надо?

можно добавить, хотя мне это не нужно

//------------------------------------------------------
double StoimPunkt(string B)
{RefreshRates();
if(MarketInfo(B,MODE_TICKVALUE)!=0&&MarketInfo(B,MODE_TICKSIZE)!=0&&MarketInfo(B,MODE_POINT)!=0){
double S = MarketInfo(B,MODE_TICKVALUE)/(MarketInfo(B,MODE_TICKSIZE)/MarketInfo(B,MODE_POINT));}
return(S);}
//+-----------------------------------------------------

 

Подскажите пожалуйста, верно ли записаны формулы для расчета стоимости 1 пункта для 1 лота?

EURUSD    0,0001*100000
GBPUSD    0,0001*100000
AUDUSD    0,0001*100000
NZDUSD    0,0001*100000
USDCAD    0,0001*100000/USDCAD
USDCHF    0,0001*100000/USDCHF
USDJPY    0,01*100000/USDJPY
EURGBP    0,0001*100000*EURUSD/EURGBP
EURAUD    0,0001*100000*EURUSD/EURAUD
EURNZD    0,0001*100000*EURUSD/EURNZD
EURCAD    0,0001*100000*EURUSD/EURCAD
EURCHF    0,0001*100000*EURUSD/EURCHF
EURJPY    0,01*100000*EURUSD/EURJPY
GBPAUD    0,0001*100000*GBPUSD/GBPAUD
GBPNZD    0,0001*100000*GBPUSD/GBPNZD
GBPCAD    0,0001*100000*GBPUSD/GBPCAD
GBPCHF    0,0001*100000*GBPUSD/GBPCHF
GBPJPY    0,01*100000*GBPUSD/GBPJPY
AUDNZD    0,0001*100000*AUDUSD/AUDNZD
AUDCAD    0,0001*100000*AUDUSD/AUDCAD
AUDCHF    0,0001*100000*AUDUSD/AUDCHF
AUDJPY    0,01*100000*AUDUSD/AUDJPY
NZDCAD    0,0001*100000*NZDUSD/NZDCAD
NZDCHF    0,0001*100000*NZDUSD/NZDCHF
NZDJPY    0,01*100000*NZDUSD/NZDJPY
CADCHF    0,0001*100000*USDCAD*CADCHF
CADJPY    0,01*100000*USDCAD/CADJPY
CHFJPY    0,01*100000*USDCHF/CHFJPY

За ответ, заранее благодарю!

p.s. в особенности интересует верность последних 3х формул!
 
NovikovDPUA:

Подскажите пожалуйста, верно ли записаны формулы для расчета стоимости 1 пункта для 1 лота?

,,,

За ответ, заранее благодарю!

p.s. в особенности интересует верность последних 3х формул!
Чем же универсальное решение не устраивает?
 
evillive:
Чем же универсальное решение не устраивает?
Даже не знаю, что вам ответить, т.к. я не программер и сперва мне нужны расчеты в экселе для просмотра изменений стоимости пункта на истории на каждом баре!
 
NovikovDPUA:
Даже не знаю, что вам ответить, т.к. я не программер и сперва мне нужны расчеты в экселе для просмотра изменений стоимости пункта на истории на каждом баре!

Пока будете у брокера с 4-значными котировками и стандартным лотом в 100к единиц, всё будет верно, а вот если переедете к нестандартному брокеру или с 5-значными котировками, то придётся пересчитывать.


З.Ы.: Кроме кроссов, там формулы у вас неправильные какие-то, погуглите правильные.

 
evillive:

Пока будете у брокера с 4-значными котировками и стандартным лотом в 100к единиц, всё будет верно, а вот если переедете к нестандартному брокеру или с 5-значными котировками, то придётся пересчитывать.


З.Ы.: Кроме кроссов, там формулы у вас неправильные какие-то, погуглите правильные.

А в чем именно разница стоимости пункта на 4х или 5ти значных котировках, если имеется ввиду стоимость пункта, а не пипса, именно 4ого знака после запятой, что в 4х или в 5ти значных котировках?

Я погуглил еще до вопроса и по этому описанию http://forex-mix.ru/base/stoimost-punkta-na-forex.php составил формулы. Закрались сомнения, вот поэтому и спросил!

И что значит "не правильные какие-то"? А по конкретнее можно? Я ведь не экстрасенс! :)

 
NovikovDPUA:

А в чем именно разница стоимости пункта на 4х или 5ти значных котировках, если имеется ввиду стоимость пункта, а не пипса, именно 4ого знака после запятой, что в 4х или в 5ти значных котировках?

Я погуглил еще до вопроса и по этому описанию http://forex-mix.ru/base/stoimost-punkta-na-forex.php составил формулы. Закрались сомнения, вот поэтому и спросил!

И что значит "не правильные какие-то"? А по конкретнее можно? Я ведь не экстрасенс! :)

Для ручных расчётов разницы может и нет, а для автомата при 5-знаке и подмене числа 0,0001 реальным значением пункта результат будет в 10 раз меньше. Кроме того, есть брокеры, у которых лот 1000 единиц (центовый) или стандартный лот = 10000 единиц (как в инстафорексе). Там тоже результат неожиданный получится.

А про неправильные формулы, вот, например, ваша формула для CADCHF    0,0001*100000*USDCAD*CADCHF - откуда такое? Результат расчёта и близко не равен стоимости пункта CADCHF - 0.0001*100000*1.1655*0.8258=9,62

правильная формула будет 0,0001*100000/USDCHF = 0.0001*100000/0.9638=10,38

А ещё правильнее  будет в программе возвращать

double tkv=MarketInfo(NULL,MODE_TICKVALUE);

и не парить себе мозги формулами.
 
evillive:

Для ручных расчётов разницы может и нет, а для автомата при 5-знаке и подмене числа 0,0001 реальным значением пункта результат будет в 10 раз меньше. Кроме того, есть брокеры, у которых лот 1000 единиц (центовый) или стандартный лот = 10000 единиц (как в инстафорексе). Там тоже результат неожиданный получится.

А про неправильные формулы, вот, например, ваша формула для CADCHF    0,0001*100000*USDCAD*CADCHF - откуда такое? Результат расчёта и близко не равен стоимости пункта CADCHF - 0.0001*100000*1.1655*0.8258=9,62

правильная формула будет 0,0001*100000/USDCHF = 0.0001*100000/0.9638=10,38

А ещё правильнее  будет в программе возвращать

double tkv=MarketInfo(NULL,MODE_TICKVALUE);

и не парить себе мозги формулами.

Ну, если бы я был программером или хотя бы немного шарил, то наверно так бы и сделал и не парил себе мозги!

А пока у меня задача для экселя - получить стоимость пункта (4ый знак после запятой) на каждом баре для нормального стандартного лота, который используют все дилеры, кроме инстафорекс!

И по поводу CADCHF - разве для расчета кросс-курса не надо использовать 2 валютные пары с USD? USDCAD и USDCHF

Куда в ваше формуле делась пара USDCAD?


Как пример: для EURUSD 1 пункт (1.24500 - 4 знак после запятой) = 10$. По этому же принципу мне необходимо рассчитать все пары!
Причина обращения: