Автор |
Сообщение |
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
заготовка, причем дающая неплохой результат по ГП час.
Код: |
b = Optimize("b", 17, 1, 15, 1);
k = round(LastValue((Ref(EMA(HHV(H,3),b)-EMA(LLV(L,3),b),-1)/O))*1000)/10;
a = Optimize("a", 0.7, 0.1, 5, 0.1);
revers = (k*a)/100; ;
Trend = 1;
Rev[0] = C[0] - C[0]*Revers;
UPpik = 0;
Dwpik = 0;
k = 1;
SwingLine = Null;
SwingLine[0] = C[0];
function ZigLine(k, i, trend)
{
d = i - k;
if(trend)
{
Amp = H[i] - L[k];
SwingLine[k] = L[k];
}
else
{
Amp = L[i] - H[k];
SwingLine[k] = H[k];
}
Step = Amp/d;
for(j = k+1; j <= i; j++)
{
SwingLine[j] = SwingLine[j-1]+ Step;
}
return SwingLine;
}
for(i = 1; i < BarCount; i++)
{
if(Trend) //Up Trend
{
if(H[i] > UPpik)
{
rev[i] = H[i] - H[i]*revers;
CE = i;
ZigLine(k, i, trend);
Uppik = H[i];
}
else
{
if(L[i] < Rev[i-1])
{
Trend = 0;
Dwpik = L[i];
k = CE;
CE = i;
ZigLine(k, i, trend);
Rev[i] = L[i] + L[i]*revers;
}
else
{
Rev[i] = Uppik - uppik*revers;
}
}
}
//======================================
else //Down Trend
{
if(L[i] < DWpik)
{
Rev[i] = L[i] + L[i]*Revers;
DWpik = L[i];
CE = i;
ZigLine(k, i, trend);
}
else
{
if(H[i] > Rev[i-1])
{
Trend = 1;
Uppik = H[i];
k = CE;
CE = i;
ZigLine(k, i, trend);
Rev[i] = H[i] - H[i]*Revers;
}
else
{
Rev[i] = DWpik + DWpik*Revers;
}
}
}
}
Plot(Rev, "revers", ParamColor("Color", colorBlue ), ParamStyle("Style Revers", styleDashed) );
Plot(SwingLine, "ZigZag", IIf(SwingLine > Ref(SwingLine, -1), 27, 4), ParamStyle("Style Swing", styleThick) );
z = Ref(IIf(Ref(C>O,-1), LLV(H,3),HHV(L,3)),-1);
Plot(z,"z", 6,1);
p = 3;
p1 = 1;
Top1 = EMA(Ref(HHV(H,p), -1),3);
Bot1 = EMA(Ref(LLV(L,p1),-1),3);
Buy = Z<=H AND H>=Top1 AND H>Ref(Rev,-1);
Sell = Z>=L AND Bot1>=L AND Ref(Rev,-1)> L;
Short = Z>=L AND Bot1>=L AND Ref(Rev,-1)> L;
Cover = Z<=H AND H>=Top1 AND H>Ref(Rev,-1);
BuyPrice = Max(O,Max(Ref(Rev,-1),Max(z,top1)));
SellPrice = Min(O,Min(Ref(Rev,-1),Min(z,bot1)));
CoverPrice = Max(O,Max(Ref(Rev,-1),Max(z,top1)));
ShortPrice = Min(O,Min(Ref(Rev,-1),Min(z,bot1)));
Equity(1);
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);
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() ); |
|
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Сергей
Зарегистрирован: 16.03.2008
Сообщения: 168
|
commenced писал(а): |
заготовка, причем дающая неплохой результат по ГП час.
|
Сам писал?) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Сергей писал(а): |
commenced писал(а): |
заготовка, причем дающая неплохой результат по ГП час.
|
Сам писал?) |
Реверс Олега, остальное мое, а что? |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Сергей
Зарегистрирован: 16.03.2008
Сообщения: 168
|
commenced писал(а): |
Сергей писал(а): |
commenced писал(а): |
заготовка, причем дающая неплохой результат по ГП час.
|
Сам писал?) |
Реверс Олега, остальное мое, а что? |
Сложновато, пытался разбираться, бросил, она стабильна, ну там пропадающих сигналов нет или появляющихся задним числом? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Сергей писал(а): |
commenced писал(а): |
Сергей писал(а): |
commenced писал(а): |
заготовка, причем дающая неплохой результат по ГП час.
|
Сам писал?) |
Реверс Олега, остальное мое, а что? |
Сложновато, пытался разбираться, бросил, она стабильна, ну там пропадающих сигналов нет или появляющихся задним числом? |
Да не должно, но на симуляторе не гонял. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
При тесте будет давать не совсем точные результаты. т.к. есть подглядывание
Код: |
k = round(LastValue((Ref(EMA(HHV(H,3),b)-EMA(LLV(L,3),b),-1)/O))*1000)/10;
|
дает значение "к" определяемое последними (текущими данными), а от него зависит реверс. Но при реальной работе этих (современных) данных бы небыло и очень возможно, что размер реверса был бы другой. Кроме того реверс может менятся при поступлении новых данных. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
000 писал(а): |
При тесте будет давать не совсем точные результаты. т.к. есть подглядывание
Код: |
k = round(LastValue((Ref(EMA(HHV(H,3),b)-EMA(LLV(L,3),b),-1)/O))*1000)/10;
|
дает значение "к" определяемое последними (текущими данными), а от него зависит реверс. Но при реальной работе этих (современных) данных бы небыло и очень возможно, что размер реверса был бы другой. Кроме того реверс может менятся при поступлении новых данных. |
не соглашусь, реверс использую с прошлого бара, т.е. имеющий полюбому конечное значение, К не расчитывается из текущих параметров Ref(EMA(HHV(H,3),b)-EMA(LLV(L,3),b),-1), а О итак неизмено. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цитата: |
не соглашусь, реверс использую с прошлого бара, т.е. имеющий полюбому конечное значение, К не расчитывается из текущих параметров Ref(EMA(HHV(H,3),b)-EMA(LLV(L,3),b),-1), а О итак неизмено.
|
Ну вот сейчас середина декабря 2008г. При тесте в 2007г он будет брать "к" и соответственно размер реверса расчитанное для конца 2008г (т.к. там берется последнее значение LastValue)
Такие дела... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
000 писал(а): |
Цитата: |
не соглашусь, реверс использую с прошлого бара, т.е. имеющий полюбому конечное значение, К не расчитывается из текущих параметров Ref(EMA(HHV(H,3),b)-EMA(LLV(L,3),b),-1), а О итак неизмено.
|
Ну вот сейчас середина декабря 2008г. При тесте в 2007г он будет брать "к" и соответственно размер реверса расчитанное для конца 2008г (т.к. там берется последнее значение LastValue)
Такие дела... |
Не обратил внимание, кстати не посоветуеш как обойти по другому, чтоб цикл не ругался, т.е. величина К должна быть изменяемой к примеру в зависимости от ATR. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Убери из "к" LastValue и в цикле поставь revers[i]
Ну и в Rev[0] = C[0] - C[0]*Revers; соответственно надо написать revers[0]
На самом деле именно так работать не будет вообще потому, что на первых барах revers не определен (данных не достаточно) поэтому цикл надо начинать не с i = 1, а с i = b (период EMA). Соответственно надо переделать и начальные условия (которые перед циклом задаются) |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Плюсадин
Зарегистрирован: 19.11.2008
Сообщения: 13
|
Цитата: |
b = Optimize("b", 17, 1, 15, 1);
//k = round(LastValue((Ref(EMA(HHV(H,3),b)-EMA(LLV(L,3),b),-1)/O))*1000)/10;
k = round((Ref(EMA(HHV(H,3),b)-EMA(LLV(L,3),b),-1)/O)*1000)/10;
a = Optimize("a", 0.7, 0.1, 5, 0.1);
revers = (k*a)/100; ;
Trend = 1;
Rev[0] = C[0] - C[0]*Revers[0];
UPpik = 0;
Dwpik = 0;
k = 1;
SwingLine = Null;
SwingLine[0] = C[0];
function ZigLine(k, i, trend)
{
d = i - k;
if(trend)
{
Amp = H[i] - L[k];
SwingLine[k] = L[k];
}
else
{
Amp = L[i] - H[k];
SwingLine[k] = H[k];
}
Step = Amp/d;
for(j = k+1; j <= i; j++)
{
SwingLine[j] = SwingLine[j-1]+ Step;
}
return SwingLine;
}
for(i = 1; i <BarCount> UPpik)
{
rev[i] = H[i] - H[i]*revers[i];
CE = i;
ZigLine(k, i, trend);
Uppik = H[i];
}
else
{
if(L[i] < Rev[i-1])
{
Trend = 0;
Dwpik = L[i];
k = CE;
CE = i;
ZigLine(k, i, trend);
Rev[i] = L[i] + L[i]*revers[i];
}
else
{
Rev[i] = Uppik - uppik*revers[i];
}
}
}
//======================================
else //Down Trend
{
if(L[i] <DWpik> Rev[i-1])
{
Trend = 1;
Uppik = H[i];
k = CE;
CE = i;
ZigLine(k, i, trend);
Rev[i] = H[i] - H[i]*Revers[i];
}
else
{
Rev[i] = DWpik + DWpik*Revers[i];
}
}
}
}
Plot(Rev, "revers", ParamColor("Color", colorBlue ), ParamStyle("Style Revers", styleDashed) );
Plot(SwingLine, "ZigZag", IIf(SwingLine > Ref(SwingLine, -1), 27, 4), ParamStyle("Style Swing", styleThick) );
z = Ref(IIf(Ref(C>O,-1), LLV(H,3),HHV(L,3)),-1);
Plot(z,"z", 6,1);
p = 3;
p1 = 1;
Top1 = EMA(Ref(HHV(H,p), -1),3);
Bot1 = EMA(Ref(LLV(L,p1),-1),3);
Buy = Z<H>=Top1 AND H>Ref(Rev,-1);
Sell = Z>=L AND Bot1>=L AND Ref(Rev,-1)> L;
Short = Z>=L AND Bot1>=L AND Ref(Rev,-1)> L;
Cover = Z<H>=Top1 AND H>Ref(Rev,-1);
BuyPrice = Max(O,Max(Ref(Rev,-1),Max(z,top1)));
SellPrice = Min(O,Min(Ref(Rev,-1),Min(z,bot1)));
CoverPrice = Max(O,Max(Ref(Rev,-1),Max(z,top1)));
ShortPrice = Min(O,Min(Ref(Rev,-1),Min(z,bot1)));
Equity(1);
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);
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
|
Олег, как ты сказал, переделал.
Прогнал на 5 минутках Сбера. Сигналы дает.
Вроде ошибок нет.
А что если систему запускать после N минут от начала торгов?? (где N - человек сам может определить в зависимости от ТаймФрейма внутри дня)
Как добавить то, что ты написал:
Цитата: |
На самом деле именно так работать не будет вообще потому, что на первых барах revers не определен (данных не достаточно) поэтому цикл надо начинать не с i = 1, а с i = b (период EMA). Соответственно надо переделать и начальные условия (которые перед циклом задаются) |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Плюсадин писал(а): |
Олег, как ты сказал, переделал.
Прогнал на 5 минутках Сбера. Сигналы дает.
Вроде ошибок нет.
А что если систему запускать после N минут от начала торгов?? (где N - человек сам может определить в зависимости от ТаймФрейма внутри дня)
Как добавить то, что ты написал:
Цитата: |
[color=blue]На самом деле именно так работать не будет вообще потому, что на первых барах revers не определен (данных не достаточно) поэтому цикл надо начинать не с i = 1, а с i = b (период EMA). Соответственно надо переделать и начальные условия (которые перед циклом задаются) |
|
Ты ведь не собираешся по ней торговать надеюсь, система сырая для торговли в таком виде не подходит. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Плюсадин
Зарегистрирован: 19.11.2008
Сообщения: 13
|
commenced писал(а): |
Плюсадин писал(а): |
Олег, как ты сказал, переделал.
Прогнал на 5 минутках Сбера. Сигналы дает.
Вроде ошибок нет.
А что если систему запускать после N минут от начала торгов?? (где N - человек сам может определить в зависимости от ТаймФрейма внутри дня)
Как добавить то, что ты написал:
Цитата: |
[color=blue]На самом деле именно так работать не будет вообще потому, что на первых барах revers не определен (данных не достаточно) поэтому цикл надо начинать не с i = 1, а с i = b (период EMA). Соответственно надо переделать и начальные условия (которые перед циклом задаются) |
|
Ты ведь не собираешся по ней торговать надеюсь, система сырая для торговли в таком виде не подходит. |
я уже прикрутил
жду сигналов..но ничего нет..ни свечек, ни зигзагов...
что то с кодом...
а как мне торговать больше??
лучше по такой сырой системе, чем по стакану торговать =)
лучше систем я не видел..а всякие скользящие средние и прочее- это ерунда на нашем рынке.. когда каждый день почти гэпы.. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Плюсадин писал(а): |
commenced писал(а): |
Плюсадин писал(а): |
Олег, как ты сказал, переделал.
Прогнал на 5 минутках Сбера. Сигналы дает.
Вроде ошибок нет.
А что если систему запускать после N минут от начала торгов?? (где N - человек сам может определить в зависимости от ТаймФрейма внутри дня)
Как добавить то, что ты написал:
Цитата: |
[color=blue]На самом деле именно так работать не будет вообще потому, что на первых барах revers не определен (данных не достаточно) поэтому цикл надо начинать не с i = 1, а с i = b (период EMA). Соответственно надо переделать и начальные условия (которые перед циклом задаются) |
|
Ты ведь не собираешся по ней торговать надеюсь, система сырая для торговли в таком виде не подходит. |
я уже прикрутил
жду сигналов..но ничего нет..ни свечек, ни зигзагов...
что то с кодом...
а как мне торговать больше??
лучше по такой сырой системе, чем по стакану торговать =)
лучше систем я не видел..а всякие скользящие средние и прочее- это ерунда на нашем рынке.. когда каждый день почти гэпы.. |
Пиши свою ни кто на блюдечке тебе ничего не принесет, да еще и нахаляву. Если нет свечек, то возможно ты в квике не включил экспорт. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Плюсадин писал(а): |
Олег, как ты сказал, переделал.
Прогнал на 5 минутках Сбера. Сигналы дает.
Вроде ошибок нет.
А что если систему запускать после N минут от начала торгов?? (где N - человек сам может определить в зависимости от ТаймФрейма внутри дня)
Как добавить то, что ты написал:
Цитата: |
На самом деле именно так работать не будет вообще потому, что на первых барах revers не определен (данных не достаточно) поэтому цикл надо начинать не с i = 1, а с i = b (период EMA). Соответственно надо переделать и начальные условия (которые перед циклом задаются) |
|
Странно, что работает...
Реверс на первом баре еще нельзя расчитать т.к. для его расчета надо несколько баров
Код: |
k = round((Ref(EMA(HHV(H,3),b)-EMA(LLV(L,3),b),-1)/O)*1000)/10;
|
минимум 3
Поэтому цикл надо начинать не раньше третьего бара
for(i = 3; i < BarCount; i++))
а если период EMA больше 3х, то еще позже. Типа так
for(i = b; i < BarCount; i++))
соответственно и начальные данные надо задать соответственно
Код: |
Rev[0] = C[b-1] - C[b-1]*Revers[b-1];
UPpik = 0;
Dwpik = 0;
k = 1;
SwingLine = Null;
SwingLine[b-1] = C[b-1];
|
И еще. Размещенный Вами код форум к сожалению исказил, так, что теперь даже проверить не могу. Обратите внимание на эту тему http://amisite.ru/phpBB2/viewtopic.php?t=223 |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|