Автор |
Сообщение |
Сергей
Зарегистрирован: 16.03.2008
Сообщения: 168
|
|
Посмотреть профиль Отправить личное сообщение |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Подскажи точнее чего и куда скачать нужно)[/quote]
Извени думал он на своем сайте сделал, короче индюки из папки в индюки кидай, а плагин(там будет один файл в плагины, после чего амиброкер перезагрузи). http://forex.kbpauk.ru/download.php?Number=131755 |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Сергей
Зарегистрирован: 16.03.2008
Сообщения: 168
|
|
Посмотреть профиль Отправить личное сообщение |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Типа адх и параболик, что оптимизировать решайте сами, там аж 6 параметров. Кстати совет, если кто еще до этого не дошел, когда делаете оптимизацию, обязательно уберайте строку = Param() и подобные если оптимизуруемая величина находится в подобной строке, ничего не оптимизируется.
Код: |
SetBarsRequired(100000, 100000);
acc = 0.019;
accm = 0.2;
parab = SAR( acc, accm );
range = 12;
Cond1 = MA(ADX(range), 9)-Ref(MA(ADX(range), 9),-1)>0.3;
Cond2 = (PDI(range)-MDI(range))>5;
Cond3 = (MDI(range)-PDI(range))>5;
Cond4 = Ref(parab, -1)<C;
Cond5 = Ref(parab, -1)>C;
Buy = Cond1 AND Cond2 AND Cond4;
Short = Cond1 AND Cond3 AND Cond5;
Sell=Cross(parab, C);
Cover=Cross(C, parab);
Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);
Short=ExRem(Short,Cover);
Cover=ExRem(Cover,Short);
Plot( SAR( acc, accm ), _DEFAULT_NAME(), ParamColor( "Color", colorCycle ),
ParamStyle("Style", styleDots | styleNoLine, maskDefault | styleDots | styleNoLine ) );
Plot(C,"price",1,128);
PlotShapes(IIf(Buy,shapeUpArrow,0),5,0,Graph0,-15);
PlotShapes(IIf(Sell,shapeDownArrow,0),4,0,Graph0,-15);
PlotShapes(IIf(Cover,shapeHollowUpArrow,0),5,0,Graph0,-15);
PlotShapes(IIf(Short,shapeHollowDownArrow,0),4,0,Graph0,-15);
BuyPrice = SellPrice = ShortPrice = CoverPrice = С; |
cond1 лучше заменить на функцию измеряющую ускорение изменения, ну это для тех кого прет тюнинг и все такое, новое и навороченное. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Код: |
up = L > Ref(L, -1) & H >= Ref(H, -1);
dw = L <= Ref(L, -1) & H < Ref(H, -1);
up = ExRem(up, dw);
dw = ExRem(dw, up);
swing = Flip(up, dw);
x = 0;
x0 = 0;
y = 0;
y0 = 0;
Hi = 0;
Lo = 0;
Line = Null;
function swingline(x0, x, y0, y)
{
m = (y-y0)/(x-x0);
for(j = x0; j <= x; j++)
{
Line[j] = y0 + (j-x0)*m;
}
return Line;
}
for( i = 1; i < BarCount; i++ )
{
if(swing[i] == 1)
{
if(up[i] == 1)
{
Lo[x] = y;
y0 = y;
x0 = x;
y = H[i];
x = i;
swingline(x0, x, y0, y);
}
else if(H[i] > y)
{
y = H[i];
x = i;
swingline(x0, x, y0, y);
}
}
else
{
if(dw[i] == 1)
{
Hi[x] = y;
y0 = y;
x0 = x;
y = L[i];
x = i;
swingline(x0, x, y0, y);
}
else if(L[i] < y)
{
y = L[i];
x = i;
swingline(x0, x, y0, y);
}
}
}
Hm = Hi > 0;
Lm = Lo > 0;
mup = Hm & ValueWhen(Hm, H, 2) < H & ValueWhen(Hm, H, 0) < H;
mdw = Lm & ValueWhen(Lm, L, 2) > L & ValueWhen(Lm, L, 0) > L;
mswing = 1; // принимаем начальное значение 1 (просто так)
mLine = Null;
Plot(C, "", colorBlack, styleBar);
PlotShapes((Hi>0)*shapeSmallDownTriangle, colorGreen, 0, H);
PlotShapes((Lo>0)*shapeSmallUpTriangle, colorRed, 0, L);
Plot(mup, "", colorGreen, styleHistogram|styleOwnScale);
Plot(mdw, "", colorRed, styleHistogram|styleOwnScale); |
Убрал только отрисовку свингов, пытался убрать весь цикл, но выскакивает ошибка, похоже в цикле прописан расчет Hi и Lo, где не понял.
Код: |
Short=Ref(mup,-1);
Buy=Ref(mdw,-1);
Sell=Short;
Cover=Buy;
BuyPrice = SellPrice = ShortPrice = CoverPrice = C;
ApplyStop(stopTypeLoss, stopModePercent, 1.82);
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);
Short = ExRem(Short,Cover);
Cover = ExRem(Cover,Short);
PlotShapes(IIf(Buy,shapeUpArrow,0),5,0,Graph0,-15);
PlotShapes(IIf(Sell,shapeDownArrow,0),4,0,Graph0,-15);
PlotShapes(IIf(Cover,shapeHollowUpArrow,0),5,0,Graph0,-15);
PlotShapes(IIf(Short,shapeHollowDownArrow,0),4,0,Graph0,-15); |
Хочу входить на следующей свечке после формирования минимума (не среднесрочного) выше предыдущего, зеркально шорт. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цитата: |
Убрал только отрисовку свингов, пытался убрать весь цикл, но выскакивает ошибка, похоже в цикле прописан расчет Hi и Lo, где не понял.
|
Цитата: |
for( i = 1; i < BarCount; i++ )
{
if(swing[i] == 1)
{
if(up[i] == 1)
{
Lo[x] = y;
y0 = y;
x0 = x;
y = H[i];
x = i;
swingline(x0, x, y0, y);
}
else if(H[i] > y)
{
y = H[i];
x = i;
swingline(x0, x, y0, y);
}
}
else
{
if(dw[i] == 1)
{
Hi[x] = y;
y0 = y;
x0 = x;
y = L[i];
x = i;
swingline(x0, x, y0, y);
}
else if(L[i] < y)
{
y = L[i];
x = i;
swingline(x0, x, y0, y);
}
}
}
|
вот |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Условия входа я писал выше, подскажи что здесь не так, может я не правильно функцию понял:
Код: |
Short=ValueWhen(mup, Hm, -2);
Buy=ValueWhen(mdw, Lm, -2);
Sell=Short;
Cover=Buy;
|
|
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Vladimir
Зарегистрирован: 30.10.2008
Сообщения: 62
|
Предлагаю Вашему вниманию такую систему:
Код: |
JSB_InitLib();
P1 = Optimize("P1", 11, 1, 30, 2);
P2 = Optimize("P2", 5, 1, 9, 1);
P3 = Optimize("P3", 1, 1, 2, 1);
J = JSB_JVEL(O, P1);
C1= J;
xy1= (Ref(C1,-8)+2*Ref(C1,-7)+3*Ref(C1,-6)+4*Ref(C1,-5)+5*Ref(C1,-4)+6*Ref(C1,-3)+7*Ref(C1,-2)+8*Ref(C1,-1)+9*C1)/9 ;
yy1= (Ref(C1,-8)+Ref(C1,-7)+Ref(C1,-6)+Ref(C1,-5)+Ref(C1,-4)+Ref(C1,-3)+Ref(C1,-2)+Ref(C1,-1)+C1)/9 ;
C2= (xy1 - yy1*5);
xy2= (Ref(C2,-1)+2*C2)/2 ;
yy2= (Ref(C2,-1)+C2)/2 ;
a1= (xy2 - yy2*1.5);
a2= Ref(a1,-p2);
b1 = IIf(p3==1,a1,a2);
b2 = IIf(p3==2,a1,a2);
Buy= b1>b2;
Sell= b2>b1;
Short= Sell;
Cover= Buy;
Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);
Short=ExRem(Short,Cover);
Cover=ExRem(Cover,Short);
_SECTION_BEGIN("Price");
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) Vol " +WriteVal( V, 1.0 ) +" {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 )) ));
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
if( ParamToggle("Tooltip shows", "All Values|Only Prices" ) )
{
ToolTip=StrFormat("Open: %g\nHigh: %g\nLow: %g\nClose: %g (%.1f%%)\nVolume: "+NumToStr( V, 1 ), O, H, L, C, SelectedValue( ROC( C, 1 )));
}
_SECTION_END();
PlotShapes(IIf(Buy,shapeUpArrow,0),5,0,Graph0,-15);
PlotShapes(IIf(Sell,shapeDownArrow,0),4,0,Graph0,-15);
PlotShapes(IIf(Cover,shapeHollowUpArrow,0),5,0,Graph0,-15);
PlotShapes(IIf(Short,shapeHollowDownArrow,0),4,0,Graph0,-15); |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
C2= (xy1 - yy1*5);
xy2= (Ref(C2,-1)+2*C2)/2 ;
yy2= (Ref(C2,-1)+C2)/2 ;
a1= (xy2 - yy2*1.5);
a2= Ref(a1,-p2);
b1 = IIf(p3==1,a1,a2);
b2 = IIf(p3==2,a1,a2);
этот блок лишний, ты никогда не сможеш извлеч больше чем могут дать исходные данные как бы ты их не преобразовавал, а исходники у тебя XY1 YY1. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот этот кусок
Код: |
b1 = IIf(p3==1,a1,a2);
b2 = IIf(p3==2,a1,a2);
|
Вкупе с
Код: |
P3 = Optimize("P3", 1, 1, 2, 1);
|
Это всего лиш реверс правил сделок при оптимизации. Если так задумано, то он не лишний.
А это
Код: |
xy2= (Ref(C2,-1)+2*C2)/2 ;
yy2= (Ref(C2,-1)+C2)/2 ;
a1= (xy2 - yy2*1.5);
a2= Ref(a1,-p2)
|
Всего лиш кусок кода расчета "идикатора". Любой индикатор так или иначе фильтрует цену
Цитата: |
этот блок лишний, ты никогда не сможеш извлеч больше чем могут дать исходные данные как бы ты их не преобразовавал, а исходники у тебя XY1 YY1.
|
Считай, что это упрощение кода. Чтобы не писать все в одну строку человек разбил расчет на несколько этапов.
Я не хвалю и не критикую систему. Посмотрел код. С точкизрения программирования в Ами все вроде ОК. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
vadimal
Зарегистрирован: 02.02.2011
Сообщения: 78
|
Добрый день!
Код от commenced на этой странице подглядывает в будущее
up = L > Ref(L, -1) & H >= Ref(H, -1); //up= лоу > предыдущего минимума И хай >= предыдущего хая
dw = L <= Ref(L, -1) & H < Ref(H, -1); //dw = лоу < предыдущего минимума И хай < предыдущего хая
up = ExRem(up, dw); // up = удаляем лишние сигналы ( повторный ап не будет ,пока ап не сменится дауном)
dw = ExRem(dw, up); // dw = удаляем лишние сигналы ( повторный даун не будет ,пока даун не сменится апом)
swing = Flip(up, dw); //swing = будет до той поры пока будут выполнятся одно или оба условия
x = 0; // не понятно
x0 = 0; // не понятно
y = 0; // не понятно
y0 = 0; // не понятно
Hi = 0; // изначально первый хай будет равен 0
Lo = 0; // изначально первый лоу будет равен 0
Line = Null; // не понятно
function swingline(x0, x, y0, y) // не понятно с этой строки и далее в низ
{
m = (y-y0)/(x-x0);
for(j = x0; j <= x; j++)
{
Line[j] = y0 + (j-x0)*m;
}
return Line;
}
for( i = 1; i < BarCount; i++ )
{
if(swing[i] == 1)
{
if(up[i] == 1)
{
Lo[x] = y;
y0 = y;
x0 = x;
y = H[i];
x = i;
swingline(x0, x, y0, y);
}
else if(H[i] > y)
{
y = H[i];
x = i;
swingline(x0, x, y0, y);
}
}
else
{
if(dw[i] == 1)
{
Hi[x] = y;
y0 = y;
x0 = x;
y = L[i];
x = i;
swingline(x0, x, y0, y);
}
else if(L[i] < y)
{
y = L[i];
x = i;
swingline(x0, x, y0, y);
}
}
} Hm = Hi > 0; //Hm = хай > 0
Lm = Lo > 0; //Lm = лоу > 0
mup = Hm & ValueWhen(Hm, H, 2) < H & ValueWhen(Hm, H, 0) < H; //mup = Hm и
mdw = Lm & ValueWhen(Lm, L, 2) > L & ValueWhen(Lm, L, 0) > L;
mswing = 1; // принимаем начальное значение 1 (просто так)
mLine = Null;
Plot(C, "", colorBlack, styleBar);
Plot(mup, "", colorGreen, styleHistogram|styleOwnScale);
Plot(mdw, "", colorRed, styleHistogram|styleOwnScale);
Short=Ref(mup,-1);
Buy=Ref(mdw,-1);
Sell=Short;
Cover=Buy;
BuyPrice = SellPrice = ShortPrice = CoverPrice = C;
ApplyStop(stopTypeLoss, stopModePercent, 1.82);
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);
Short = ExRem(Short,Cover);
Cover = ExRem(Cover,Short);
PlotShapes(IIf(Buy,shapeUpArrow,0),5,0,Graph0,-15);
PlotShapes(IIf(Sell,shapeDownArrow,0),4,0,Graph0,-15);
PlotShapes(IIf(Cover,shapeHollowUpArrow,0),5,0,Graph0,-15);
PlotShapes(IIf(Short,shapeHollowDownArrow,0),4,0,Graph0,-15);
При прокручивании в bar replay увидел что код подглядывае в будущее на 12 баров ( на минутном таймфрейме).
Я пробовал его перевести на русский язык чтоб понять как изменить код чтоб не подглядывал в будущее, за плюхался и застрял. Подскажите как изменить код чтоб не подсматривал в будущее. Результаты кода просто превосходные на любых бумагах на любых таймфреймах. |
|
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Не, ну там явным образом написано ValueWhen(Hm, H, 0) а это голимое подглядывание.....
Цитата из хелпера
Цитата: |
Note: this function allows also 0 and negative values for n - this enables referencing future
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|