Автор |
Сообщение |
ZVV
Зарегистрирован: 20.11.2014
Сообщения: 69
|
Всем доброго времени суток!
Нашел на просторах(или в глубинах) интернета, если было - прошу извинить. В чем обман?
Цитата: |
_SECTION_BEGIN("Price");
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 ) ) ));
SD = StochD(8, 3, 3);
MH = MACD(8, 21) - Signal(8, 21, 5);
trendup = IIf(MH > 0 OR (MH > 0 AND MH > Ref(MH, -1)) AND RSI(3) >50 AND SD < 80 AND SD > Ref(SD, -1) AND ValueWhen(C,O<C), colorBlue, colorWhite);
trendcolor = IIf(MH < 0 OR (MH < 0 AND MH < Ref(MH, -1)) AND RSI(3) <50 AND SD > 20 AND SD < Ref(SD, -1) AND ValueWhen(C,O>C), colorRed, trendup);
Plot( C, "Close", trendcolor, styleCandle | styleThick );
_SECTION_END();
no=Param( "Swing", 5, 1, 55 );
res=HHV(H,no);
sup=LLV(L,no);
tsl=IIf(ValueWhen(IIf(C>Ref(res,-1),1,IIf(C<Ref(sup,-1),-1,0))!=0,IIf(C>Ref(res,-1),1,IIf(C<Ref(sup,-1),-1,0)),1)==1,sup,res);
Plot(tsl, _DEFAULT_NAME(), colorBlue, styleStaircase);
Buy = Cross(C,res) ;
Sell = Cross(sup,C) ;
_SECTION_END();
a=C;
g=(EMA(Close,3) * (2 / 4 - 1)-EMA(Close,5) * (2 / 6 - 1)) / (2 /4- 2 /6);
e=Ref(tsl,-1);
Buy = Cross(C,tsl) ;
Sell = Cross(tsl,C) ;
SellPrice=ValueWhen(Sell,e,1);
BuyPrice=ValueWhen(Buy,e,1);
Long=Flip(Buy,Sell);
Shrt=Flip(Sell,Buy );
Filter=Buy OR Sell;
Buy = Cross(C,tsl) ;
Sell = Cross(tsl,C) ;
shape = Buy * shapeUpArrow + Sell * shapeDownArrow;
PlotShapes( shape, IIf( Buy, colorGreen, colorRed ),0, IIf( Buy, Low, High ) );
a1=Ref(tsl,-1);
dist = 0.8*ATR(1); //0.8
dist1 = 1.8*ATR(1); //1.2
for( i = 0; i < BarCount; i++ )
{
if( Buy[i] )
{
PlotText( "Buy:" + L[ i ] + "\nTgt: " + (a1[i]*1.005) + "\nSL: " + (tsl[i]*0.9975), i, L[ i ]-dist[i], colorLime);
}
if( Sell[i] )
{
PlotText( "Sell:" + H[ i ] + "\nT: " + (a1[i]*0.995) + "\nSL: " + (tsl[i]*1.0025), i, H[ i ]+dist1[i], colorBlack);
}
} |
|
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот в этих строках
Код: |
e=Ref(tsl,-1);
Buy = Cross(C,tsl) ;
Sell = Cross(tsl,C) ;
SellPrice=ValueWhen(Sell,e,1);
BuyPrice=ValueWhen(Buy,e,1); |
Сигнал на сделку при пересечении цены закрытия и "tsl"
Цена закрытия становится известна только в последний момент формирования свечи.
Соответственно и в сделку можно войти только в самый последний момент.
Но, при этом цена входа не равна цене закрытия.
Код: |
SellPrice=ValueWhen(Sell,e,1);
BuyPrice=ValueWhen(Buy,e,1); |
Т.е. мы входим в тот момент когда истинная цена закрытия еще не известна при этом уже зная где она будет. Имеет место классическое заглядывание в будущее. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
ZVV
Зарегистрирован: 20.11.2014
Сообщения: 69
|
Ок, Спасибо!
А исправить можно и например на Ренж-барах свести к "Ref(Open,1)"? Я извиняюсь за, вероятно, идиотские вопросы - нуб![/quote] |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Исправить легко.
Например.
SellPrice = Close;
BuyPrice = Close; |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
ZVV
Зарегистрирован: 20.11.2014
Сообщения: 69
|
Спасибо! Я думал менять надо Sell=... Buy=...
Теперь на обычных графиках( со шкалой времени) все стало плохо. Но стало интересно на Ренж-барах:
Во первых показывает хорошие результаты, но только на графиках, сделанных из минуток, на тиковых результат плохой. Почему?!
Во вторых, понятно что не устраивает цена зарытия ибо она неизвестна пока не откроется новый бар, и вот не удается заставить открываться по цене открытия нового бара - как не менял настройки в Backtester-Settings-Trades - цена "этого" бара либо минимальная, либо закрытия, следующего бара - либо минимальная либо закрытия! В итоге тестировал по цене закрытия этого бара, но увеличив комиссию на проскальзывание. И в итоге на ренж-барах (по минутным графикам) хороший результат.
В чем подвох теперь? =) Заранее спасибо! |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цитата: |
Спасибо! Я думал менять надо Sell=... Buy=... |
Можно поменять и Sell=... Buy=...
Но тогда надо менять и
Код: |
tsl=IIf(ValueWhen(IIf(C>Ref(res,-1),1,IIf(C<Ref(sup,-1),-1,0))!=0,IIf(C>Ref(res,-1),1,IIf(C<Ref(sup,-1),-1,0)),1)==1,sup,res); |
Менять Close на High/Low
В общем поменять
Код: |
SellPrice = Close;
BuyPrice = Close; |
гораздо проще.
Цитата: |
Но стало интересно на Ренж-барах:
Во первых показывает хорошие результаты, но только на графиках, сделанных из минуток, на тиковых результат плохой. Почему?! |
Это вытекает из правил строительства рендж-баров.
В Ами есть отличный инструмент Bar-Replay
Запусти и наблюдай как появляются бары, как меняются твои сигналы. Внимательно понаблюдай и много чего увидишь. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
ZVV
Зарегистрирован: 20.11.2014
Сообщения: 69
|
Цитата: |
Но стало интересно на Ренж-барах:
Во первых показывает хорошие результаты, но только на графиках, сделанных из минуток, на тиковых результат плохой. Почему?!
Это вытекает из правил строительства рендж-баров.
В Ами есть отличный инструмент Bar-Replay
Запусти и наблюдай как появляются бары, как меняются твои сигналы. Внимательно понаблюдай и много чего увидишь. |
Немного не поняли друг друга, а точнее я не смог выразить свою мысль, она дозрела позже
Это понятно, что если запустить Bar-Replay, то будет наблюдаться "появление-пропадание" сигнала...Потому что сигнал на Close...Но ведь при мониторинге реал-тайм мы не можем сказать где будет закрытие бара, пока не откроется новый бар. И поэтому (твердое ИМХО) на ренж барах цена сделки должна быть равной открытию следующего бара. Но мне не удалось перенастроить что бы так было - срабатывает либо на Low либо на Close. Что нужно написать чтобы срабатывало на Open следующего бара?
Цитата: |
BuyPrice= Ref(Open,1); |
не катит, или у меня с настройками еще косяки какие-то? Заранее благодарю за ответ!
Но я сначала имел ввиду другое, что меня озадачило - почему на ренжах из тиковых данных результат так себе, а на ренжах из минутных данных - прёт?! На минутных данных между ренж-барами есть гэпы, а на тиковых разрывов практически нет. Больше ведь разницы нет?! Причем прёт, даже если делаешь адскую комиссию, закладываясь на проскальзывание. Видимо что-то в структуре всей картины меняется как-то где-то в целом... Но истинными результатами теста будут только по тиковым данным или минуткам можно доверять(с настройкой экспорта в будущем по минуткам)? Интересно чужое мнение по этому поводу ![Smile](images/smiles/icon_smile.gif) |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цитата: |
Что нужно написать чтобы срабатывало на Open следующего бара? |
Код: |
SetTradeDelays(1, ..., 1, ...);
BuyPrice = ShortPrice = Open; |
Цитата: |
Но я сначала имел ввиду другое, что меня озадачило - почему на ренжах из тиковых данных результат так себе, а на ренжах из минутных данных - прёт?! На минутных данных между ренж-барами есть гэпы, а на тиковых разрывов практически нет. Больше ведь разницы нет?! Причем прёт, даже если делаешь адскую комиссию, закладываясь на проскальзывание. Видимо что-то в структуре всей картины меняется как-то где-то в целом... Но истинными результатами теста будут только по тиковым данным или минуткам можно доверять(с настройкой экспорта в будущем по минуткам)? Интересно чужое мнение по этому поводу |
ренж-бары строятся из обычных. Т.е. как бы из порций. Причем один обычный бар не может попасть в 2 разных ренж-бара. Чем крупнее эти порции, тем косячнее результирующий ренж-бар. При этом если ренж-бар заметно превышает размер этих порций, то результат будет более-менее близко к правде, а если они почти одинаковые, то там будет такая каша, что просто жопа. ))))) |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
ZVV
Зарегистрирован: 20.11.2014
Сообщения: 69
|
Ну вот и развалилось всё,спасибо
Цитата: |
то там будет такая каша, |
Ну т.е. только тиковые исходники должны быть для проверки. Так и думал в принципе, и не доверял красивым результатам на минутках ![Smile](images/smiles/icon_smile.gif) |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|