расчет стоимости корзины

 

Всем привет.

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

Получается вот такой индикатор.


 

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

Прибыль по каждому инструменту отдельно считаю вот такими функциями

double clop(string para, int x)
{
double rez;
rez=0;

    rez=(iClose(para,0,x)-iOpen(para,0,x))/MarketInfo(para,MODE_POINT)* MarketInfo(Symbol(), MODE_TICKVALUE);

return(rez);
}
double clopH(string para, int x)
{
double rez;
rez=0;


  rez=(iHigh(para,0,x)-iOpen(para,0,x))/MarketInfo(para,MODE_POINT)* MarketInfo(Symbol(), MODE_TICKVALUE);

return(rez);
}
//--------------
double clopL(string para, int x)
{
double rez;
rez=0;

  rez=(iOpen(para,0,x)-iLow(para,0,x))/MarketInfo(para,MODE_POINT)* MarketInfo(Symbol(), MODE_TICKVALUE);

return(rez);
}
 
соотвественно 3 функции чтобы найти минимальное значение корзины, максимальное и текущее.
 
я саму формулу расчета в обещем виде взял из форума, ибо эта тема подымалась не раз. Меня смущает то что значения рассчитываются не корректно.
 

rez=(iClose(para,0,x)-iOpen(para,0,x))/MarketInfo(para,MODE_POINT)* MarketInfo(Symbol(), MODE_TICKVALUE);

Пиши конкретный инструмент

И потом вот такую вещь ранее писали

MarketInfo("EURUSD", MODE_TICKVALUE)

(и, возможно, другие, из этой серии) дают правильный результат только на активном инструменте (по крайней мере в тестере), а в остальных случаях дают 0.
Или, может, я что-то неправильно понимаю?

 
M_Dimens:

rez=(iClose(para,0,x)-iOpen(para,0,x))/MarketInfo(para,MODE_POINT)* MarketInfo(Symbol(), MODE_TICKVALUE);

Пиши конкретный инструмент

И потом вот такую вещь ранее писали

MarketInfo("EURUSD", MODE_TICKVALUE)

(и, возможно, другие, из этой серии) дают правильный результат только на активном инструменте (по крайней мере в тестере), а в остальных случаях дают 0.
Или, может, я что-то неправильно понимаю?

тестер в четвёрке одновалютный
 
paukas:
тестер в четвёрке одновалютный

Вы меня спрашиваете, это надо у автора спросить чего он считает может и многовалютный
 
M_Dimens:

rez=(iClose(para,0,x)-iOpen(para,0,x))/MarketInfo(para,MODE_POINT)* MarketInfo(Symbol(), MODE_TICKVALUE);

Пиши конкретный инструмент

И потом вот такую вещь ранее писали

MarketInfo("EURUSD", MODE_TICKVALUE)

(и, возможно, другие, из этой серии) дают правильный результат только на активном инструменте (по крайней мере в тестере), а в остальных случаях дают 0.
Или, может, я что-то неправильно понимаю?


ну у меня целый список инструментов, вообщем от 5 до 10 штук.

Для это мне и нужна функция.

p1[i] =clop(pair1,i)+clop(pair2,i)+clop(pair3,i)+clop(pair4,i)+clop(pair5,i)

вот так считаю сумму портфеля

 
M_Dimens:

Вы меня спрашиваете, это надо у автора спросить чего он считает может и многовалютный

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

Портфель много валютный есть и мажоры в нем а есть и кросы. Могу исключить кросы если слышком это критично для расчетов.

 
NIkolay2000:

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

Прибыль по каждому инструменту отдельно считаю вот такими функциями


Внимательно на свои формулы посмотрите.
 
смотрел. Много раз. Понимаю что гдето ошибка, но локализовать не могу. Формулы все описал на форуме.
Причина обращения: