Автор |
Сообщение |
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Red писал(а): |
Интересно, а почему вот такая формула не работает.
Y = Param("Y",0.0005,0,1,0.0005);
Cond11 = H >= Ref(H,-1)*(1+Y);
PlotShapes(Cond11*shapeUpArrow,colorRed);
Изменил, результат тот же.
RH = Ref(H,-1);
Cond11 = H >= RH*(1+Y); |
Непонял. Что не работает? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Red
Зарегистрирован: 06.05.2009
Сообщения: 13
|
У меня он два значения не сравнивает.
Соответственно H и Ref(H,-1) умноженное на 1+Y.
Если я забью формулу
Cond = H >= (Ref(H,-1)+100);
ТО Амик их героичес ки сравнит и покажетгде соблюдается, но стоит заменить 100 на Y (при Y = Param("Y",60,0,210,30)) и все сравнение пропадает.
Хотя я могу и из-за невнимательности накосячить.
За пред. ответ спасибо. Опять-же невнимательность, там одно из S это Slip - проскальзывание, для бэк-теста. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Red писал(а): |
У меня он два значения не сравнивает.
Соответственно H и Ref(H,-1) умноженное на 1+Y.
Если я забью формулу
Cond = H >= (Ref(H,-1)+100);
ТО Амик их героичес ки сравнит и покажетгде соблюдается, но стоит заменить 100 на Y (при Y = Param("Y",60,0,210,30)) и все сравнение пропадает.
Хотя я могу и из-за невнимательности накосячить.
За пред. ответ спасибо. Опять-же невнимательность, там одно из S это Slip - проскальзывание, для бэк-теста. |
У меня вот так работает
Код: |
Y = Param("Y",0.0005,0, 0.01, 0.000005);
Cond11 = H >= Ref(H,-1)*(1+Y);
Plot(C, "", colorBlack, styleCandle);
Plot(Cond11, "", colorRed, styleHistogram|styleOwnScale);
|
По циклу. Посмотри. Если дальше разберешься - хорошо. Нет - пиши. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Red
Зарегистрирован: 06.05.2009
Сообщения: 13
|
Олег, позволь тогда еще вопрос.
Если я в условие цикла вставлю
if(BarsSince(Buy)[i] >0) то Амик ругается - Дураком обзывает.
Указывает на Error 30.
Я так понимаю что данная функция невозможна в условии. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Red писал(а): |
Олег, позволь тогда еще вопрос.
Если я в условие цикла вставлю
if(BarsSince(Buy)[i] >0) то Амик ругается - Дураком обзывает.
Указывает на Error 30.
Я так понимаю что данная функция невозможна в условии. |
Угу. Так нелзя. Надо типа так
Код: |
qqq = BarsSince(Buy);
цикл
if(qqq[i] >0);
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Red
Зарегистрирован: 06.05.2009
Сообщения: 13
|
Вот так получилось.
Стоп один хрен не трейлит.
Повытаскивал из цикла все условия.
Код: |
TRA = T*ATR(periodsA);
Buy = 0;
Short = 0;
Sell = 0;
Cover = 0;
PriceBuy = 0;
PriceShort = 0;
PriceSell = 0;
PriceCover = 0;
position = 0;
tr = 0;
stop = 0;
SB = BarsSince(Buy);
SS = BarsSince(Short);
StoptrH = (H >= (PriceBuy + Ref(TRA,-1))) OR (Ref(H,-1) >= (PriceBuy + Ref(TRA,-2)));
StoptrL = (L <= (PriceShort - Ref(TRA,-1))) OR (Ref(L,-1) <= (PriceShort - Ref(TRA,-2)));
///////////////////цикл////////////////
for(i = 1; i < BarCount; i++)
{
if(position==0)
{
if(Cond1[i])
{
Buy[i] = 1;
position = 1;
BuyPrice[i] = (DUS[i]+X)*(1+S);
PriceBuy = BuyPrice[i];
tr = 0;
stop = L[i-1];
}
if(Cond11[i])
{
Buy[i] = 1;
position = 1;
BuyPrice[i] = O[i]*(1+S);
PriceBuy = BuyPrice[i];
tr = 0;
stop = DLF[i]-Y;
// stop = L[i-1];
}
if(Cond2[i])
{
Short[i] = 1;
position = -1;
ShortPrice[i] = (DLS[i]-X)*(1-S);
PriceShort = ShortPrice[i];
tr = 0;
stop = H[i-1];
}
if(Cond12[i])
{
Short[i] = 1 ;
position = -1;
ShortPrice[i] = O[i]*(1-S);
PriceShort = ShortPrice[i];
tr = 0;
stop = DUF[i]+Y;
// stop = H[i-1];
}
}
if(position == 1)
{
if(Cond4[i])
{
Sell[i] = 1;
SellPrice[i] = (DLF[i]-Y)*(1-S);
position = 0;
}
if(tr == 0)
{
if(SB[i] > 1)
{
if(StoptrH[i] = 1)
{
stop = PriceBuy;
tr = 1;
}
// if(H[i-1] >= PriceBuy + TRA[i-1])
// {
// stop = PriceBuy;
// tr = 1;
// }
}
}
if(L[i] <= stop)
{
Sell[i] = 1;
SellPrice[i] = stop*(1-S);
position = 0;
}
if(Cond2[i])
{
Sell[i] = 1;
Short[i] = 1;
SellPrice[i] = (DLS[i]-X)*(1-S);
ShortPrice[i] = (DLS[i]-X)*(1-S);
position = -1;
PriceShort = ShortPrice[i];
tr = 0;
stop = H[i-1];
}
if(Cond12[i])
{
Sell[i] = 1;
Short[i] = 1;
SellPrice[i] = O[i]*(1-S);
ShortPrice[i] = O[i]*(1-S);
position = -1;
PriceShort = ShortPrice[i];
tr = 0;
stop = DUF[i]*(1+Y);
// stop = H[i-1];
}
}
if(position == -1)
{
if(Cond3[i])
{
Cover[i] =1;
CoverPrice[i] = (DUF[i]+Y)*(1+S);
position = 0;
}
if(tr == 0)
{
if(SS[i] > 1)
{
if(StoptrL[i] = 1)
{
stop = PriceShort;
tr = 1;
}
// if(L[i-1] <= PriceShort - TRA[i-1])
// {
// stop = PriceShort;
// tr = 1;
// }
}
}
if(H[i] >= stop)
{
Cover[i] =1;
CoverPrice[i] = stop*(1+S);
position = 0;
}
if(Cond1[i])
{
Cover[i] = 1;
Buy[i] = 1;
CoverPrice[i] = (DUS[i]+X)*(1+S);
BuyPrice[i] = (DUS[i]+X)*(1+S);
position = 1;
PriceBuy = BuyPrice[i];
tr = 0;
stop = L[i-1];
}
if(Cond11[i])
{
Cover[i] = 1;
Buy[i] = 1;
CoverPrice[i] = O[i]*(1+S);
BuyPrice[i] = O[i]*(1+S);
position = 1;
PriceBuy = BuyPrice[i];
tr = 0;
stop = DLF[i]*-Y;
// stop = L[i-1];
}
}
}
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цикл пока не смотерл однако есть вопрос. Я уже спрашивал. Можешь объяснить нафига это
SB = BarsSince(Buy);
SS = BarsSince(Short);
В тот момент когда они в коде и Buy и Short = 0
Т.е. они ни чего не считают и их использовать потом нельзя. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Такая же ошибка дальше
StoptrH = (H >= (PriceBuy + Ref(TRA,-1))) OR (Ref(H,-1) >= (PriceBuy + Ref(TRA,-2)));
StoptrL = (L <= (PriceShort - Ref(TRA,-1))) OR (Ref(L,-1) <= (PriceShort - Ref(TRA,-2)));
В этот момент у тебя PriceBuy и PriceShort = 0 |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Red
Зарегистрирован: 06.05.2009
Сообщения: 13
|
1. Нафига.
При сильном движении свеча входа своим H часто м..б. выше уровня, на котором мы переносим стоп в безубыток, а L будет ниже уровня.
Когда ты объяснял логику Амика, то говорил, что он мыслит массивами. В иитоге получится что L ниже стопа и бэктест купит и продаст на одной свечке.
А мне нужно чтобы на свече входа он стоп на первончальном, а вот на след уже можно переставлять.
2. Написал до цикла потому-что не знал куда затолкать. Я же с Амиком недавно разбираться начал. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот посмотри. Я обрезал множественные условия входов упростив цикл, но смысл остался. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Red
Зарегистрирован: 06.05.2009
Сообщения: 13
|
Я так понимаю, что нужно будет поставить:
Код: |
SetOption ("AllowSameBarExit",0); // Вкл (1) выкл (0) возможность выхода на баре входа
SetOption ("ActivateStopsImmediately",0); // Вкл (1) выкл (0) активацию стопа на баре входа
SetOption ("ReverseSignalForcesExit",1); // Вкл (1) выкл (0) вход в противоположную позицию при противп. сигнале
|
Или нет?
А PriceBuy = 0;
PriceShort = 0;
PriceSell = 0;
PriceCover = 0;
Перед циклом вообще нужно писать? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
SetOption ("ActivateStopsImmediately",0);
Это только для функции ApplyStop()
SetOption ("AllowSameBarExit",0);
SetOption ("ReverseSignalForcesExit",1);
А это смотря как надо по логике системы
Цитата: |
А PriceBuy = 0;
PriceShort = 0;
PriceSell = 0;
PriceCover = 0;
Перед циклом вообще нужно писать?
|
Не надо. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Red
Зарегистрирован: 06.05.2009
Сообщения: 13
|
Олег, спасибо огромное.
Вроде заработало как надо. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|