Автор |
Сообщение |
FedorovMG
Зарегистрирован: 14.08.2014
Сообщения: 58
|
Здравствуйте.
Возник такой вопрос:
Как подтверждать сигнал на разных временных интервалах?
Попробую объяснить подробно.
1. Получить сигнал на часовом графике.
2. Получить сигнал на минутном графике.
3. Если сигналы совпадают на минутном графике выставить заявку.
4. Если сигналы различаются закрываем сделку.
Как то так.
P.S. На форуме поискал - либо плохо искал, либо такое никто не спрашивал. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Типа так.
Код: |
TimeFrameSet(inDaily); // переключаемся на дневной фрейм
MA10_InDaily = MA(Close,10);
Daily_Buy = Cross(C, MA10_InDaily);
TimeFrameRestore();
Daily_Buy = TimeFrameExpand(Daily_Buy, inDaily); // астягиваем массив Daily_Buy на основной фрейм
Minute_Buy = Cross(C, MA(C, 10));
Buy = Minute_Buy AND Daily_Buy; |
1. При этом фрейм в АА должен быть равен минимально используемому в системе.
2. Функция TimeFrameSet() сжимает только массивы цен OHLCV. Поэтому расчет всяческих мувингов, RSI, стохастиков и т.п. нужных на старшем фрейме производить только внутри блока TimeFrameSet -> TimeFrameExpand
Ищи по форуму TimeFrameSet |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
FedorovMG
Зарегистрирован: 14.08.2014
Сообщения: 58
|
ВОТ-ВОТ мне это и надо было!
Большое спасибо! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
ZVV
Зарегистрирован: 20.11.2014
Сообщения: 69
|
Чтобы не засорять похожими темами здесь спрошу:
Вот если
Цитата: |
TimeFrameSet(inDaily); |
то пишется :
А если
Цитата: |
TimeFrameMode( 4 );
TimeFrameSet( 37 ); |
то вместо Daily_Buy что нужно написать
P.S. На Buy_37 Verify Syntax не ругается, это правильное решение? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
MrDrJOKER
Зарегистрирован: 22.06.2009
Сообщения: 489
|
ZVV писал(а): |
Чтобы не засорять похожими темами здесь спрошу:
Вот если
Цитата: |
TimeFrameSet(inDaily); |
то пишется :
А если
Цитата: |
TimeFrameMode( 4 );
TimeFrameSet( 37 ); |
то вместо Daily_Buy что нужно написать
P.S. На Buy_37 Verify Syntax не ругается, это правильное решение? |
пиши, что хочешь, я разрешаю. лишь бы сам потом понял. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
ZVV писал(а): |
то вместо Daily_Buy что нужно написать
P.S. На Buy_37 Verify Syntax не ругается, это правильное решение? |
Да. Это просто имя переменной (массива). Можно называть как угодно. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
ZVV
Зарегистрирован: 20.11.2014
Сообщения: 69
|
Цитата: |
Да. Это просто имя переменной (массива). Можно называть как угодно. |
Вот только Verify Syntax не дает как угодно называть. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
ZVV
Зарегистрирован: 20.11.2014
Сообщения: 69
|
Хелп! Ну я тут заводил пару тупых тем, конечно и создал себе репутацию, но блин не настолько же я ... среднестатистически Я не программист, хочу для себя разобраться.. вот не могу для ренж баров понять чтобы по разным фреймам работал тестер. При том что по классическим графикам со шкалой времени понятно.
Вот взять простейший к примеру код
Цитата: |
TimeFrameSet( inHourly );
Buy_inHourly = Close > Ref(Close,-1);
Sell_inHourly = Close < Ref(Close,-1);
TimeFrameRestore();
Buy_inHourly = TimeFrameExpand(Buy_inHourly, inHourly);
Sell_inHourly = TimeFrameExpand(Sell_inHourly, inHourly);
Buy = Buy_inHourly ;
Sell = Sell_inHourly ; |
Прекрасно работает то что в нем написано на любых младших.
Переправленный в ренж бары не работает вообще, точнее график выглядит так, как будто написано
Цитата: |
Buy = Close > Ref(Close,-1);
Sell = Close < Ref(Close,-1); |
т.е. на любых младших фреймах фигачит по каждой свече и все.
Эмпирически перепробовал 100500 вариантов. Не могу понять. А в хелпе везде подсказки про формации с временем...
перепробовал разные варианты, думал правильно будет такой (тиковые данные SBRF, график ну скажем 2000R )
Цитата: |
TimeFrameMode( 4 );
TimeFrameSet( 10000 );
Buy_10000 = Close > Ref(Close,-1);
Sell_10000 = Close < Ref(Close,-1);
TimeFrameRestore();
Buy_10000 = TimeFrameExpand(Buy_10000 , 10000 );
Sell_10000 = TimeFrameExpand(Sell_10000 , 10000 );
Buy = Buy_10000 ;
Sell = Sell_10000 ; |
Начинает работать в конце графика и работает. как выше сказал по каждой свече.
В общем нужна помощь(( |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А TickSize в настройках символа установил?
Цитата: |
- switches time frame functions to N-Range bar operation (positive values passed to TimeFrameSet are treated now as N-range bars) where N is expressed in TickSize units (this is default mode of operation of range bars in 5.14 and above).
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
ZVV
Зарегистрирован: 20.11.2014
Сообщения: 69
|
Database settings > Base time interval > Tick.
Backtester settings > Periodicity > 2000R.
Backtester settings > Tick size > 1.
Про это вопрос или еще где-то что-то надо установить? Вообще все тесты с ренж барами, с индикаторами или паттернами работают идеально, не могу настроить только тест по двум фреймам. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Меню Sumbol->Information->TickSize... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
ZVV
Зарегистрирован: 20.11.2014
Сообщения: 69
|
000 писал(а): |
Меню Sumbol->Information->TickSize... |
Про это не знал - повторюсь, проблем с тестами не было, непонятки конечно вызывало отображение на графике, думал считает копейки, ну так и оказалось потому что стояло "0", поставил "1", конечно после этого график стал отображаться логически правильно , тик стал равен 1р., то есть вместо 2000R нужно ставить 20R. В коде заменил 10000 на 100 - картина не изменилась:
1) база с 1 янв по 14 мая - тест начинается с 8 мая. Почему ?!
2)Я не правильно описал что работает как будто
Цитата: |
Buy = Close > Ref(Close,-1);
Sell = Close < Ref(Close,-1);
|
Я не пойму вообще там логики происходящего - то открывает в одном баре, в следующем закрывает, то держит несколько баров, но совпадения логики с написанным нет.
Я вот думаю: а причина не может быть в
Цитата: |
Buy_100 = TimeFrameExpand(Buy_100 , 100 );
Sell_100 = TimeFrameExpand(Sell_100 , 100 );
|
Там в подсказке при открытии скобки from interval, может тестер понимает это как какой-то интервал, количество баров? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Картинки несоответствия можешь дать? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
ZVV
Зарегистрирован: 20.11.2014
Сообщения: 69
|
Цитата: |
TimeFrameMode( 4 );
TimeFrameSet( 100 );
Buy_100 = Close > Ref(Close,-1);
Sell_100 = Close < Ref(Close,-1);
TimeFrameRestore();
Buy_100 = TimeFrameExpand(Buy_100 , 100 );
Sell_100 = TimeFrameExpand(Sell_100 , 100 );
Buy = Buy_100 ;
Sell = Sell_100 ;
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Привет. Никогда не работал с рандж барами. Сегодня постараюсь глянуть что там... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|