есть массив отношений величин. одной к другой. это не абсолютные значения, а индексы, отношения. это значит, что скажем 0.5 - это не "на 50% меньше". это значит, меньше В 2 РАЗА а 0.2 - это не на 80% меньше, а в 5 раз. при этом 2 или 5 - это как раз корректно, выражает суть - в 2 и 5 раз больше, соответственно
пример массива 1.2 1.02 0.833 10 0.98 0.1
Уважаемый что не так? я же скрипт написал вам, может не совсем понял что и как вы мыслите - но ведь блин рабочий
double volume[7]={1,1.2, 1.02, 0.833, 10, 0.98, 0.1};
int aver_bar=7;
//double muss[n];for ( int n=0; n>=0;n--) // n - номер бара для поиска коеффициента, i- количество баров в которіх будет найдено коефф.
{
double z,k,zz,f;
k=0; // k счетчик
z=volume[n]; // Volume- буфер величины которую сравниваем, z-записываем чтобы каждый раз не обращаться в массивfor (int m=n+aver_bar-1; m>=n+1;m--) // перебор всех баров влияющих на коееф.
{
zz=(volume[m])/z-1; // отношение во сколько раз величина на исходном баре больше или меньше искомого if( zz<0) zz= -1/(zz+1)+1; // если величина zz меньще 1
k+=zz; // сумируем в k значение
}
//muss[n]=-k/((aver_bar-1)/1.0); // рассчитиваем коеффициент на n-м бареAlert ("rez = ", k/((aver_bar-1)/1.0)+1);
}
Алерт возвращает 0.9999
Индикатор посторенный на етом алгоритме показывает неправильную логику ( вернее если в индикаторе будет muss[n]=-k/((aver_bar-1)/1.0) в место muss[n]=k/((aver_bar-1)/1.0)+1)
И он чемто напоминает отдаленно RSI но более чувствителен (в плане угла наклона между барами)
если кто знает иное, математическое решение - буду благодарен )
Нету иного решения, так как вы массив разделяете на две части для которых производите разные вычисления
1) для чисел больше 1 - находите прирост члена массива в процентах от единицы
2) для чисел меньше 1 - находите прирост от меньшего единицы числа в процентах, чтобы получить единицу, и результат берете со знаком минус "-"
3) находите среднее ареффметическое значений рассчитаных по двум разным формулам
4) прибавляете единицу (непонятно зачем, честно говоря, возможно для дальнейших расчетов, но нагляднее когда все крутится вокруг 0 (по крайней мере лично мне) )
4) прибавляете единицу (непонятно зачем, честно говоря, возможно для дальнейших расчетов, но нагляднее когда все крутится вокруг 0 (по крайней мере лично мне) )
по этому пункту я пояснял уже.
если посчитать пример типа 0.2 5 5 0.2 без прибавления 1цы, получится 0. но нам то надо коэффициент. физическим смысл ноля в данном случае - "значение не изменится". т е коэф на самом деле 1.0
при этом если все значения скажем равны -> 5 5 5 5 итог будет 5 - и это будет верным итогом.
у меня получилось как то так
for(i=0; i<n; i++){ // цикл по массиву if (Arr[i]>=1) {Sum=Sum+(Arr[i]-1);} else (Sum=Sum-(1/Arr[i] -1)); } Sum=Sum/n;
if (Sum>0) res=1+Sum; else res=-1/(Sum-1);
зачем это надо? ну скажем, надо найти отношение HL вторника к HL понедельника, среднее за -цать лет ;-)
Прошу помощи в поиске или написания элементарного советника.
Условия следующие:
Если предыдущий бар растет, (open < close) то на текущем мы продаем.
Если предыдущий бар падает, (open > close) то на текущем мы покупаем.
Открытие позиции происходит по цене open нового бара. Закрытие позиции происходит по закрытию бара.
Сам не могу че-то найти.
Заранее спасибо.
И не найдете, потому что смысла в этом нет. Если думаете что смысл всё же есть, предоставьте картинку с чарта с отмеченными точками входа и выхода, хотябы за один день, только с учетом спреда.
И не найдете, потому что смысла в этом нет. Если думаете что смысл всё же есть, предоставьте картинку с чарта с отмеченными точками входа и выхода, хотябы за один день, только с учетом спреда.
Я достаточно четко представляю для чего мне нужен такой советник, поэтому огромная просьба помочь. Словом или делом) У самого пока не получается написать. Что за картинку нужно сделать?
zorkiy911: Я достаточно четко представляю для чего мне нужен такой советник, поэтому огромная просьба помочь. Словом или делом) У самого пока не получается написать. Что за картинку нужно сделать?
Откройте великую тайну, для чего такой алгоритм ?
по вашему условию будет так
с реверсом
но стабильности не будет ни в первом ни во втором случае.
ну не совсем так.
есть массив отношений величин. одной к другой. это не абсолютные значения, а индексы, отношения.
это значит, что скажем 0.5 - это не "на 50% меньше". это значит, меньше В 2 РАЗА
а 0.2 - это не на 80% меньше, а в 5 раз.
при этом 2 или 5 - это как раз корректно, выражает суть - в 2 и 5 раз больше, соответственно
пример массива
1.2 1.02 0.833 10 0.98 0.1
Уважаемый что не так? я же скрипт написал вам, может не совсем понял что и как вы мыслите - но ведь блин рабочий
Алерт возвращает 0.9999
Индикатор посторенный на етом алгоритме показывает неправильную логику ( вернее если в индикаторе будет muss[n]=-k/((aver_bar-1)/1.0) в место muss[n]=k/((aver_bar-1)/1.0)+1)
И он чемто напоминает отдаленно RSI но более чувствителен (в плане угла наклона между барами)
если кто знает иное, математическое решение - буду благодарен )
Нету иного решения, так как вы массив разделяете на две части для которых производите разные вычисления
1) для чисел больше 1 - находите прирост члена массива в процентах от единицы
2) для чисел меньше 1 - находите прирост от меньшего единицы числа в процентах, чтобы получить единицу, и результат берете со знаком минус "-"
3) находите среднее ареффметическое значений рассчитаных по двум разным формулам
4) прибавляете единицу (непонятно зачем, честно говоря, возможно для дальнейших расчетов, но нагляднее когда все крутится вокруг 0 (по крайней мере лично мне) )
4) прибавляете единицу (непонятно зачем, честно говоря, возможно для дальнейших расчетов, но нагляднее когда все крутится вокруг 0 (по крайней мере лично мне) )
по этому пункту я пояснял уже.
если посчитать пример типа 0.2 5 5 0.2 без прибавления 1цы, получится 0.
но нам то надо коэффициент. физическим смысл ноля в данном случае - "значение не изменится".
т е коэф на самом деле 1.0
при этом если все значения скажем равны -> 5 5 5 5
итог будет 5 - и это будет верным итогом.
у меня получилось как то так
for(i=0; i<n; i++){ // цикл по массиву
if (Arr[i]>=1) {Sum=Sum+(Arr[i]-1);}
else (Sum=Sum-(1/Arr[i] -1));
}
Sum=Sum/n;
if (Sum>0) res=1+Sum;
else res=-1/(Sum-1);
зачем это надо?
ну скажем, надо найти отношение HL вторника к HL понедельника, среднее за -цать лет ;-)
зачем это надо?
ну скажем, надо найти отношение HL вторника к HL понедельника, среднее за -цать лет ;-)
А в MQL5 есть тиковая история, не в курсе? Я как не читал и там найти не смог.
В МТ5 тиковой истории тоже нет. В тестере тики генерируются, каким образом описывается здесь.
Добрый день, уважаемые!
Прошу помощи в поиске или написания элементарного советника.
Условия следующие:
Если предыдущий бар растет, (open < close) то на текущем мы продаем.
Если предыдущий бар падает, (open > close) то на текущем мы покупаем.
Открытие позиции происходит по цене open нового бара. Закрытие позиции происходит по закрытию бара.
Сам не могу че-то найти.
Заранее спасибо.
Добрый день, уважаемые!
Прошу помощи в поиске или написания элементарного советника.
Условия следующие:
Если предыдущий бар растет, (open < close) то на текущем мы продаем.
Если предыдущий бар падает, (open > close) то на текущем мы покупаем.
Открытие позиции происходит по цене open нового бара. Закрытие позиции происходит по закрытию бара.
Сам не могу че-то найти.
Заранее спасибо.
И не найдете, потому что смысла в этом нет. Если думаете что смысл всё же есть, предоставьте картинку с чарта с отмеченными точками входа и выхода, хотябы за один день, только с учетом спреда.
И не найдете, потому что смысла в этом нет. Если думаете что смысл всё же есть, предоставьте картинку с чарта с отмеченными точками входа и выхода, хотябы за один день, только с учетом спреда.
Я достаточно четко представляю для чего мне нужен такой советник, поэтому огромная просьба помочь. Словом или делом) У самого пока не получается написать. Что за картинку нужно сделать?
Откройте великую тайну, для чего такой алгоритм ?
по вашему условию будет так
с реверсом
но стабильности не будет ни в первом ни во втором случае.
Советник набросал за 5ть минут, балуйтесь)