Автор |
Сообщение |
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Расчитывать в цикле массив которому в момент образования нового бара (последний тик старого) присваивать 1. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
000 писал(а): |
Расчитывать в цикле массив которому в момент образования нового бара (последний тик старого) присваивать 1. |
Ну это легко,
Код: |
SetBarsRequired( 100000, 0 );
pi = Optimize("pi", 1, 0.1, 5, 0.2);
d = C;
C1 = C;
O1 = O;
H1 = H;
L1 = L;
n = 1;
for(i = 2; i < BarCount; i ++)
{
if(i == 2) trend[1] = 1;
if(trend[i-1] == 1)
{
n[i] = n[i-1];
O1[i] = O1[i-1];
t[i] = 1;
t[i-1] = 0;
C1[i] = d[i];
if(L[i] > L1[i-1])
{
L1[i] = L1[i-1];
}
else
{
L1[i] = L[i];
}
if(H[i] > h1[i-1])
{
H1[i] = H[i];
}
else
{
H1[i] = H1[i-1];
}
if(h1[i]-L1[i] > (C[i-1]/100)*pi)
{
trend[i] = 0;
t[i-1] = 1;
O1[i] = O[i];
H1[i] = H[i];
L1[i] = L[i];
n[i] = n[i]+1;
}
else
{
trend[i] = 1;
}
}
if(trend[i-1] == 0)
{
t[i] = 1;
t[i-1] = 0;
n[i] = n[i-1];
O1[i] = O1[i-1];
C1[i] = d[i];
if(L[i] > L1[i-1])
{
L1[i] = L1[i-1];
}
else
{
L1[i] = L[i];
}
if(H[i] > h1[i-1])
{
H1[i] = H[i];
}
else
{
H1[i] = H1[i-1];
}
if (h1[i]-L1[i] > (C[i-1]/100)*pi)
{
trend[i] = 1;
t[i-1] = 1;
O1[i] = O[i];
H1[i] = H[i];
L1[i] = L[i];
n[i] = n[i]+1;
}
else
{
trend[i] = 0;
}
}
}
O2 = IIf(trend, O1, O1);
L2 = IIf(trend, L1, L1);
H2 = IIf(trend, H1, H1);
Plot(O2,"o", 4,1);
Plot(L2,"l", 6,1);
Plot(H2,"h", 3,1);
Plot(C1,"c", 1,1);
d1 = H2-L2;
Title = Name() + StrFormat("{{INTERVAL}}") + Date()+"\n\n" +
"хай :" +H2+"\n"+
"Лоу :" +L2+"\n"+
"Открытие :" +O2+"\n"+
"Закрытие :" +C1+"\n"+
"номер бара :" +n+"\n"+
"индекс :" +T+"\n"+
"Размер :" +d1+"\n";
|
А дальше? |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Не знаю, что у тебя вот это делает
Код: |
...
O2 = IIf(trend, O1, O1);
L2 = IIf(trend, L1, L1);
H2 = IIf(trend, H1, H1);
...
|
???
Дальше надо примерно так
Код: |
O3 = ValueWhen(t, O1);
...
|
... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
000 писал(а): |
Не знаю, что у тебя вот это делает
Код: |
...
O2 = IIf(trend, O1, O1);
L2 = IIf(trend, L1, L1);
H2 = IIf(trend, H1, H1);
...
|
???
... |
Блин, это памятник невнимательности Спасибо попробую. Да внес в код поправки(если кто заметил разницу ), чтоб на барах работать, а не с тиками, ну их нафик, ами тормозит страшно, а выгоды особой нет. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
000 писал(а): |
Дальше надо примерно так
Код: |
O3 = ValueWhen(t, O1);
...
|
... |
Не катит так он расчитывает среднюю для 5 мин а не псевдо баров. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Сперва вопросы.
У тебя ранж не фиксированный и берется в процентах от текущего закрытия? Судя по этому
Код: |
if(h1[i]-L1[i] > (C[i-1]/100)*pi)
|
Дальше. У тебя практически результирующий бар получился "размазан" по графику и если собираешься стандартными функциями расчитывать по нему индикаторы, то ничего не получится. Функции будут брать несколько значений с одного "размазанного" бара. Чтобы можно было пользоваться стандартными функциями надо собрать бары чтобы на против каждого бара базового фрейма был вновь построенный бар. Посмотри код ХО. На пауке есть, если ненайдешь скину сюда. Там такое реализовано.
Вообще по идее я смотрю этот подход не сильно отличается от построения ХО (крестики-нолики) |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
000 писал(а): |
Сперва вопросы.
У тебя ранж не фиксированный и берется в процентах от текущего закрытия? Судя по этому
Код: |
if(h1[i]-L1[i] > (C[i-1]/100)*pi)
|
Дальше. У тебя практически результирующий бар получился "размазан" по графику и если собираешься стандартными функциями расчитывать по нему индикаторы, то ничего не получится. Функции будут брать несколько значений с одного "размазанного" бара. Чтобы можно было пользоваться стандартными функциями надо собрать бары чтобы на против каждого бара базового фрейма был вновь построенный бар. Посмотри код ХО. На пауке есть, если ненайдешь скину сюда. Там такое реализовано.Вообще по идее я смотрю этот подход не сильно отличается от построения ХО (крестики-нолики) |
Да рандж не фиксированный, иначе приходилось бы при изменении цены на 10% пересчитывать новый. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
|