Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
NIkolay2000
624
NIkolay2000  

Всем привет.

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

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


NIkolay2000
624
NIkolay2000  

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

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

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);
}
NIkolay2000
624
NIkolay2000  
соотвественно 3 функции чтобы найти минимальное значение корзины, максимальное и текущее.
NIkolay2000
624
NIkolay2000  
я саму формулу расчета в обещем виде взял из форума, ибо эта тема подымалась не раз. Меня смущает то что значения рассчитываются не корректно.
shadowmana
714
shadowmana  

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

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

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

MarketInfo("EURUSD", MODE_TICKVALUE)

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

Vladimir Paukas
4099
Vladimir 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.
Или, может, я что-то неправильно понимаю?

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

Вы меня спрашиваете, это надо у автора спросить чего он считает может и многовалютный
NIkolay2000
624
NIkolay2000  
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)

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

NIkolay2000
624
NIkolay2000  
M_Dimens:

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

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

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

PapaYozh
3768
PapaYozh  
NIkolay2000:

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

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


Внимательно на свои формулы посмотрите.
NIkolay2000
624
NIkolay2000  
смотрел. Много раз. Понимаю что гдето ошибка, но локализовать не могу. Формулы все описал на форуме.
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий