Автор |
Сообщение |
dmitry1208197320
Зарегистрирован: 23.10.2009
Сообщения: 86
|
Может быть вопрос несовсем корректен, но если можно, подскажите, плиз, как в тестере вывести одновременно, например, открытие и закрытие длинных позиций для одного символа и открытие/закрытие коротких позиций для другого символа? У меня почему-то получается одновременно только для одного символа. |
|
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
dmitry1208197320
Зарегистрирован: 23.10.2009
Сообщения: 86
|
Олег, прочитал ещё раз работу тестера, но всё равно непонятно.
У меня такая ситуация: надо открывать (по определённому условию) ОДНОВРЕМЕННО: длинную позицию для текущего символа и короткую позицию следующего за ним символа. Потом (тоже по определённому условию) ОДНОВРЕМЕННО закрывать открытые позиции.
Я делаю так:
1. Заполняю для текущего символа массивы buy и sell.
2. Переключаюсь с помощью функции SetForeign на другой символ.
3. Заполняю для этого символа массивы short и cover.
4. Пытаюсь посмотреть в окне тестера результаты (по кнопке Scan) ОДНОВРЕМЕННО для двух символов, а получается только для текущего.
Что я делаю неправильно? |
|
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
dmitry1208197320
Зарегистрирован: 23.10.2009
Сообщения: 86
|
Олег, помогите, пожалуйста |
|
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цитата: |
2. Переключаюсь с помощью функции SetForeign на другой символ.
|
Вот тут ошибка. С помощтю функции SetForeign не происходит переключения на другой символ. Эта функция позволяет получить массивы OHLCVOi другого символа находяит в этом. (незнаю понятно ли написал)
Поэтому сигналы на другой символ никак не попадают. Соответственно и тестер эти сделки не делает.
Я так понимаю суть системы анализ спреда между бумагами.
Соответственно анализируя для поиска условий сделки каждую из этих бумаг требуются данные с другой бумаги. Ну вот и надо написать систему которая несмотря на то на какой она в данный момент из этих двух бумаг генерирует сигналы сделок. Только если текущая бумага AAA то Buy, а если BBB то Sell.
Далее. Не понятно для чего нужен код.
Если для теста на истории, то можно поступить гораздо проще.
При помощи функции AddToComposite создать тикер в котором прописать сигналы Buy Sell ... например в Close этого тикера забить 0 1 2 соответственно сделка / закрытие сделки.
И потом написать код тестера который будет смотреть этот тикер и в зависимости от того какой сейчас символ и что в этом тикере писать Buy Sell Short Cover
Если на истории все проверено и надо чисто робота, то не так уж трудно переделать код робота чтобы он писал в tri одновременно 2 строки на покупку одно и продажу другого основываясь на анализе только одно тикера из пары...
Вот такие пироги. Надеюсь прояснил ситуацию. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
dmitry1208197320
Зарегистрирован: 23.10.2009
Сообщения: 86
|
спасибо, Олег, вроде всё понял, буду пробовать |
|
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
nemoy
Зарегистрирован: 05.10.2014
Сообщения: 29
|
есть вот такая честно стащеная формула, для сборки суммы тикера из двух
Код: |
procedure Composite_Basket (Basket_Name, Weight)
{
AddToComposite(Weight*O, Basket_Name, "O", atcFlagDeleteValues );
AddToComposite(Weight*H, Basket_Name, "H", atcFlagDeleteValues );
AddToComposite(Weight*L, Basket_Name, "L", atcFlagDeleteValues );
AddToComposite(Weight*C, Basket_Name, "C", atcFlagDeleteValues );
}
_SECTION_BEGIN( "Basket_sber-sberp" );
Filter = C > 0;
Basket_Name = "Basket_sber-vtbr";
MarketID_Currency = 5;
switch ( Name() )
{
case "SBER": Weight = 100; break;
case "vtbr": Weight = 100000; break;
default: Weight = 0; break;
}
if (Weight > 0) Composite_Basket (Basket_Name, Weight);
CategoryAddSymbol(Basket_Name, categoryMarket, MarketID_Currency); |
сумму счетает нормально, а стоит только поставить минус перед коэффициентом второго тикера и итоговый тикер счетается без второго тикера
что здесь изменить чтобы получить тикер спреда |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Мне ща проверять не досуг.
Может дело в этом?
if (Weight > 0)
Попробуй сделать так
if (Weight != 0) |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
nemoy
Зарегистрирован: 05.10.2014
Сообщения: 29
|
000 писал(а): |
Мне ща проверять не досуг.
Может дело в этом?
if (Weight > 0)
Попробуй сделать так
if (Weight != 0) |
мда. и как сам не заметил это грёбаное условие. благодарю |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|