Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 В чем обман? Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
ZVV



Зарегистрирован: 20.11.2014
Сообщения: 69

СообщениеДобавлено: Вс Ноя 30, 2014 11:01 pm Ответить с цитатой Вернуться к началу

Всем доброго времени суток!

Нашел на просторах(или в глубинах) интернета, если было - прошу извинить. В чем обман?


Цитата:
_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);
}
}
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Дек 01, 2014 5:01 pm Ответить с цитатой Вернуться к началу

Вот в этих строках
Код:
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
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
ZVV



Зарегистрирован: 20.11.2014
Сообщения: 69

СообщениеДобавлено: Пн Дек 01, 2014 10:07 pm Ответить с цитатой Вернуться к началу

Ок, Спасибо!

А исправить можно и например на Ренж-барах свести к "Ref(Open,1)"? Я извиняюсь за, вероятно, идиотские вопросы - нуб![/quote]
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вт Дек 02, 2014 1:08 am Ответить с цитатой Вернуться к началу

Исправить легко.
Например.
SellPrice = Close;
BuyPrice = Close;

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
ZVV



Зарегистрирован: 20.11.2014
Сообщения: 69

СообщениеДобавлено: Вт Дек 02, 2014 7:43 pm Ответить с цитатой Вернуться к началу

Спасибо! Я думал менять надо Sell=... Buy=...

Теперь на обычных графиках( со шкалой времени) все стало плохо. Но стало интересно на Ренж-барах:
Во первых показывает хорошие результаты, но только на графиках, сделанных из минуток, на тиковых результат плохой. Почему?!
Во вторых, понятно что не устраивает цена зарытия ибо она неизвестна пока не откроется новый бар, и вот не удается заставить открываться по цене открытия нового бара - как не менял настройки в Backtester-Settings-Trades - цена "этого" бара либо минимальная, либо закрытия, следующего бара - либо минимальная либо закрытия! В итоге тестировал по цене закрытия этого бара, но увеличив комиссию на проскальзывание. И в итоге на ренж-барах (по минутным графикам) хороший результат.

В чем подвох теперь? =) Заранее спасибо!
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Ср Дек 03, 2014 1:23 am Ответить с цитатой Вернуться к началу

Цитата:
Спасибо! Я думал менять надо 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
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
ZVV



Зарегистрирован: 20.11.2014
Сообщения: 69

СообщениеДобавлено: Чт Дек 04, 2014 8:43 pm Ответить с цитатой Вернуться к началу

Цитата:
Но стало интересно на Ренж-барах:
Во первых показывает хорошие результаты, но только на графиках, сделанных из минуток, на тиковых результат плохой. Почему?!


Это вытекает из правил строительства рендж-баров.
В Ами есть отличный инструмент Bar-Replay
Запусти и наблюдай как появляются бары, как меняются твои сигналы. Внимательно понаблюдай и много чего увидишь.


Немного не поняли друг друга, а точнее я не смог выразить свою мысль, она дозрела позже Smile
Это понятно, что если запустить Bar-Replay, то будет наблюдаться "появление-пропадание" сигнала...Потому что сигнал на Close...Но ведь при мониторинге реал-тайм мы не можем сказать где будет закрытие бара, пока не откроется новый бар. И поэтому (твердое ИМХО) на ренж барах цена сделки должна быть равной открытию следующего бара. Но мне не удалось перенастроить что бы так было - срабатывает либо на Low либо на Close. Что нужно написать чтобы срабатывало на Open следующего бара?
Цитата:
BuyPrice= Ref(Open,1);
не катит, или у меня с настройками еще косяки какие-то? Заранее благодарю за ответ!


Но я сначала имел ввиду другое, что меня озадачило - почему на ренжах из тиковых данных результат так себе, а на ренжах из минутных данных - прёт?! На минутных данных между ренж-барами есть гэпы, а на тиковых разрывов практически нет. Больше ведь разницы нет?! Причем прёт, даже если делаешь адскую комиссию, закладываясь на проскальзывание. Видимо что-то в структуре всей картины меняется как-то где-то в целом... Но истинными результатами теста будут только по тиковым данным или минуткам можно доверять(с настройкой экспорта в будущем по минуткам)? Интересно чужое мнение по этому поводу Smile
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Дек 04, 2014 9:35 pm Ответить с цитатой Вернуться к началу

Цитата:
Что нужно написать чтобы срабатывало на Open следующего бара?

Код:
SetTradeDelays(1, ..., 1, ...);
BuyPrice = ShortPrice = Open;

Цитата:
Но я сначала имел ввиду другое, что меня озадачило - почему на ренжах из тиковых данных результат так себе, а на ренжах из минутных данных - прёт?! На минутных данных между ренж-барами есть гэпы, а на тиковых разрывов практически нет. Больше ведь разницы нет?! Причем прёт, даже если делаешь адскую комиссию, закладываясь на проскальзывание. Видимо что-то в структуре всей картины меняется как-то где-то в целом... Но истинными результатами теста будут только по тиковым данным или минуткам можно доверять(с настройкой экспорта в будущем по минуткам)? Интересно чужое мнение по этому поводу

ренж-бары строятся из обычных. Т.е. как бы из порций. Причем один обычный бар не может попасть в 2 разных ренж-бара. Чем крупнее эти порции, тем косячнее результирующий ренж-бар. При этом если ренж-бар заметно превышает размер этих порций, то результат будет более-менее близко к правде, а если они почти одинаковые, то там будет такая каша, что просто жопа. )))))

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
ZVV



Зарегистрирован: 20.11.2014
Сообщения: 69

СообщениеДобавлено: Чт Дек 04, 2014 10:35 pm Ответить с цитатой Вернуться к началу

Ну вот и развалилось всё,спасибо Smile

Цитата:
то там будет такая каша,


Ну т.е. только тиковые исходники должны быть для проверки. Так и думал в принципе, и не доверял красивым результатам на минутках Smile
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen