Author Topic: Как научиться делать триггеры  (Read 856338 times)

Tags:
  • All members
  • Posts: 257
  • Karma: +4/-0
Как научиться делать триггеры
« on: Sat, 04 December, 2010, 14:06 »
Здравствуйте Уважаемые!
Не хотел открывать новую тему для моего вопроса -
надеюсь модераторы простят.
Вопросы - Как научится делать триггеры?
Есть ли соответствующая литература?
Сложно ли это занятие?

  • Tim Vetrov
  • Administrator
  • Posts: 3875
  • Karma: +151/-0
  • Gender: Male
*
Re: Как научиться делать триггеры
« Reply #1 on: Sat, 04 December, 2010, 17:44 »
Добрый день.
Думаю вопрос стоит того, чтобы его вынести в отдельную тему.

Нам, как программистам, кажется, что научиться делать триггеры не сложно. Однако это зависит от склада ума и тяге к математике/программированию/логике.
Мы постарались написать файл помощи как можно понятнее, дополнив примерами и объяснениями. К сожалению никакой другой литературы нет, триггеры - это наше изобретение.

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

Так же здесь, на форуме, найдутся те, кто готов Вам помочь.
I'm happy to help Monday - Friday, 08:00-18:00 GMT
Буду раз помочь с понедельника по пятницу, 08:00-18:00 GMT

  • All members
  • Posts: 257
  • Karma: +4/-0
Re: Как научиться делать триггеры
« Reply #2 on: Sun, 05 December, 2010, 11:10 »
Прочитал файл помощи, честно сказать пока ничего не понял. Понимаю, что надо внимательно вникать в суть написанного, но было бы намного проще, если бы профессионалы разложили бы все по полочкам с использованием картинок на примере какого нибудь триггера.

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

Итак, для примера возьму игру HI-LO

1. Нач. депозит - 100$
2. Начальная ставка минимальная - 4$
3. Ставку делаем "ЗА", когда еще не открыто ни одной карты по коэффициенту      1.29 первой карты.

4. Если выиграли (1.13$), ждем следующего розыгрыша, и снова по этому же коэффициенту 1.29 делаем ставку 4$

5.Если проигрыш (-4.00$), в следующем розыгрыше удваиваем ставку до 8$.

6.Если удвоенная ставка выиграла, ( +2.25$), в следующем розыгрыше ставку снижаем до первоначальной - 4$.

7. Если удвоенная ставка проиграла (-8.00$), следующая ставка снова удваивается до 16.00$.

8. Если ставка в 16.00$ выиграла, следующая ставка снижается до 8.00$, если и 8$-ая ставка выиграла, то следующая ставка снижается до первоначальной - 4$.

9. Триггер работает до тех пор, пока не набрано предположим, 10% от депозита.
В нашем случае это 10$ от 100$. Если депозит вырос до 110$, то при следующем вхождении в игру, предположим, через 1 час, то естественно боту надо набрать 11$ - т.е. 10% от 110$.

При тесте я доходил до удвоения ставки до 64$. Другими словами, бот удваивает при проигрыше, пока позволяет депозит.

Вот на этом примере и желательно показать, как делается триггер.



  • All members
  • Posts: 61
  • Karma: +1/-1
Re: Как научиться делать триггеры
« Reply #3 on: Sun, 05 December, 2010, 16:15 »
Привет. Предлагаю свой вариант твоей задачи, вот только через час нужно запускать триггер вручную. В верхней части три переменные можешь менять по своему выбору, вот только повторно запускать (повторяю) нужно вручную.

  • All members
  • Posts: 257
  • Karma: +4/-0
Re: Как научиться делать триггеры
« Reply #4 on: Sun, 05 December, 2010, 16:28 »
Привет. Предлагаю свой вариант твоей задачи, вот только через час нужно запускать триггер вручную. В верхней части три переменные можешь менять по своему выбору, вот только повторно запускать (повторяю) нужно вручную.
что значит запускать вручную?

  • All members
  • Posts: 61
  • Karma: +1/-1
Re: Как научиться делать триггеры
« Reply #5 on: Sun, 05 December, 2010, 16:39 »
Второй раз запускать вручную. Это значит, что при достижении 10% прироста депозита канал останавливается. Чтобы запустить его автоматически через определенное время - я не знаю как сделать.

  • All members
  • Posts: 257
  • Karma: +4/-0
Re: Как научиться делать триггеры
« Reply #6 on: Sun, 05 December, 2010, 16:53 »
понятно. Попробовал Ваш триггер - немного не так сделан - green up не надо делать, ставка должна оставаться без пары. А в том варианте, что Вы сделали пропадает смысл той задумки, что я изложил.

  • All members
  • Posts: 61
  • Karma: +1/-1
Re: Как научиться делать триггеры
« Reply #7 on: Sun, 05 December, 2010, 16:56 »
Там нет ГРИН-АПа. Ставка только back.

  • All members
  • Posts: 257
  • Karma: +4/-0
Re: Как научиться делать триггеры
« Reply #8 on: Sun, 05 December, 2010, 17:02 »
почему тогда при выпадании меньшего коэффициента "Против" триггер делает ставку "Против", тем самым делая ол грин?

  • All members
  • Posts: 61
  • Karma: +1/-1
Re: Как научиться делать триггеры
« Reply #9 on: Sun, 05 December, 2010, 17:05 »
Там нет второй ставки. Может Вы перепутали триггеры?

  • All members
  • Posts: 61
  • Karma: +1/-1
Re: Как научиться делать триггеры
« Reply #10 on: Sun, 05 December, 2010, 17:12 »
Я понял. Это наверное у Вас в настройках программы стоит ГРИН-АП.

  • All members
  • Posts: 257
  • Karma: +4/-0
Re: Как научиться делать триггеры
« Reply #11 on: Sun, 05 December, 2010, 17:13 »
1 карта, удвоение - вот этот триггер, что вы выложили.

  • All members
  • Posts: 257
  • Karma: +4/-0
Re: Как научиться делать триггеры
« Reply #12 on: Sun, 05 December, 2010, 17:17 »
нет, я просмотрел сейчас настройки - нет галочек на грин-ап

  • All members
  • Posts: 61
  • Karma: +1/-1
Re: Как научиться делать триггеры
« Reply #13 on: Sun, 05 December, 2010, 18:40 »
Тогда я ничего не понимаю. Посмотри повнимательней: настройки программы, в разделе автотрейдинг, подраздел автоуравнивание и автодатчинг не должно быть галочек. И в разделе торговля не распределять убыток. Проверь.

  • Tim Vetrov
  • Administrator
  • Posts: 3875
  • Karma: +151/-0
  • Gender: Male
*
Re: Как научиться делать триггеры
« Reply #14 on: Sun, 05 December, 2010, 19:22 »
Предполагается, что здесь должно быть пошаговое объяснение процесса создания триггера, а не готовое решение, правильно?

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

Переходим на канал HiLo Turbo и проверяем ставку по умолчанию, тестовый режим, включен ли автотрейдинг:

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

Нажимаем кнопку Триггеры, затем "Новый файл".

Начнем с настроек - так проще будет потом корректировать параметры триггера:
Создаем константы (кнопка Добавить в строке констант):
Имя: Mult, значение: 2 - коэффициент увеличения/уменьшения размера ставки
Имя: Perc, значение: 10 - процент банка, при котором приостановить торговлю
Имя: Pause, значение: 60 - на сколько приостановить торговлю


Самое время сохранить файл триггеров - кнопка Сохранить как, указываем расположение и имя.

Все триггеры должны быть заключены в блоки. Создаем блок - кнопка Доб. блок. В появившейся строке блока кнопкой Доб. триггер создаем первый пустой триггер:


Анализируем задание:
Quote
Ставку делаем "ЗА", когда еще не открыто ни одной карты по коэффициенту  1.29 первой карты.
Выбираем
Действие: back (ставка ЗА)
Размер ставки: default back (размер ставки по умолчанию, мы его будем менять другим триггером)
Коэф.: current best (текущий коэффициент)
Канал: All HiLo, Main Bets
Исход: Card 1 or further (первая карта)
Повторить: once per game (один раз за игру)
Exactly раунд 1 (не открыто ни одной карты)
Условия добавлять пока не будем.


Далее требуется изменить размер ставки по умолчанию в зависимости от исхода предыдущей игры. Создаем новый триггер в этом блоке.
Действие: set default back amount
Канал: All HiLo, Main Bets
Исход: Card 1 or further (не важно, главное - не должно содержать "matched")
Повторить: once per game
Exactly раунд 1
Значение: Анализируем задачу: нужно увеличивать размер ставки в Mult раз, если предыдущая игра закончилась убытком, уменьшать в Mult раз, если закончилась прибылью и размер получившийся ставки больше допустимого минимума. Выражение такое:
IF(last_pl>0, IF(back_size/Mult >= min_stake, back_size/Mult, back_size), back_size*Mult )
Что дословно означает: если предыдущий результат игры положительный, то (если размер новой ставки больше или равен минимальной, то разделить текущий размер на Mult, иначе размер не менять), иначе увеличить ставку в Mult раз).
Нам не нужно изменять ставку, если в предыдущей игре результат нулевой. Значит добавляем в триггер условие (если условия выполняются - редактировать, Добавить условие):
Channel's Previous P/L is not equal to 0
Результат предыдущей игры не нулевой.

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


Добавим в триггер ставки условия для приостановки торговли на Pause минут, если достигнута прибыль в Perc % от банка. Т.к. размер банка в каждой такой сессии будет разным, нам нужно где-то сохранить его в начале каждой сессии. Для этого создадим еще одну константу (в данном случае переменную) Bank и установим ее значение в ноль. Так же нам понадобится "переключатель" - переменная IsPaused, которая будет принимать значение 1 или 0 и означать ждем мы в данный момент или торгуем. И переменная LastBet, где мы будем хранить время последней ставки.

Затем добавим три триггера:
Действие: set user variable
Имя: Bank
Значение: IF(test_mode=1,test_funds,funds) - выражение означает использовать значение реального банка, если тестовый режим выключен.
Канал: All HiLo, Main Bets
Исход: Card 1 or further
Повторить: once per game
Exactly раунд 1
Условия:
Trigger Expression IsPaused is equal to 1
AND Trigger Expression now_time is greater than LastBet+Pause*0.000694


Т.е. текущее состояние работы - ожидание и текущее время больше, чем время с последней ставки плюс время ожидания (0.000694 - количество суток в минуте)

Действие: set user variable
Имя: IsPaused
Значение: (IsPaused+1)%2 - сменить значение IsPaused с 1 на 0 и наоборот
Канал: All HiLo, Main Bets
Исход: Card 1 or further
Повторить: once per game
Exactly раунд 1
Условия:
[НАЧАЛО БЛОКА]
Trigger Expression IsPaused is equal to 1
AND Trigger Expression now_time is greater than LastBet+Pause*0.000694

[КОНЕЦ БЛОКА]
[OR]
[НАЧАЛО БЛОКА]
Trigger Expression IsPaused is equal to 0
AND Trigger Expression IF(test_mode=1,test_funds,funds) is greater than Bank*(1+Perc)

[КОНЕЦ БЛОКА]

Пояснения. Выполнить если текущее состояние - ожидание и с момента последней ставки прошло больше, чем пауза; или текущее состояние - торговля и достигнут лимит прибыли.

И третий триггер:
Действие: set user variable
Имя: LastBet
Значение: now_time - текущее время
Канал: All HiLo, Main Bets
Исход: Card 1 or further
Повторить: once per game
Exactly раунд 1
Условия:
Channel's Previous PL is not equal to 0
Запомнить время раунда, в котором была сделана последняя ставка.

Теперь займемся порядком триггеров. По логике первым должен идти триггер, устанавливающий значение переменной LastBet, затем Bank, затем IsPaused, затем устанавливающий значение ставки по умолчанию и наконец триггер ставки:


Сохраняем файл триггеров.

Осталось применить результаты наших трудов для условий триггера ставки:
Trigger Expression IsPaused is equal to 0
Сохраняем файл триггеров и закрываем окно.

Как оказалось основная трудность в паузе. Реализация процесса ставок заняла 2 триггера.

Нужно ли объяснять как тестировать триггеры, анализировать ход выполнения и искать ошибки?
I'm happy to help Monday - Friday, 08:00-18:00 GMT
Буду раз помочь с понедельника по пятницу, 08:00-18:00 GMT