Автор |
Сообщение |
BabyBear
Советник
Зарегистрирован: 10.12.2008
Сообщения: 53
|
Код: |
MA1 = MA( Close, 10);
MA2 = MA( Close, 30);
d = High - Low;
MA3 = IIf( MA1 < MA2, MA1 - 5*d, MA2 + 5*d);
Plot( MA1, "", colorRed, styleLine);
Plot( MA2, "", colorGreen, styleLine);
Plot( MA3, "", colorBlue, styleDots );
Plot( Close, "", colorBlack, styleCandle);
|
|
|
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Сергей
Зарегистрирован: 16.03.2008
Сообщения: 168
|
BabyBear писал(а): |
Код: |
MA1 = MA( Close, 10);
MA2 = MA( Close, 30);
d = High - Low;
MA3 = IIf( MA1 < MA2, MA1 - 5*d, MA2 + 5*d);
Plot( MA1, "", colorRed, styleLine);
Plot( MA2, "", colorGreen, styleLine);
Plot( MA3, "", colorBlue, styleDots );
Plot( Close, "", colorBlack, styleCandle);
|
|
А чего за код такой хитрый? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
BabyBear
Советник
Зарегистрирован: 10.12.2008
Сообщения: 53
|
Сергей писал(а): |
А чего за код такой хитрый? |
Это ответ на пост commenced |
|
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
BabyBear писал(а): |
Сергей писал(а): |
А чего за код такой хитрый? |
Это ответ на пост commenced |
Не, не на мой точно, посмотри пожалуста внимательнее мой код линий и расчет их периода, и описание того что я хочу получить. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
BabyBear
Советник
Зарегистрирован: 10.12.2008
Сообщения: 53
|
commenced писал(а): |
Не, не на мой точно, посмотри пожалуста внимательнее мой код линий и расчет их периода, и описание того что я хочу получить. |
Я же знаю на какой пост отвечал, как думаешь? Я написал, как из двух линий сделать одну. вопрос ведь про это был. Если тебе не понятно, как каждую из линий получить - напиши подробное описание словами |
|
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
BabyBear писал(а): |
commenced писал(а): |
Не, не на мой точно, посмотри пожалуста внимательнее мой код линий и расчет их периода, и описание того что я хочу получить. |
Я же знаю на какой пост отвечал, как думаешь? Я написал, как из двух линий сделать одну. вопрос ведь про это был. Если тебе не понятно, как каждую из линий получить - напиши подробное описание словами |
Нет, потому что ты не разбирался в том, что нужно спрашиваюшему.
2 кривые (которые не могут существавать одновременно) точкой начала расчета и отрисовки первой линии является условие когда вторая линия становиться выше своей средней и хая, но самое главное это взаимо зависимость периодов (для этого цикл и требуется)
Cond1 = d1<g1 AND H>g1;
count1 = BarsSince(Signal1);
g = Ref(с,-1)-LLV(Ref(H-L,-1),count2);
d = EMA(g,3);
После того как первая линия становиться ниже средней и лоу, начинается отрисовка второй лини.
Cond2 = d<g AND H>g;
count2 = BarsSince(Signal2);
g1 = Ref(с,-1)+LLV(Ref(H-L,-1),count2);
d1 = EMA(g,3);
По окончании цикла, добовляем
P = iif(d1==1,d1,d);
Plot(P,"P", 6,1);
и получаем линию типа параболика. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
BabyBear
Советник
Зарегистрирован: 10.12.2008
Сообщения: 53
|
commenced писал(а): |
d = EMA(g,3);
d1 = EMA(g,3);
|
здесь нет ошибки? |
|
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
BabyBear писал(а): |
commenced писал(а): |
d = EMA(g,3);
d1 = EMA(g,3);
|
здесь нет ошибки? |
Есть, d1 = EMA(g1,3); |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
BabyBear
Советник
Зарегистрирован: 10.12.2008
Сообщения: 53
|
commenced писал(а): |
Cond1 = d1<g1 AND H>g1;
Cond2 = d<g AND H>g;
|
а тут нет ?
по моему должно быть где то
g>L |
|
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
BabyBear
Советник
Зарегистрирован: 10.12.2008
Сообщения: 53
|
Примерно так. Ошибки не искал особо
Код: |
C1 = Ref( Close, -1);
S1 = Ref( High - Low, -1);
period = 3;
g = C1;
g1 = C1;
for( i=0; i<period ; i++)
{
g[i] = C1[i] - S1[i];
g1[i] = C1[i] + S1[i];
}
bar1 = 3;
bar2 = 3;
sig1 = True;
sig2 = False;
asig1 = True;
asig2 = False;
my_llv=0;
my_llv1=0;
for( i=period; i<BarCount; i++)
{
my_llv[i] = S1[ bar2];
for( j = bar2 + 1; j<i; j++)
{
if( my_llv[i] > S1[ j])
my_llv[i] = S1[ j];
}
g[i] = C1[i] - my_llv[i];
my_llv1[i] = S1[ bar1];
for( j = bar1 + 1; j<i; j++)
{
if( my_llv1[i] > S1[ j])
my_llv1[i] = S1[ j];
}
g1[i] = C1[i] + my_llv1[i];
// здесь не ema, но средняя
d[i] = 0;
d1[i] = 0;
for( j= i-period; j<i; j++)
{
d[i] = d[i] + g[j] / period;
d1[i] = d1[i] + g1[j] / period;
}
if ( sig2)
if( (d1[i] < g1[i]) && ( g1[i] < High[i]))
{
sig1 = True;
sig2 = False;
bar1 = i;
}
if ( sig1)
if( (d[i] < g[i]) && ( g[i] > Low[i]))
{
sig1 = False;
sig2 = True;
bar2 = i;
}
asig1[i] = sig1;
asig2[i] = sig2;
}
Plot( IIf( asig1, g, g1), "", IIf( asig1, colorRed, colorBlue), styleDots );
Plot( Close, "", colorBlack, styleCandle); |
|
Последний раз редактировалось: BabyBear (Сб Янв 24, 2009 6:13 pm), всего редактировалось 1 раз |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Спасибо |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
BabyBear
Советник
Зарегистрирован: 10.12.2008
Сообщения: 53
|
commenced писал(а): |
Спасибо |
я только что исправил текст. Там очевидно есть еще ошибки, но направление правильное
вот тут
Код: |
if( (d[i] < g[i]) && ( g[i] > Low[i])) |
я уже исправил, но возможно надо так
Код: |
if( (d[i] > g[i]) && ( g[i] > Low[i])) |
|
|
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
BabyBear писал(а): |
commenced писал(а): |
Спасибо |
я только что исправил текст. Там очевидно есть еще ошибки, но направление правильное
вот тут
Код: |
if( (d[i] < g[i]) && ( g[i] > Low[i])) |
я уже исправил, но возможно надо так
Код: |
if( (d[i] > g[i]) && ( g[i] > Low[i])) |
|
Верной дорогой идем товарищи! Я уже заметил эту ошибку и поправил, прошу прощение за ляпы в посте. Теперь вопрос по коду, 3 введена для первого расчета после чего период плавает я правильно понял? Просто если это так то почему изменив период = 5, получается совершенно другая отрисовка. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
BabyBear
Советник
Зарегистрирован: 10.12.2008
Сообщения: 53
|
в начале поменяй
Код: |
bar1 = period ;
bar2 = period ;
|
period - это период ema() |
|
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Код: |
my_hhv=0;
my_hhv1=0;
for( i=period+1; i<BarCount; i++)
{
my_hhv[i] = S1[ bar2];
for( j = bar2 + 1; j<i; j++)
{
if( my_hhv[i] < S1[ j])
my_hhv[i] = S1[ j];
}
g[i] = C1[i] - my_hhv[i];
my_hhv1[i] = S1[ bar1];
for( j = bar1 + 1; j<i; j++)
{
if( my_hhv1[i] < S1[ j])
my_hhv1[i] = S1[ j];
}
g1[i] = C1[i] + my_hhv1[i]; |
Заменил эту часть чтоб брался не минимум а максимум выдает бред и грвфик плывет, почему? |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|