Автор |
Сообщение |
AntColonel
Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск
|
Возможно, где-то здесь был подобный вопрос. Не могу найти. Запутался совсем.
Грубо говоря, имею два окна - одно с ценой инструмента, в другом спрэд зявок купли/продажи.
Окно спрэда имеет следующий код:
Код: |
_SECTION_BEGIN("Spread");
_N( Symbol2= ParamStr("Symbol2", "MSFT") );
_N( Symbol1= ParamStr("Symbol1", "MSFT") );
Mode = ParamToggle("Mode", "Difference (Symbol1-Symbol2)|Ratio (Symbol1/Symbol2)");
SetForeign( Symbol2 );
C2 = C;
H2 = H;
L2 = L;
O2 = O;
V2 = V;
RestorePriceArrays();
SetForeign( Symbol1 );
C1 = C;
H1 = H;
L1 = L;
O1 = O;
V1 = V;
RestorePriceArrays();
Color = ParamColor( "Color", colorBlack );
Style = ParamStyle( "Style", styleLine, maskPrice );
if( Mode == 0 )
PlotOHLC( O1-O2, H1-H2, L1-L2, C1-C2, "(" + Symbol1 +" - "+Symbol2 + ") spread", Color, style );
else
PlotOHLC( O1/O2, H1/H2, L1/L2, C1/C2, "(" + Symbol1 +" / "+Symbol2 + ") spread", Color, style );
SpreadAB = C1 - C2;
PerMA = Param ("Period MA", 21, 0, 144, 1);
SpreadMA = MA (SpreadAB, PerMA);
Plot (SpreadMA, "SpreadMA", colorRed);
Plot (0, "Seredina", colorLime, styleDashed);
Buy = Cross (SpreadAB, SpreadMA) AND SpreadAB > 0;
Sell = Cross (SpreadMA, SpreadAB) AND SpreadAB > 0;
Short = Cross (SpreadMA, SpreadAB) AND SpreadAB < 0;
Cover = Cross (SpreadAB, SpreadMA) AND SpreadAB < 0;
PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorLime, 0, 0, Offset=0);
PlotShapes(IIf(Sell, shapeHollowDownTriangle, shapeNone),colorRed, 0, 0, Offset=0);
PlotShapes(IIf(Short, shapeDownArrow, shapeNone),colorRed, 0, 0, Offset=0);
PlotShapes(IIf(Cover, shapeHollowUpTriangle, shapeNone),colorLime, 0, 0, Offset=0);
Equity( 1 );
_SECTION_END(); |
Стрелочки добросовестно выводит на график спреда.
Теперь вопрос. Как мне заставить тестер по данным сигналам совершать сделки на самом инструменте? Ну либо по другим сигналам с использованием значений "SpreadAB". Сейчас тестер выводит пустоту.
Спасибо!
И прошу прощения, если уже было. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
1. Убери из кода Equity( 1 ); Она там в любом случае нафиг не нужна.
2. Твой код прекрасно работает. Сделок нет или из-за Equity( 1 ) или в настройках тестера косяки. Попробуй сделать Scan в тестере. Если увидишь сигналы значит тестер их видит и не исполняет потому, что настройках что то не так. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
AntColonel
Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск
|
000 писал(а): |
1. Убери из кода Equity( 1 ); Она там в любом случае нафиг не нужна.
2. Твой код прекрасно работает. Сделок нет или из-за Equity( 1 ) или в настройках тестера косяки. Попробуй сделать Scan в тестере. Если увидишь сигналы значит тестер их видит и не исполняет потому, что настройках что то не так. |
Убрал. Все равно не пашет. В скане пусто, сигналов не дает.
Настройки тестера не меняю - на других системах считает. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Странно. Я у себя проверял. Работает. А ты в настройках прописал 2 раных тикера? Там по умолчанию и первый и второй MSFT. Естественно никакого спреда не будет если тикер одинаковый. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
AntColonel
Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск
|
000 писал(а): |
Странно. Я у себя проверял. Работает. А ты в настройках прописал 2 раных тикера? Там по умолчанию и первый и второй MSFT. Естественно никакого спреда не будет если тикер одинаковый. |
Да, в настройках ручками (в диалоговом окне) прописаны два разных. На графике то стрелочки рисуются. Или дополнительно надо в самом коде прописать? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Прописал ты разные в индикаторе а в АА надо тоже прописать т.к. код в индикаторе и код в АА работают независимо, несмотря даже на то, что код одинаковый. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
AntColonel
Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск
|
000 писал(а): |
Прописал ты разные в индикаторе а в АА надо тоже прописать т.к. код в индикаторе и код в АА работают независимо, несмотря даже на то, что код одинаковый. |
В АА указано, что тестировать на "текущем инструменте". Т.е. окно текущего инструмента - РИ. Но тест все равно не идет. Я ничего не понимаю.
На картинке видно, что стрелочки на самом графике он рисует. Рисует по условиям, прописанным в коде (ByuCond и т.д.). Но тестирование в тестере не идет. Т.е. условия идут на графике спрэда, а сделки надо проводить на верхнем графике цены (Сам РИ). Я добавил в код РИ третьим инструментом и вывожу сделки на него (видно в коде). Но ничего не идет. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Я проверял. Код работал.
Попробуй в строчках
Код: |
_N( Symbol2= ParamStr("Symbol2", "MSFT") );
_N( Symbol1= ParamStr("Symbol1", "MSFT") ); |
Вместо MSFT прописать те символы которые используешь в спреде. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
AntColonel
Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск
|
000 писал(а): |
Вместо MSFT прописать те символы которые используешь в спреде. |
Все прописал. Тишина. Ни скан, ни тест не дают сделок. Настройки все тестере проверены, т.е. тут же любая другая система тестируется.
Вот код полностью:
Код: |
_SECTION_BEGIN("Spread");
_N( Symbol2= ParamStr("Symbol2", "RIZVPR") );
_N( Symbol1= ParamStr("Symbol1", "RIZVSP") );
Mode = ParamToggle("Mode", "Difference (Symbol1-Symbol2)|Ratio (Symbol1/Symbol2)");
SetForeign( Symbol2 );
C2 = C;
H2 = H;
L2 = L;
O2 = O;
V2 = V;
RestorePriceArrays();
SetForeign( Symbol1 );
C1 = C;
H1 = H;
L1 = L;
O1 = O;
V1 = V;
RestorePriceArrays();
SpreadAB = C1 - C2;
Color = ParamColor( "Color", colorBlack );
Style = ParamStyle( "Style", styleLine, maskPrice );
if( Mode == 0 )
PlotOHLC( O1-O2, H1-H2, L1-L2, C1-C2, "(" + Symbol1 +" - "+Symbol2 + ") spread", Color, style );
else
PlotOHLC( O1/O2, H1/H2, L1/L2, C1/C2, "(" + Name()+" / "+Symbol2 + ") spread", Color, style );
_SECTION_END();
_SECTION_BEGIN("MA");
P = ParamField("Price field",-1);
Periods = Param("Periods", 15, 2, 300, 1, 10 );
SpreadMA = MA(Close, Periods);
Plot( MA( P, Periods ), _DEFAULT_NAME(), ParamColor( "Color", colorCycle ), ParamStyle("Style") );
_SECTION_END();
Buy = Cross (SpreadAB, SpreadMA) AND SpreadAB > 0;
Sell = Cross (SpreadMA, SpreadAB);
Short = Cross (SpreadMA, SpreadAB) AND SpreadAB < 0;
Cover = Cross (SpreadAB, SpreadMA);
PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorLime, 0, L, Offset=0);
PlotShapes(IIf(Sell, shapeHollowDownTriangle, shapeNone),colorRed, 0, H, Offset=0);
PlotShapes(IIf(Short, shapeDownArrow, shapeNone),colorRed, 0, H, Offset=0);
PlotShapes(IIf(Cover, shapeHollowUpTriangle, shapeNone),colorLime, 0, L, Offset=0);
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Я скоро материться буду.
Твой код для теста должен выглядеть так
Код: |
_N( Symbol2= ParamStr("Symbol2", "RIZVPR") );
_N( Symbol1= ParamStr("Symbol1", "RIZVSP") );
SetForeign( Symbol2 );
C2 = C;
RestorePriceArrays();
SetForeign( Symbol1 );
C1 = C;
RestorePriceArrays();
SpreadAB = C1 - C2;
Periods = Param("Periods", 15, 2, 300, 1, 10 );
SpreadMA = MA(Close, Periods);
Buy = Cross (SpreadAB, SpreadMA) AND SpreadAB > 0;
Sell = Cross (SpreadMA, SpreadAB);
Short = Cross (SpreadMA, SpreadAB) AND SpreadAB < 0;
Cover = Cross (SpreadAB, SpreadMA);
|
Зачем у тебя там секции, plot и прочая шелуха???
Вот когда смотришь мой код становиться видно, что сигнал на сделку это пересечение спреда между RIZVPR и RIZVSP и мувинга на той бумаге которая тестируется Cross (SpreadAB, SpreadMA)
Собственно а почему они должны пересекаться? С таким же успехом можно написать
Покупать когда температура на экваторе пересечет орбиту луны снизу вверх. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
AntColonel
Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск
|
000 писал(а): |
Я скоро материться буду.
Зачем у тебя там секции, plot и прочая шелуха???
Вот когда смотришь мой код становиться видно, что сигнал на сделку это пересечение спреда между RIZVPR и RIZVSP и мувинга на той бумаге которая тестируется Cross (SpreadAB, SpreadMA)
Собственно а почему они должны пересекаться? С таким же успехом можно написать
Покупать когда температура на экваторе пересечет орбиту луны снизу вверх. |
Олег, прошу прощения, что вывожу из себя. Сел переписал с нуля код ручками. Заработало.
Плот - так это для всяких красивостей на графике. Но вот видимо тестить с ними ничего не хотела прога.
А по поводу пересечения. Вы не совсем верно истолковали. Или я плохо донес. Там будет так:
SpreadMA = MA(SpreadAB, Periods);
Т.е. мувинг будет строится не по цене, а по спрэду. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Это я догадался. Но написано у тебя было не MA(SpreadAB, Periods), а MA(Close, Periods) |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
AntColonel
Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск
|
000 писал(а): |
Это я догадался. Но написано у тебя было не MA(SpreadAB, Periods), а MA(Close, Periods) |
Виноват. Был неправ. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|