Несколько вопросов по торговому алгоритму.

Автор: rtstrader

Несколько вопросов по торговому алгоритму. - Tue Jan 12 2010 01:41 PM

Я запустил простой торговый алгоритм в работу. Заявки выполняет как надо, стопы меняет и т.д. Вроде бы все хорошо.

Но появляются различные нюансы и в связи с этим есть вопросы.
Во-первых, как можно влиять на параметры во вкладке "Управление торговлей скриптами"? Например, если я закрою сгенерированную алгоритмом позицию вручную, то параметры "позиции" в указанной вкладке остануются. И скрипт будет генерировать сигналы, опираясь на устаревшие данные. Какие классы посмотреть для этого? Как правильно закрывать созданные скриптом позиции вручную?

Второй вопрос, основанный на вашем тестовом примере из хелпа.
Допустим, что я запускаю этот торговый скрипт через час после начала торгов. Как он себя должен вести, если например: торги начинаются в 10.30, сигнал по стратегии был в 11 утра и на момент запуска по идее торговой стратегии я уже должен быть в позиции. Как запущенный скрипт должен себя повести: войти при включении по рынку или дождаться следующего сигнала? Как можно регулировать эти моменты? Какими классами? Опять же ваш тестовый скрипт постоянно двигает стоп заявки по уровням. И вот, я опоздал его включением. Он сразу войдет в позицию или начнет просто ставить стоп-заявки по границам канала как будто никаких позиций и не должно быть? Это очень важный момент, потому что могут быть отклонения от расчетной стратегии, а это не гуд smile

И, третье. Есть ли какие-нибудь рекомендации по обеспечению корректного поведения робота в случае разрывов связи, сбоев брокера? На какие классы обратить внимание?

Спасибо smile
Автор: Nektodron

Re: Несколько вопросов по торговому алгоритму. - Tue Jan 12 2010 02:13 PM

Смотрите окно "менеджер команд". Любую открытую позицию можно закрыть оттуда, через контекстное меню. Так же можно принудительно войти по сигналу, который представлен условной заявкой.

Если вы закрыли позиции вручную, то чтобы скрипт не пытался вести несуществующую позицию ему нужно сменить торговое имя в "управлении портфелем". Либо при закрытии вручную необходимо комментарий к заявке прописать аналогично тому, который создает TSLab.

Если вы запустили скрипт, а он сформировал торговый сигнал, который должен был исполниться раньше, то автоматического исполнения не произойдет, но сигнал будет присутствовать в "менеджере команд" и его можно исполнить вручную.

Что касается алгоритма HiLo, если вы опоздали, никого автоматического входа не будет, условные заявки будут выставлены в соответствии с последними данными.

В случае обрыва связи TSLab восстановит ее самостоятельно, будет закачана история и скрипт продолжит работу (кроме тиковых и секундных интервалов, по которым восстановление истории невозможно). Если во время обрыва необходимо было выйти из позиции, то программа будет вести себя аналогично описанному выше.

Если у вас есть какие-либо идеи касательно того, как должна вести себя программа в таких аварийных ситуациях - предлагайте, обсудим.
В любом случае, любой робот требует контроля, особенно, если вы не можете обеспечить стабильное соединение с сервером.
Автор: rtstrader

Re: Несколько вопросов по торговому алгоритму. - Tue Jan 12 2010 03:35 PM

Благодарю за оперативный ответ.
У меня пока нет каких-то конкретных идей, т.к. я запустил скрипт на тестирование только два дня назад. Проверяю стабильность его работы.

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

Я хочу торговать на фортс, а тестируюсь пока на демо-сервере на акциях газпрома. Мне трудно отслеживать адекватность сигналов smile Наверное, скоро просто перейду на реальный счет и буду работать одним контрактом какое-то время. Тогда будет конечно больше мыслей.
Автор: Nektodron

Re: Несколько вопросов по торговому алгоритму. - Tue Jan 12 2010 04:01 PM

Вход по рынку мог быть, если расчет показывал, что должен был быть вход на последнем баре.
Автор: rtstrader

Re: Несколько вопросов по торговому алгоритму. - Tue Jan 12 2010 04:10 PM

Понятно. Спасибо.
Автор: Nektodron

Re: Несколько вопросов по торговому алгоритму. - Tue Jan 12 2010 04:42 PM

Хотя сейчас подумал, что возможно это некорректное поведение для условных заявок.
Автор: profit

Re: Несколько вопросов по торговому алгоритму. - Wed Jan 13 2010 01:19 PM

Уважаемые подскажите как в редакторе скрипта MACD сделать так что бы закрытие позиции было не по пересечению ск.средних а по профиту,допустим 0,2% ,а стоп лось сробатывал как раз по пересечению ск.средних.
Автор: rtstrader

Re: Несколько вопросов по торговому алгоритму. - Wed Jan 13 2010 11:13 PM

Значит заставим ее себя корректно вести smile
Сегодня скрипт работал от начала до конца, разрывы связи были и все было окей.

Посмотрим, слишком мало времени прошло )
Автор: rtstrader

Re: Несколько вопросов по торговому алгоритму. - Thu Jan 14 2010 10:45 AM

Скажите, а что это может быть за ошибка?

При выставлении заявки у меня появилось сообщение "неверный формат запроса" (см. скрин)

А через минуту заявки нормально выставились.

Я так же приложил к посту кусочек лога.
Автор: Nektodron

Re: Несколько вопросов по торговому алгоритму. - Thu Jan 14 2010 10:51 AM

Такое сообщение иногда выдает сервер Транзак. Обычно оно бывает, когда заявки пытаются выставить до или после торгов. Страшного в этом ничего нет, но будем дальше с ними разбираться.
Автор: rtstrader

Re: Несколько вопросов по торговому алгоритму. - Thu Jan 14 2010 11:10 AM

Ясно.
Это странно, потому что торги-то уже шли )
Автор: Nektodron

Re: Несколько вопросов по торговому алгоритму. - Thu Jan 14 2010 11:17 AM

Ну и говорю, что обычно. Я сам такие сообщения иногда вижу. С нашей стороны формат отсылаемых им запросов всегда одинаков...
Автор: rtstrader

Re: Несколько вопросов по торговому алгоритму. - Thu Jan 14 2010 01:18 PM

Кстати, вот еще один глюк вылез. Скрипт торгует 90% от портфеля газпромом. Зашел в лонг на 1402 акции, а стоп-заявку почему поставил на 1048 акций smile

Она сработала, затем связь с сервером разорвалась, он снова соединился и допродал остаток ))

В принципе, я собираюсь фиксированным числом контрактов торговать, так что меня это не очень беспокоит. Просто для информации.
Автор: Nektodron

Re: Несколько вопросов по торговому алгоритму. - Sat Jan 16 2010 10:08 PM

Пришлите, пожалуйста, лог за эти дни, когда скрипт торговал.
Автор: rtstrader

Re: Несколько вопросов по торговому алгоритму. - Sun Jan 17 2010 02:22 PM

Хорошо.
В понедельник все приложу.

Пока скрипт ведет себя не так как нужно только на открытии торгов. Как правило, сначала он получает от сервера транзака ответы о неверном формате запроса, затем, когда ему удается, входит в рынок не стоп заявкой, а по рынку.

Еще меня беспокоит, что у финама с фортса данные идут медленно, медленнее, чем у АйТи инвест, например. frown И как я понял, это особенность транзака, которую так просто и не устранить. Если на минутках торговать, как я собираюсь, наверное проскальзывание будет сильное (

И как пожелание по улучшению хелпа. Он у Вас очень лаконичный. Не плохо было бы снабдить описание методов и классов примерами, как это сделано в Велслаб.

Code:
IsLastBarOfDay
bool IsLastBarOfDay(int bar)

Returns true if this is the last bar of a particular day for intraday data.  If the Bars object contains non-intraday data, IsLastBarOfDay always returns false.  If bar equals the last bar of data in the chart, IsLastBarOfDay finds the previous bar that was the last bar of the day, and compares the time values to determine if the bar is in fact the last bar of the current day.


--------------------------------------------------------------------------------

Example
protected override void Execute(){
    // Daytrading SMA crossover script (backtesting only) 
    // that closes all positions at the end of the day.

    DataSeries hMAFast = SMA.Series( Close, 10 );
    DataSeries hMASlow = SMA.Series( Close, 30 );
    PlotSeries( PricePane, hMAFast, Color.Green, WealthLab.LineStyle.Solid, 1 );
    PlotSeries( PricePane, hMASlow, Color.Red, WealthLab.LineStyle.Solid, 1 );
    
    for(int bar = hMASlow.FirstValidValue; bar < Bars.Count; bar++)
    {
        if (!IsLastPositionActive)
        {
            if ( Bars.IsLastBarOfDay( bar ) == false )
                if ( CrossOver( bar, hMAFast, hMASlow ) )
                BuyAtMarket( bar+1, "XOver" );
        }
        else
        {
            Position p = LastPosition;
            if ( Bars.IsLastBarOfDay( bar ) == true )
                SellAtClose( bar, p, "EOD" );
            else
            {
                // normal intraday exit logic
                if ( CrossUnder( bar, hMAFast, hMASlow ) )
                    SellAtMarket( bar+1, p, "XUnder" );
                }
        }
    }
}


Автор: rtstrader

Re: Несколько вопросов по торговому алгоритму. - Mon Jan 18 2010 10:25 AM

Выкладываю логи.
Автор: Nektodron

Re: Несколько вопросов по торговому алгоритму. - Tue Jan 19 2010 11:04 AM

Да, действительно, из-за того, что заявка в 1402 лота заполнилась не сразу, а партиями. Сначала в 6 сделок на 1048 лотов, а через минуту докупились остальные 354.
Стоп был выставлен после первой части в 1048 и он велся, пока не исполнился. После чего система сразу же продала по рынку 354 лота и свела баланс в 0.

Да, это не есть корректное поведение и будет исправлено.

PS. Как я понял у вас стоят нулевые проскальзывания, если указать проскальзывание больше нуля, то такой ситуации скорее всего бы не произошло.
Автор: rtstrader

Re: Несколько вопросов по торговому алгоритму. - Tue Jan 19 2010 12:02 PM

Да, стоят нулевые проскальзывания. Буду учитывать эту особенность.

У меня скрипт торгует на минутном графике, и исполняется раз в минуту. А можно сделать так, чтобы он чаще исполнялся?

Например, для того, чтобы после входа в сделку стоп выставлялся быстрее чем через минуту?
Автор: Frend

Re: Несколько вопросов по торговому алгоритму. - Sat Feb 13 2010 06:59 AM

Поддерживаю вопрос
Автор: Nektodron

Re: Несколько вопросов по торговому алгоритму. - Sat Feb 13 2010 11:39 AM

Я уже объяснял это.
Сделать можно легко. Достаточно включить режим пересчета "сделка", вместо "интервал".
Но что мы получаем в итоге. Скрипт будет рассчитывать индикаторы на незакрытых барах. Незакрытый бар после каждой сделки может случайным образом изменить минимум, максимум и закрытие. Т.е. может произойти пересечение сглаженных кривых и т.п. Иными словами будут появляться "неучтенные" сигналы.
На самом деле, если у вас такие короткие сделки (1-3 бара), что важно выставить стоп сразу после входа, то нужно уменьшать базовый интервал с минут в 5-20сек.