Алгоритм: один сигнал -- одна сделка
Страница 1 из 3 1 2 3 ПоследняяПоследняя
Показано с 1 по 10 из 26

Тема: Алгоритм: один сигнал -- одна сделка

  1. #1
    Теоретик Аватар для PAZITIV
    Регистрация
    20.12.2011
    Адрес
    47°57′16.04″ с. ш. 33°25′22.28″ в. д
    Сообщений
    1,472
    Promo (¢)
    -10
    Благодарности
    Получено: 52
    Отправлено: 77

    Алгоритм: один сигнал -- одна сделка

    Доброго времени суток, кодеры. Уверен, что вы сталкивались с такуой ситуацией, что советник может входить на одном сигнале по нескольку раз. Такая ситуация наблюдается при фиксированном Тейкпрофите или СтопЛоссе.
    Уже который день ломаю голову над тем , как избежать этой досадной недоработки. Приходили в голову идеи проверять цены закрытия предыдущих свечей по отношению к индикаторам , или предыдущие показания этих самых индикаторов. В общем, ничего путнего так и не придумал. Вот только сейчас пришла в голову идею такого плана: может вычислять на какой свече (в котором часу) произошла сделка и не входить снова до получения нового сигнала. Т.е. сравнивать время сделки со временем старого сигнала и со временем нового сигнала.
    Если кто то поделится своими наработками в области алгоритмизации или уже готовой функцией подобной проверки -- буду безгранично благодарен.

    Вы не можете благодарить!

  2. #2
    Banned
    Регистрация
    22.10.2012
    Адрес
    Питер
    Сообщений
    603
    Promo (¢)
    0
    Благодарности
    Получено: 246
    Отправлено: 48
    Цитата Сообщение от PAZITIV Посмотреть сообщение
    Доброго времени суток, кодеры. Уверен, что вы сталкивались с такуой ситуацией, что советник может входить на одном сигнале по нескольку раз. Такая ситуация наблюдается при фиксированном Тейкпрофите или СтопЛоссе.
    Уже который день ломаю голову над тем , как избежать этой досадной недоработки. Приходили в голову идеи проверять цены закрытия предыдущих свечей по отношению к индикаторам , или предыдущие показания этих самых индикаторов. В общем, ничего путнего так и не придумал. Вот только сейчас пришла в голову идею такого плана: может вычислять на какой свече (в котором часу) произошла сделка и не входить снова до получения нового сигнала. Т.е. сравнивать время сделки со временем старого сигнала и со временем нового сигнала.
    Если кто то поделится своими наработками в области алгоритмизации или уже готовой функцией подобной проверки -- буду безгранично благодарен.
    Успехов в разработках. Вообще-то свечи придуманы японским крестьянином, который торговал около 200 лет назад. ))

    Вы не можете благодарить!

  3. #3
    Денис Кириченко
    Guest
    Цитата Сообщение от PAZITIV Посмотреть сообщение
    Доброго времени суток, кодеры. Уверен, что вы сталкивались с такой ситуацией, что советник может входить на одном сигнале по нескольку раз. Такая ситуация наблюдается при фиксированном Тейкпрофите или СтопЛоссе...
    Не совсем понятна задача. Или нужно смотреть код или чётко видеть алгоритм...

    Вы не можете благодарить!

  4. #4
    Новичок
    Регистрация
    23.08.2012
    Сообщений
    199
    Promo (¢)
    685
    Благодарности
    Получено: 61
    Отправлено: 49
    Была подобная ситуация. Все осложнялось тем, что у меня в сове было использовано несколько алгоритмов открытия ордеров. И вопрос стоял, чтоб фильтровать ордера по каждой стратегии отдельно. Для этого использовал магик ордера. Правда это накладывает ограничения на использование других советников.

    Вы не можете благодарить!

  5. #5
    Banned
    Регистрация
    22.10.2012
    Адрес
    Питер
    Сообщений
    603
    Promo (¢)
    0
    Благодарности
    Получено: 246
    Отправлено: 48
    Цитата Сообщение от artamir Посмотреть сообщение
    Была подобная ситуация. Все осложнялось тем, что у меня в сове было использовано несколько алгоритмов открытия ордеров. И вопрос стоял, чтоб фильтровать ордера по каждой стратегии отдельно. Для этого использовал магик ордера. Правда это накладывает ограничения на использование других советников.
    Много ордеров - это не старашно. Мейжки ставить лучше по возрастающей

    Вы не можете благодарить!

  6. #6
    Теоретик Аватар для PAZITIV
    Регистрация
    20.12.2011
    Адрес
    47°57′16.04″ с. ш. 33°25′22.28″ в. д
    Сообщений
    1,472
    Promo (¢)
    -10
    Благодарности
    Получено: 52
    Отправлено: 77
    Цитата Сообщение от Алексей Волчанский Посмотреть сообщение
    Успехов в разработках. Вообще-то свечи придуманы японским крестьянином, который торговал около 200 лет назад. ))
    Я сейчас не говорю об анализе свечей при входах. Я говорю об анализе цены закрытия бара.

    Цитата Сообщение от Денис Кириченко Посмотреть сообщение
    Не совсем понятна задача. Или нужно смотреть код или чётко видеть алгоритм...
    В качестве примера картинка


    Голубой овал -- участок, где свеча закрепляется выше МА. Входим на новой свече (отмечено серовй линией). С этим понятно. Скажем, открываем сделку с очень близкм профитом, пипсов 10-15 (уровень тейка отмечен зелёной линией). На этом же баре, где открылись , сделка закрывается по профиту. Но так как бар на котором вошли ещё не закрыт, а ордеров уже нет (так как получен профит), то снова вступает в силу условие, на котором был осуществлён предыдущий вход:
    if ( Total == 0 )
    {
    if ( LastClose > MA )
    {
    TradeBuy();
    }
    }
    Такми образом, советник будет входить до тех пор, пока бар входа не закроется. Т.е. очень высока вероятность купить хай или продать лоу. Тем самым одним лосем зарубить серию из выигрышных входом и получить в итоге минус.
    Вот как "научить" советник входить на одном баре один раз и ждать нового сигнала? Приходила мысль сравнивать время открытия бара и время открытия последней сделки. Но вот как это толково сделать ещё не додумал.

    Вы не можете благодарить!

  7. #7
    Новичок
    Регистрация
    23.08.2012
    Сообщений
    199
    Promo (¢)
    685
    Благодарности
    Получено: 61
    Отправлено: 49
    Цитата Сообщение от Алексей Волчанский Посмотреть сообщение
    Много ордеров - это не старашно. Мейжки ставить лучше по возрастающей
    я ставил по дате реализации алгоритма.
    Если 30.01.2013 реализовал бы алгоритм открытия ордеров по пересечению МА, то соответственно присвоил бы ордерам Бай магик 2013013000 а ордерам Селл 2013013001, где последние два разряда отвечают за тип сигнала.

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

    Вы не можете благодарить!

  8. #8
    Теоретик Аватар для PAZITIV
    Регистрация
    20.12.2011
    Адрес
    47°57′16.04″ с. ш. 33°25′22.28″ в. д
    Сообщений
    1,472
    Promo (¢)
    -10
    Благодарности
    Получено: 52
    Отправлено: 77
    Цитата Сообщение от artamir Посмотреть сообщение
    Вообще интересная задача - хранение для каждого ордера время появления сигнала. Например: алгоритм расчитан на работу отложенными ордерами. В данном случае время возникновения сигнала можно отследить по времени открытия ордера (если в алгоритме не предусмотрена дальнейшая модификация цены открытия ордера).
    Далее, при срабатывании ордера (когда ордер становится рыночным), время открытия меняется.
    Давайте решать задачи по мере их поступления. Мы сейчас говорим о рыночном исполнении ордеров. Думаю, нужно сделать так: поступает сигнал, открываем сделку. Ждём ещё завершения по ТП или СЛ. Далее , находим время поступления сигнала и сравниваем его со временем открытия сделки. Если разница больше значения, которое задали в настройках, то больше в сделки не входим.

    Вы не можете благодарить!

  9. #9
    Новичок
    Регистрация
    23.08.2012
    Сообщений
    199
    Promo (¢)
    685
    Благодарности
    Получено: 61
    Отправлено: 49
    Цитата Сообщение от PAZITIV Посмотреть сообщение
    Давайте решать задачи по мере их поступления. Мы сейчас говорим о рыночном исполнении ордеров. Думаю, нужно сделать так: поступает сигнал, открываем сделку. Ждём ещё завершения по ТП или СЛ. Далее , находим время поступления сигнала и сравниваем его со временем открытия сделки. Если разница больше значения, которое задали в настройках, то больше в сделки не входим.
    1. Ищем в истории по данной валютной паре последний закрытый ордер с магиком = типу сигнала.
    2. Если время открытия ордера >= времени открытия текущего бара, тогда ордер по этому сигналу выставлялся.
    Иначе выставляем ордер.

    Мне видится как-то так алгоритм.

    Вы не можете благодарить!
    Последний раз редактировалось artamir; 31.01.2013 в 17:46. Причина: изменение алгоритма

  10. #10
    Денис Кириченко
    Guest
    Цитата Сообщение от PAZITIV Посмотреть сообщение
    ... В качестве примера картинка...

    Голубой овал -- участок, где свеча закрепляется выше МА. Входим на новой свече (отмечено серовй линией). С этим понятно. Скажем, открываем сделку с очень близкм профитом, пипсов 10-15 (уровень тейка отмечен зелёной линией). На этом же баре, где открылись , сделка закрывается по профиту. Но так как бар на котором вошли ещё не закрыт, а ордеров уже нет (так как получен профит), то снова вступает в силу условие, на котором был осуществлён предыдущий вход:
    PHP код:
    if ( Total == 
       if ( 
    LastClose MA )
         
    TradeBuy(); 
    Такми образом, советник будет входить до тех пор, пока бар входа не закроется. Т.е. очень высока вероятность купить хай или продать лоу. Тем самым одним лосем зарубить серию из выигрышных входом и получить в итоге минус.
    Вот как "научить" советник входить на одном баре один раз и ждать нового сигнала? Приходила мысль сравнивать время открытия бара и время открытия последней сделки. Но вот как это толково сделать ещё не додумал.
    Можно ввести ограничение на кол-во открываемых или открытых ордеров на текущей свече (например int AllowedTrades=3). Допустим как-то так:
    PHP код:
    if ( Total == 0  && TotalTrades<AllowedTrades
       if ( 
    LastClose MA )
        {      
         
    TradeBuy();
         
    TotalTrades++;
        } 
    Свеча новая открылась - сбросили в ноль переменную TotalTrades. А пока не откроется, условие будет работать...

    А вообще сигнал типа LastClose > MA - это g*mno style в автотрейдинге... уж лучше ловить на мелких тайм-фреймах сигналы для повторных входов...
    Т.е. сработал Ваш LastClose > MA - поза открылась и закрылась. А сигнал работает. Тогда переходим на мелкий тайм-фрейм и ловим там сигналы для повторных входов...используем таким образом фрактальность рынка

    Вы не можете благодарить!
    Последний раз редактировалось Денис Кириченко; 31.01.2013 в 18:24.

Страница 1 из 3 1 2 3 ПоследняяПоследняя

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •