Автор |
Сообщение |
BRTO
Зарегистрирован: 01.03.2009
Сообщения: 105
|
Здравствуйте!
Подбросьте, кто знает, простенький пример рисования линий по двум последним вершинам Zig-zag, наподобие как в приложенном рисунке |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ща под рукой нет, но там не сложно. Даже помню для метастока подобный код был.
Трабл вот в чем.
Если линии тренда продлять в право, то, еслиистория остаточно длинная их получается хренова туча, там сам черт ногу сломит, а если в право не продлять, то как бы и смысла нет.
Посмотри в хелпере функцию LINEARRAY() там вроде как раз такой пример. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
А вот кстати - встроенный зиг-заг не умеет рисовать по хай-лоу??? или я туплю. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Нет, не умеет. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
BRTO
Зарегистрирован: 01.03.2009
Сообщения: 105
|
000 писал(а): |
Ща под рукой нет, но там не сложно. Даже помню для метастока подобный код был.
Трабл вот в чем.
Если линии тренда продлять в право, то, еслиистория остаточно длинная их получается хренова туча, там сам черт ногу сломит, а если в право не продлять, то как бы и смысла нет.
Посмотри в хелпере функцию LINEARRAY() там вроде как раз такой пример. |
Спасибо, буду смотреть
Интересно только, почему линий много, по идее должно быть только две, периодически перерисовывающихся |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ааааа. "по двум последним"... не обратил внимание... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Fastin
Зарегистрирован: 09.07.2010
Сообщения: 9
|
Здравствуйте! Приступил к реализации сабжа. Результат работы нижеприведенного кода всего одна сделка(по двум последним отрисованным линиям), хотелось бы протестить все сделки. Каким образом это можно реализовать? Заранее спасибо! Код вот
Код: |
("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() );
_SECTION_END();
percent=Optimize("percent",0.1,0,10,0.01);
y0=LastValue(Trough(IIf(Close>Open,Open,Close),percent,2));
y1=LastValue(Trough(IIf(Close>Open,Open,Close),percent,1));
x0=BarCount - 1 - LastValue(TroughBars(IIf(Close>Open,Open,Close),percent,2));
x1=BarCount - 1 - LastValue(TroughBars(IIf(Close>Open,Open,Close),percent,1));
LineTrough = LineArray( x0, y0, x1, y1, 1 );
y2=LastValue(Peak(IIf(Close<Open,Open,Close),percent,2));
y3=LastValue(Peak(IIf(Close<Open,Open,Close),percent,1));
x2=BarCount - 1 - LastValue(PeakBars(IIf(Close<Open,Open,Close),percent,2));
x3=BarCount - 1 - LastValue(PeakBars(IIf(Close<Open,Open,Close),percent,1));
LinePeak = LineArray( x2, y2, x3, y3, 1 );
Plot(C, "C", colorWhite, styleCandle);
Plot( LineTrough , "LineTrough" , colorBlue );
Plot( LinePeak , "LinePeak " , colorYellow );
Plot( Zig(Close,percent) , "Zig" , colorWhite+styleThick );
Buy=Cross(Close,LinePeak ) AND y2>y3;
Sell=Cross(LineTrough ,Close) AND y0<y1;
Short=Cross(LineTrough ,Close) AND y0<y1;
Cover=Cross(Close,LinePeak ) AND y2>y3;
SetPositionSize(1,spsShares); |
По сути это тот же пример из хелпа. Продлять все линии нет нужды, только две |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Самый простой способ это запустить бар реплеер и записывать сделки на бумажку.
Либо переделать код так, чтобы строил не только 2 последних линии а всеи протестировать обычным образом.
Дело в том, что тестер не прогоняет бары с первого до последнего как можно было бы подумать. Если бы он прогонял бары так как они в реале добавляются и при этом строил 2 последних линии и считал сделки....
Но тестер работает не так. Он смотрит сразу всю историю. Поэтому строить надо все линии (не только 2 последних)... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Fastin
Зарегистрирован: 09.07.2010
Сообщения: 9
|
000 писал(а): |
Самый простой способ это запустить бар реплеер и записывать сделки на бумажку.
Либо переделать код так, чтобы строил не только 2 последних линии а всеи протестировать обычным образом.
Дело в том, что тестер не прогоняет бары с первого до последнего как можно было бы подумать. Если бы он прогонял бары так как они в реале добавляются и при этом строил 2 последних линии и считал сделки....
Но тестер работает не так. Он смотрит сразу всю историю. Поэтому строить надо все линии (не только 2 последних)... |
Вот блин!
Олег, намекни пожалуйста как
Цитата: |
переделать код так, чтобы строил не только 2 последних линии а всеи протестировать обычным образом. |
это можно сделать? Оптимизировать хочется |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Сейчас не подскажу. Это не 2ух минутное дело. Напомни в конце недели. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Fastin
Зарегистрирован: 09.07.2010
Сообщения: 9
|
Спасибо! Договорились, в пятницу в личку скину. коньячок должон буду |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Fastin
Зарегистрирован: 09.07.2010
Сообщения: 9
|
Возможно совместить как то с этим подходом
Код: |
yy = Param("%", 1, 0, 100, 1, 10 );
Z=(O+H+L+C)/4;
y = yy/10;
Sup = Trough( Z ,y,1)+
((((Trough( Z ,y,1)-Trough( Z ,y,2))/
(TroughBars( Z ,y,2)-TroughBars( Z ,y,1)))
*TroughBars( Z ,y,1)));
R = Peak(Z ,y,1)+
((((Peak(Z ,y,1)-Peak(Z ,y,2))/
(PeakBars(Z ,y,2)-PeakBars(Z ,y,1)))
*PeakBars(Z ,y,1)));
Plot( Sup, "support", colorRed, styleLine+styleThick );
Plot(R, "resistance", colorBlue, styleLine+styleThick );
Plot(C, "Binary CCI TL", ParamColor( "Color", colorCycle ),styleCandle); |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Fastin писал(а): |
Возможно совместить как то с этим подходом
Код: |
yy = Param("%", 1, 0, 100, 1, 10 );
Z=(O+H+L+C)/4;
y = yy/10;
Sup = Trough( Z ,y,1)+
((((Trough( Z ,y,1)-Trough( Z ,y,2))/
(TroughBars( Z ,y,2)-TroughBars( Z ,y,1)))
*TroughBars( Z ,y,1)));
R = Peak(Z ,y,1)+
((((Peak(Z ,y,1)-Peak(Z ,y,2))/
(PeakBars(Z ,y,2)-PeakBars(Z ,y,1)))
*PeakBars(Z ,y,1)));
Plot( Sup, "support", colorRed, styleLine+styleThick );
Plot(R, "resistance", colorBlue, styleLine+styleThick );
Plot(C, "Binary CCI TL", ParamColor( "Color", colorCycle ),styleCandle); |
|
Ну. Это на 80% уже готовый код. Я собственно сделал бы точно так.
Собственно осталось правила покупки/продажи сделать.
Только одна фигня. Peak и Trough заглядывают вперед, поэтому результаты буду не реальные. Желательно изменить метод обнаружения пиков и впадин и соответственно вместо PeakBars и TroughBars использовать подходящую функцию. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Fastin
Зарегистрирован: 09.07.2010
Сообщения: 9
|
000 писал(а): |
изменить метод обнаружения пиков и впадин и соответственно вместо PeakBars и TroughBars использовать подходящую функцию. |
Ну у меня только есть вариант использовать их после того как цена прошла после пика\впадины необходимый процент и пик\впадина гарантированно не перерисуется. Или есть еще какой то метод? Да и про подходящуюю функцию что-то не совсем догоняю. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Fastin писал(а): |
Ну у меня только есть вариант использовать их после того как цена прошла после пика\впадины необходимый процент и пик\впадина гарантированно не перерисуется. |
Отлично. Можно и так
Fastin писал(а): |
Или есть еще какой то метод? Да и про подходящуюю функцию что-то не совсем догоняю. |
Ну типа BarsSince(), ValueWhen(), BarIndex()... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|