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

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


Не вдаваясь в "тайный смысл" расчитываемого, из Вашего кода следует, что:

1. Текущее изменение стоимости расчитывается функцией

double clop(string para, int x)

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

2. Максимальная стоимость расчитывается функцией

double clopH(string para, int x)

, которая всегда возвращает положительное значение, т.к. High всегда больше Open.

3. Минимальная стоимость расчитывается функцией

double clopL(string para, int x)

, которая тоже всегда возвращает положительное значение, т.к. Open всегда больше Low.

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

А кто и когда решил что время максимумов и минимумов на разных инструментах совпадает?
 
Vinin:

А кто и когда решил что время максимумов и минимумов на разных инструментах совпадает?


естественно, тот индикатор показывает +/- "километр".

Но самая главная ошибка в том, что в двух случаях Open является вычитаемым, а в одном - уменьшаемым.

 
NIkolay2000:

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

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

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

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

Пример подобного индикатора в приложении. Комментарии в коде

Файлы:
 
Vinin:

А кто и когда решил что время максимумов и минимумов на разных инструментах совпадает?

однозаннчо не совпадает, я просто хотел высислить теоретически максимум и минимум который мог быть от их совпадаения.
 
PapaYozh:


Не вдаваясь в "тайный смысл" расчитываемого, из Вашего кода следует, что:

1. Текущее изменение стоимости расчитывается функцией

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

2. Максимальная стоимость расчитывается функцией

, которая всегда возвращает положительное значение, т.к. High всегда больше Open.

3. Минимальная стоимость расчитывается функцией

, которая тоже всегда возвращает положительное значение, т.к. Open всегда больше Low.


последние функции могут принимать значение ноль если экстремум и открытие совпадают, а в целом согласен, нужно от low - open
 
NIkolay2000:

последние функции могут принимать значение ноль если экстремум и открытие совпадают, а в целом согласен, нужно от low - open

Сдаётся мне, что во всех функциях нало вместо Open использовать Close предыдущего бара.
 
PapaYozh:

Сдаётся мне, что во всех функциях нало вместо Open использовать Close предыдущего бара.

я не против, только аргументируйте плиз. Какое преимущество будет у этого решения?
 

вообщем я сделал low - open, и все стало на свои места. Индикатор стал выглядеть гораздо логичней.

А в самой формуле по расчету прибыли нет ошибок?

Пока картинка меня радует.


 

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

double clop1440(string para, int x)
{
double rez;
rez=0;
    rez=(iClose(para,0,x)-iOpen(para,1440,x))/MarketInfo(para,MODE_POINT)* MarketInfo(Symbol(), MODE_TICKVALUE);

return(rez);
}
Причина обращения: