Автор |
Сообщение |
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
не могу понять почему плавает GLL:
Код: |
b = 0.2;
filt = ((H-L)+abs(C-O)) ;
s = b*filt;
u = b*filt;
gh = EMA(EMA(H,3),2);
gl = EMA(EMA(L,3),2);
for(i =5; i < BarCount; i ++)
{
if(i == 5)
ghh = gh[i];
gll = gl[i];
if( ghh[ i-1]-s[ i-1 ] > gh[ i ] )
{ ghh[ i ] = ghh[ i-1 ]-s[ i-1 ];}
else
{
if( ghh[ i- 1]+s[ i-1 ] < gh[ i ] )
{ghh[ i ] = ghh[ i-1 ]+s[ i-1 ]; }
else ghh[i] = gh[i];}
if( gll[ i-1]+s[ i-1 ] < gl[ i ] )
{gll[ i ] = gll[ i-1 ]+s[ i-1 ]; }
else
{
if( gll[ i- 1]+s[ i-1 ] > gl[ i ] )
{gll[ i ] = gll[ i-1 ]-s[ i-1 ];}
else gll[i] = gl[i];}}
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
Plot(ghh, "ghh", 1, styleStaircase);
Plot(gll, "gll", 4, styleStaircase); |
|
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
commenced писал(а): |
не могу понять почему плавает GLL:
|
В смысле? У меня вроде не плавает. Подробно код не смотрел. Чета тормозит он безбожно... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Красная линия это GLL, она не далжна быть прямой. а при прокрутке ей присваивается значение последнего бара и всей отрисуемой линии. а должно быть как у GHH. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Проблему снял, разбив на 2 цикла. один расчитывает GHH другой GLL. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Novi4ok
Зарегистрирован: 15.08.2008
Сообщения: 127
|
а куда в цикле ставится Buy и Sell?
и можно ли flip с ними использовать в цикле?
и Ref?
и функции типа LLV? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Novi4ok писал(а): |
а куда в цикле ставится Buy и Sell? |
Это обычные массивы которые в момент совершения соответствующей сделки должны принимать значение больше 0. Ставить можно в любое место чтобы правильно расчитались.
Novi4ok писал(а): |
и можно ли flip с ними использовать в цикле?
и Ref?
и функции типа LLV? |
Эти функции в цикле использовать нельзя. (на самом деле можно, но в очень специфических случаях) |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Novi4ok
Зарегистрирован: 15.08.2008
Сообщения: 127
|
так мне нужно в Buy писать Buy[i] или нет???
если flip нельзя использовать...мммм плохо
тогда придется в переменной запоминать в позе ли система.
и почему нельзя LLV, вроде ошибку не выдал...?
насколько корректна такая строчка в цикле:
PrevMin =LLV(Low[i-1], 19); |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Novi4ok писал(а): |
так мне нужно в Buy писать Buy[i] или нет???
|
Скорее всего да
Novi4ok писал(а): |
если flip нельзя использовать...мммм плохо
тогда придется в переменной запоминать в позе ли система.
|
В принципе можно использовать flip после цикла, а если тестировать систему, то Ами сам лтшние сигналы удалит.
Novi4ok писал(а): |
и почему нельзя LLV, вроде ошибку не выдал...?
насколько корректна такая строчка в цикле:
PrevMin =LLV(Low[i-1], 19); |
Запись LLV(Low[i-1], 19)
аналогична записи LLV(5, 19)
Это не ошибка, но смысла такая запись не имеет (цифра 5 взята просто так и ничего не обозначает). |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
burnus
Зарегистрирован: 29.03.2009
Сообщения: 5
Откуда: владивосток
|
Спецы, гляньте пожалуйста одним глазком.
Правильно ли с точки зрения программирования в Ами?
Навеяно из начала этой ветки. Вроде работает, но подводных камней не знаю.
А нельзя ли как-то два цикла объединить в один, или будет только хуже?
Заранее спасибо.
Код: |
CondLong=C>trend AND C>InputLine1 AND Hour() >= 5 & Hour() <= 14; //условие в длинную
OutBuy = C<OutLine AND Hour() >= 5 & Hour() <= 20;//условия выхода из длинной
CondShort=C<trend AND C<InputLine2 AND Hour() >= 5 & Hour() <= 14;//условие в короткую
OutShort = C>OutLine AND Hour() >= 5 & Hour() <= 20;// условие на выход из короткой
//Далее цикл для длинной
Buy=CondLong;
Sell=0;
position = 0;
for( i = 1; i < BarCount; i++ )
{
if(! position) // если система не в рынке
{
if(Buy[i])
{
position = 1; // открыта позиция
}
}
else // если система в рынке
{
Sell[i] =0;
}
if(OutBuy[i])
{
Sell[i] = 1; // выход из длинной
position = 0; // система не в рынке
}
}
// цикл для короткой
Short=CondShort;
Cover=0;
position = 0;
for( i = 1; i < BarCount; i++ )
{
if(! position) // если система не в рынке
{
if(Short[i])
{
position = 1; // открыта позиция
}
}
else // если система в рынке
{
Short[i] =0;
}
if(OutShort[i])
{
Cover[i] = 1; // выход из короткой
position = 0; // система не в рынке
}
} |
|
|
|
Посмотреть профиль Отправить личное сообщение AIM Address Yahoo Messenger MSN Messenger |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
burnus писал(а): |
Спецы, гляньте пожалуйста одним глазком.
Правильно ли с точки зрения программирования в Ами?
Навеяно из начала этой ветки. Вроде работает, но подводных камней не знаю.
А нельзя ли как-то два цикла объединить в один, или будет только хуже?
Заранее спасибо.
Код: |
CondLong=C>trend AND C>InputLine1 AND Hour() >= 5 & Hour() <= 14; //условие в длинную
OutBuy = C<OutLine AND Hour() >= 5 & Hour() <= 20;//условия выхода из длинной
CondShort=C<trend AND C<InputLine2 AND Hour() >= 5 & Hour() <= 14;//условие в короткую
OutShort = C>OutLine AND Hour() >= 5 & Hour() <= 20;// условие на выход из короткой
//Далее цикл для длинной
Buy=CondLong;
Sell=0;
position = 0;
for( i = 1; i < BarCount; i++ )
{
if(! position) // если система не в рынке
{
if(Buy[i])
{
position = 1; // открыта позиция
}
}
else // если система в рынке
{
Sell[i] =0;
}
if(OutBuy[i])
{
Sell[i] = 1; // выход из длинной
position = 0; // система не в рынке
}
}
// цикл для короткой
Short=CondShort;
Cover=0;
position = 0;
for( i = 1; i < BarCount; i++ )
{
if(! position) // если система не в рынке
{
if(Short[i])
{
position = 1; // открыта позиция
}
}
else // если система в рынке
{
Short[i] =0;
}
if(OutShort[i])
{
Cover[i] = 1; // выход из короткой
position = 0; // система не в рынке
}
} |
|
Может я конечно невнимателен. но для чего нужен цикл?
Начала кода у вас нет.
buy=C>trend AND C>InputLine1 AND Hour() >= 5 & Hour() <= 14; //условие в длинную
sell = C<OutLine AND Hour() >= 5 & Hour() <= 20;//условия выхода из длинной
Short=C<trend AND C<InputLine2 AND Hour() >= 5 & Hour() <= 14;//условие в короткую
cover = C>OutLine AND Hour() >= 5 & Hour() <= 20;// условие на выход из короткой
Equity(1); |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
burnus
Зарегистрирован: 29.03.2009
Сообщения: 5
Откуда: владивосток
|
Начало кода осталось за кадром.
По вопросу оно не имеет значения.
Ну, в принципе там 4 линии
трендовая, две на входы в длинную/короткую и сигнальная.
Я же спросил,- правильно ли с точки зрения программирования? |
|
|
Посмотреть профиль Отправить личное сообщение AIM Address Yahoo Messenger MSN Messenger |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
burnus писал(а): |
Начало кода осталось за кадром.
По вопросу оно не имеет значения.
Ну, в принципе там 4 линии
трендовая, две на входы в длинную/короткую и сигнальная.
Я же спросил,- правильно ли с точки зрения программирования? |
С точки зрения програмирования вы усложнили код циклом, что не является в данном случае необходимистью. А если вы хотели просто посмотреть работу цикла, то как мне кажется именно вам работу цикла проверить легче всего, сравнив сигналы выдаваемые системой с циклом и без. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
burnus
Зарегистрирован: 29.03.2009
Сообщения: 5
Откуда: владивосток
|
commenced писал(а): |
С точки зрения програмирования вы усложнили код циклом, что не является в данном случае необходимистью. А если вы хотели просто посмотреть работу цикла, то как мне кажется именно вам работу цикла проверить легче всего, сравнив сигналы выдаваемые системой с циклом и без. |
Понятненько.
однако как организовать проверку, к примеру, на тренд? |
|
|
Посмотреть профиль Отправить личное сообщение AIM Address Yahoo Messenger MSN Messenger |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
burnus писал(а): |
commenced писал(а): |
С точки зрения програмирования вы усложнили код циклом, что не является в данном случае необходимистью. А если вы хотели просто посмотреть работу цикла, то как мне кажется именно вам работу цикла проверить легче всего, сравнив сигналы выдаваемые системой с циклом и без. |
Понятненько.
однако как организовать проверку, к примеру, на тренд? |
А я откуда знаю, код ты не давал вроде |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
burnus
Зарегистрирован: 29.03.2009
Сообщения: 5
Откуда: владивосток
|
commenced писал(а): |
А я откуда знаю, код ты не давал вроде |
Да тама 4 линии
Ну возьмём любые наугад и обзовём их как у меня:
Код: |
trend=Plot( DEMA( C, 200 ), "" ,colorRed, styleLine );
InputLine1=Plot( EMA( C, 100 ), "", colorBlue, styleLine );
Inputline2=Plot( MA( C, 70 ), "", colorBlack, styleLine );
Outline=Plot( TEMA( C, 40 ), "", colorGreen, styleLine );
; |
|
|
|
Посмотреть профиль Отправить личное сообщение AIM Address Yahoo Messenger MSN Messenger |
|
|