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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Вт Апр 24, 2012 10:33 am Ответить с цитатой Вернуться к началу

Возможно, где-то здесь был подобный вопрос. Не могу найти. Запутался совсем.

Грубо говоря, имею два окна - одно с ценой инструмента, в другом спрэд зявок купли/продажи.

Окно спрэда имеет следующий код:

Код:
_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

СообщениеДобавлено: Ср Апр 25, 2012 12:10 am Ответить с цитатой Вернуться к началу

1. Убери из кода Equity( 1 ); Она там в любом случае нафиг не нужна.
2. Твой код прекрасно работает. Сделок нет или из-за Equity( 1 ) или в настройках тестера косяки. Попробуй сделать Scan в тестере. Если увидишь сигналы значит тестер их видит и не исполняет потому, что настройках что то не так.

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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Чт Апр 26, 2012 9:58 am Ответить с цитатой Вернуться к началу

000 писал(а):
1. Убери из кода Equity( 1 ); Она там в любом случае нафиг не нужна.
2. Твой код прекрасно работает. Сделок нет или из-за Equity( 1 ) или в настройках тестера косяки. Попробуй сделать Scan в тестере. Если увидишь сигналы значит тестер их видит и не исполняет потому, что настройках что то не так.


Убрал. Все равно не пашет. В скане пусто, сигналов не дает.
Настройки тестера не меняю - на других системах считает.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Апр 26, 2012 11:04 am Ответить с цитатой Вернуться к началу

Странно. Я у себя проверял. Работает. А ты в настройках прописал 2 раных тикера? Там по умолчанию и первый и второй MSFT. Естественно никакого спреда не будет если тикер одинаковый.

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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Сб Апр 28, 2012 9:58 am Ответить с цитатой Вернуться к началу

000 писал(а):
Странно. Я у себя проверял. Работает. А ты в настройках прописал 2 раных тикера? Там по умолчанию и первый и второй MSFT. Естественно никакого спреда не будет если тикер одинаковый.


Да, в настройках ручками (в диалоговом окне) прописаны два разных. На графике то стрелочки рисуются. Или дополнительно надо в самом коде прописать?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Сб Апр 28, 2012 11:41 am Ответить с цитатой Вернуться к началу

Прописал ты разные в индикаторе а в АА надо тоже прописать т.к. код в индикаторе и код в АА работают независимо, несмотря даже на то, что код одинаковый.

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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Вт Авг 21, 2012 7:39 am Ответить с цитатой Вернуться к началу

000 писал(а):
Прописал ты разные в индикаторе а в АА надо тоже прописать т.к. код в индикаторе и код в АА работают независимо, несмотря даже на то, что код одинаковый.


В АА указано, что тестировать на "текущем инструменте". Т.е. окно текущего инструмента - РИ. Но тест все равно не идет. Я ничего не понимаю.

На картинке видно, что стрелочки на самом графике он рисует. Рисует по условиям, прописанным в коде (ByuCond и т.д.). Но тестирование в тестере не идет. Т.е. условия идут на графике спрэда, а сделки надо проводить на верхнем графике цены (Сам РИ). Я добавил в код РИ третьим инструментом и вывожу сделки на него (видно в коде). Но ничего не идет.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Авг 21, 2012 9:21 am Ответить с цитатой Вернуться к началу

Я проверял. Код работал.
Попробуй в строчках
Код:
_N( Symbol2= ParamStr("Symbol2", "MSFT") );
_N( Symbol1= ParamStr("Symbol1", "MSFT") );

Вместо MSFT прописать те символы которые используешь в спреде.

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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Вт Авг 21, 2012 9:54 am Ответить с цитатой Вернуться к началу

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

СообщениеДобавлено: Вт Авг 21, 2012 10:30 pm Ответить с цитатой Вернуться к началу

Я скоро материться буду.
Твой код для теста должен выглядеть так
Код:

_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
Откуда: Новосибирск

СообщениеДобавлено: Ср Авг 22, 2012 8:43 am Ответить с цитатой Вернуться к началу

000 писал(а):
Я скоро материться буду.
Зачем у тебя там секции, plot и прочая шелуха???

Вот когда смотришь мой код становиться видно, что сигнал на сделку это пересечение спреда между RIZVPR и RIZVSP и мувинга на той бумаге которая тестируется Cross (SpreadAB, SpreadMA)

Собственно а почему они должны пересекаться? С таким же успехом можно написать
Покупать когда температура на экваторе пересечет орбиту луны снизу вверх.


Олег, прошу прощения, что вывожу из себя. Сел переписал с нуля код ручками. Заработало.

Плот - так это для всяких красивостей на графике. Но вот видимо тестить с ними ничего не хотела прога.

А по поводу пересечения. Вы не совсем верно истолковали. Или я плохо донес. Там будет так:
SpreadMA = MA(SpreadAB, Periods);

Т.е. мувинг будет строится не по цене, а по спрэду.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Авг 22, 2012 1:52 pm Ответить с цитатой Вернуться к началу

Это я догадался. Но написано у тебя было не MA(SpreadAB, Periods), а MA(Close, Periods)

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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Чт Авг 23, 2012 8:38 am Ответить с цитатой Вернуться к началу

000 писал(а):
Это я догадался. Но написано у тебя было не MA(SpreadAB, Periods), а MA(Close, Periods)


Виноват. Был неправ.
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen