Автор Тема: Разработка советника по тренду.  (Прочитано 1668 раз)

0 Пользователей и 1 Гость просматривают эту тему.

14 Февраль 2016, 13:52:59
Прочитано 1668 раз

dimarik

  • Новичок

  • Оффлайн
  • *

  • 7
  • Репутация:
    1
Предисловие.
Пару лет назад запустив несколько разных роботов, был изумлен их работай, но им чего то не хватало, для того чтобы не завершать итог сливом.
Пытался изучить основы, ноу меня дико хромает логика, забил. Сейчас запустив банальный шаблон с роботом который открывает сделки по сигналам индикатора наконец понял, принцип работы и мне захотелось самому написать с нуля.
Весь код состоит из готовых блоков функции, типа открытие, закрытие, трал. Советник по сути есть, осталось допилить.
Работает на нескольких парах одновременно, открывается в разные стороны
 
Как я понял главное что нехватает в советнике это алгоритм. Значит самое главное это разработать многофункциональный алгоритм входа и выхода со сделок.

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

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

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

Ситуация 1: Ордера должны открываться по направлению основного тренда на H1

Ситуация 2: Когда открыт ордер, если следующая свеча того же цвета, то продолжает работать иначе закрываем. А если там уже стоит ТР, то переоткрываем ордер в том же направлении ( 2.а и /или открываемся увеличенным лотом или  открываем  несколько ордеров с разным ТР которые закрываются лесенкой. )т.е доливка по тренду получается.

Ситуация  2.1. При закрытии ордера по ТР или бу, открывать новый ордер в том же направлении, и следующая свеча того же цвета,  при этом считаем свечи от последнего закрытого ордера по ТР считаем его первой свечой, но не более 5 свечей подряд, открываем  на каждой новой свече новый ордер, если он того же цвета ( или увеличенным лотом)
( 2.в ] Т.е я считаю что функция увеличения лота можно использовать на следующей свече после первой, и возможность отключать ее в настройках)

Ситуация 3: В восходящем или нисходящем движении есть 3-5 свечей подряд одного цвета, после идет ряд мелких типа додж или пин баров,  мы сравниваем размер последней самой большой свечи с текущей и открываем ордер в ее сторону при продолжении движения. Т.е  если скажем было резкое нисходящие движение, потом приторговка (коридоро из мелких свечек), то при появление большой нисходящей свече открываемся в данном случае на юг в селл, а дальше по пункту 2.

Ситуация 4. Цена достигла максимума/ минимума (пика) при восходящем движение бар был большой бычий, следуюший бар уже большой медвежий, вот нужно условия открытие от максимума предыдущей свечи в стороны движения цены т.е в селл в данном случае, при этом если размер свечи больше чем n-кол-во пунктов. открываем дополнительный ордер  и открываем новый ордер на каждой новой свечи того же цвета.

Ситуация 5. Часто  бывает появляется сигнал бай/сел слишком близко при подходе цены к максимуму/мин свечи и ордер не успевает выйти в плюс и остается болтаться, я бы при таком сигнале переворачивал ордер т.е открывал в противоположном направлении.  Если ордер уже открылся, то локировал бы его пока не закроется выше/ниже цены открытия.

Ситуация 6. Чаще всего просадка возникает, когда идет серия сигналов  в продажу на мелких медвежих свечах т.е на минимуме и в дальнейшем тренд убегает в покупку на север.
Как тут составить условие чтоб позиции не открывались вблизи мин/мах на свечах, барах типа додж, пин бар.

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

Условие если размер свечи превышает n-e кол-во выставляет отложенный BuyStop/SellStop

Хочу в стандартный трал добавить шаг и вариант установки его по максимумам и минимумам экстремумов или по значениям сетки фибо т.е динамический трал, хотя если условия открытия 2 и 2.1 будут нормально отрабатываться то это незачем, но я хочу добиться чтобы сделка брала как можно большие движение при этом фиксированный большой размер ТР не гарантирует, что цена туда дойдет.

Написать функцию закрытие профитных ордеров которое осуществлялось при смене  тенденции на старшем таймфрейме т.е если направление сменилось закрывать все прибыльные.

Написать функцию в которой вместо стопа, когда стоп не ставится на символе или на позиции стопа выставлялся отложенный BuyLimit/SellLimit ордер.

Написать алгоритмы локирования позиции, пока я их плохо представляю
-  условие если ордер не закрылся, то ... но у каждого символа свое среднее кол-во пунктов, возникает по каким критериям локировать

Написать условие входа в позицию по алгоритму
Покупка: предыдущий бар медвежий (close < open) и цена Ask касается максимума (high) предыдущего бара.
         Продажа: предыдущий бар бычий (close > open) и цена Bid касается минимума (low) предыдущего бара.
    Закрытие: по стоплоссу или тейкпрофиту.
    Ограничение: на одном баре может быть совершена только одна сделка. - за это отвечает функция поиска нового бара

Нужно разработать функцию,  при условиии :
 не открываем новые ордера по каждому символу отдельно если,
- кол-во ордеров по символу больше чем n, отключение/включение
- просадка по символу составляет n, тут алгоритм локирования надо прорабатывать
Не открываем новые ордера когда
- время 23.30 по времени брокера  и до 01.00
- три часа до окончания торговли в пятницу по времени брокера

Вот как то так пока, сильно не пинайте я пока только учусь ;)

 Увеличение лота планирую только при ситуации описанной в пункте 2. и 2.1  поэтому нужен выбор включать или нет.


 
« Последнее редактирование: 14 Февраль 2016, 15:42:08 от dimarik »

15 Февраль 2016, 11:12:29
Ответ #1

Trading-Go

  • Администратор
  • Ветеран

  • Оффлайн
  • *****

  • 2 011
  • Репутация:
    493
  • Пол
    Мужской

    Мужской
Предисловие.
Пару лет назад запустив несколько разных роботов, был изумлен их работай, но им чего то не хватало, для того чтобы не завершать итог сливом.
Пытался изучить основы, ноу меня дико хромает логика, забил. Сейчас запустив банальный шаблон с роботом который открывает сделки по сигналам индикатора наконец понял,
Ваше ТЗ это образ, практичеси без кнокретики ...
Ситуация 1: Ордера должны открываться по направлению основного тренда на H1
Как мы определяем тренд ????
Ситуация 2: Когда открыт ордер, если следующая свеча того же цвета, то продолжает работать иначе закрываем. А если там уже стоит ТР, то переоткрываем ордер в том же направлении ( 2.а и /или открываемся увеличенным лотом или  открываем  несколько ордеров с разным ТР которые закрываются лесенкой. )т.е доливка по тренду получается.
Если мы поставим ТП значит он там будет стоять, если нет то нет..  Задания и алгоритм нужно придумывать более детально..
Ситуация 3: В восходящем или нисходящем движении есть 3-5 свечей подряд одного цвета, после идет ряд мелких типа додж или пин баров,  мы сравниваем размер последней самой большой свечи с текущей и открываем ордер в ее сторону при продолжении движения. Т.е  если скажем было резкое нисходящие движение, потом приторговка (коридоро из мелких свечек), то при появление большой нисходящей свече открываемся в данном случае на юг в селл, а дальше по пункту 2.
Большой это какой ? 20,30,60, пунктов ??? а если самая большая свеча это текущая то с чем её сравнивать ?

Ваше текущее ТЗ большое так как в нем много условий, но нет никакой четкой конкретики..
К сожаление в программировании нет команд "большой, болтаться, приторговка, на юг в селл " и др ...

Что бы Вам понять все Ваши ошибки начните писать советника...



ВАЖНО НОВОСТЬ О ПЕРЕЕЗДЕ ФОРУМА
Своей помощью я стараюсь не давать готовое, я стараюсь натолкнуть Вас на понимание и на правильные мысли, что бы Вы сами решили свою задачу и получили знания... Как то так...

15 Февраль 2016, 23:12:42
Ответ #2

dimarik

  • Новичок

  • Оффлайн
  • *

  • 7
  • Репутация:
    1
Цитировать
К сожаление в программировании нет команд "большой, болтаться, приторговка, на юг в селл " и др ...
это на человеческом языке для того, чтобы вы могли  понять идею, а как  написать в программе выражение" нисходящие движение на юг в селл" это уже задача программиста. Иногда скрины помогают, я нарисию.
Цитировать
Большой это какой ? 20,30,60, пунктов ??? а если самая большая свеча это текущая то с чем её сравнивать ?
Жесткая привязка к определенному размеру может привезти к тому, что достаточно на пункт меньше и сделка не откроется,хотя это в другом условие, но это я так рассуждаю
Вы правы нужно детальнее доработать, я напишу.

У меня вопрос возник - а как узнать  работает ли определенный участок функции или так для красоты написан. ?, т.е
Обязательно ли должен блок инициализации данной функции ?

Я уже начал писать код чуть позднее выложу.
« Последнее редактирование: 15 Февраль 2016, 23:35:42 от dimarik »

18 Февраль 2016, 12:32:05
Ответ #3

Trading-Go

  • Администратор
  • Ветеран

  • Оффлайн
  • *****

  • 2 011
  • Репутация:
    493
  • Пол
    Мужской

    Мужской
это на человеческом языке для того, чтобы вы могли  понять идею, а как  написать в программе выражение" нисходящие движение на юг в селл" это уже задача программиста. Иногда скрины помогают, я нарисию.
1 - Это не задача программиста, это Ваша задача, никто за Вас ничего не будет додумывать и придумывать, программист может заложить в код строго записанную, озвученную задачу, но такие записи типа "Примерно, как то так, в районе" программист не будет писать.

Цитировать
Большой это какой ? 20,30,60, пунктов ??? а если самая большая свеча это текущая то с чем её сравнивать ?
Жесткая привязка к определенному размеру может привезти к тому, что достаточно на пункт меньше и сделка не откроется,хотя это в другом условие, но это я так рассуждаю
Вы правы нужно детальнее доработать, я напишу.

Еще раз повторюсь, Компьютер понимает только цифры, и условия больше меньше или равно  <> == ||   он не понимает прилагательных и наречий , только четкие цифры и условия.
Цитировать
У меня вопрос возник - а как узнать  работает ли определенный участок функции или так для красоты написан. ?, т.е
Обязательно ли должен блок инициализации данной функции ?
Я уже начал писать код чуть позднее выложу.
Вопрос не понятен, переформулируйте ...
ВАЖНО НОВОСТЬ О ПЕРЕЕЗДЕ ФОРУМА
Своей помощью я стараюсь не давать готовое, я стараюсь натолкнуть Вас на понимание и на правильные мысли, что бы Вы сами решили свою задачу и получили знания... Как то так...

21 Февраль 2016, 01:30:50
Ответ #4

dimarik

  • Новичок

  • Оффлайн
  • *

  • 7
  • Репутация:
    1
Здраствуйте, продолжим
как офтопп - я предполагаю, что програмист сможет мое описание алгоритма воплотить на машинном языке
я имел ввиду как понять используется конкретная функция где то в коде или нет, т.е если она вызывается то работает. - вообщем сам ответил.

Пункт первый - определение тренда
Насколько я понял направление можно определит по Мак/Мин дня. дневному диапазону, по мах и мин предыдущего дня. ,по МА.
вот эту функцию можно использовать для  определения направления открытия ?
double val;
//--- расчет максимального значения цены на 7 последовательных барах
//--- с индекса 4 по индекс 23 включительно на текущем графике
   int val_index=iHighest(NULL,0,MODE_HIGH,7,4);
   if(val_index!=-1) val=High[val_index];

Я правильно понимаюю  это условие соответсвует направлению тренда  ?

if (Ask>iOpen(NULL, PERIOD_D1,0)&&Ask>iOpen(NULL, PERIOD_H4,0)&&Ask>iOpen(NULL, PERIOD_H1,0)&&Low[1]<Low[2]&&Low[1]<Low[0]&&Ask>Low[0]
есть еще вариант MathAbs(High[0]-High[1])<=10*_Point;
Подскажите вариант/ты написания стандартного условия.


21 Февраль 2016, 09:51:56
Ответ #5

Trading-Go

  • Администратор
  • Ветеран

  • Оффлайн
  • *****

  • 2 011
  • Репутация:
    493
  • Пол
    Мужской

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

Пункт первый - определение тренда
Насколько я понял направление можно определит по Мак/Мин дня. дневному диапазону, по мах и мин предыдущего дня. ,по МА.
вот эту функцию можно использовать для  определения направления открытия ?
double val;
//--- расчет максимального значения цены на 7 последовательных барах
//--- с индекса 4 по индекс 23 включительно на текущем графике
   int val_index=iHighest(NULL,0,MODE_HIGH,7,4);
   if(val_index!=-1) val=High[val_index];

Я правильно понимаюю  это условие соответсвует направлению тренда  ?

if (Ask>iOpen(NULL, PERIOD_D1,0)&&Ask>iOpen(NULL, PERIOD_H4,0)&&Ask>iOpen(NULL, PERIOD_H1,0)&&Low[1]<Low[2]&&Low[1]<Low[0]&&Ask>Low[0]
есть еще вариант MathAbs(High[0]-High[1])<=10*_Point;
Подскажите вариант/ты написания стандартного условия.


Приведенные Вам варианты не определяют тренд. Вы не стой стороны смотрите.  Что такое по Вашему тренд вот это и нужно жаложить в код но не наоборот, не стоит искать коды определения тренда.
ВАЖНО НОВОСТЬ О ПЕРЕЕЗДЕ ФОРУМА
Своей помощью я стараюсь не давать готовое, я стараюсь натолкнуть Вас на понимание и на правильные мысли, что бы Вы сами решили свою задачу и получили знания... Как то так...

21 Февраль 2016, 23:18:19
Ответ #6

dimarik

  • Новичок

  • Оффлайн
  • *

  • 7
  • Репутация:
    1
Цитировать
не стоит искать коды определения тренда
почему же, зачем изобретать велосипед.
Наоборот поизучав какой нибудь код можно многое понять и научится, даже более чем.
По мойму тренд - это направление в какую либо сторону на 1000 пунктов например.
Вы так я понял ждете описание идеи нового велосипеда, а я хочу написать стандартный, но может лучше чем другие.
Впрочем на большенство условий ответ я уже нашел. Будут вопросы напишу.


21 Февраль 2016, 23:20:24
Ответ #7

dimarik

  • Новичок

  • Оффлайн
  • *

  • 7
  • Репутация:
    1
Ах да я картинки выложу позднее, вы потом скажите свое мнение.

22 Февраль 2016, 08:35:28
Ответ #8

Trading-Go

  • Администратор
  • Ветеран

  • Оффлайн
  • *****

  • 2 011
  • Репутация:
    493
  • Пол
    Мужской

    Мужской
Цитировать
не стоит искать коды определения тренда
почему же, зачем изобретать велосипед.
Наоборот поизучав какой нибудь код можно многое понять и научится, даже более чем.
По мойму тренд - это направление в какую либо сторону на 1000 пунктов например.
Вы так я понял ждете описание идеи нового велосипеда, а я хочу написать стандартный, но может лучше чем другие.
Впрочем на большенство условий ответ я уже нашел. Будут вопросы напишу.


Дело в том что никто не может определить начало или конец тренда, как только будет такой метод то все сразу же станут миллионерами.
В Вашем случае Вы берете код в котором нет определения тренда и даже намека нет.  Ваш код описывает иное поведение и иной сигнал, причем мне кажется что он ошибочен плане логики.
ВАЖНО НОВОСТЬ О ПЕРЕЕЗДЕ ФОРУМА
Своей помощью я стараюсь не давать готовое, я стараюсь натолкнуть Вас на понимание и на правильные мысли, что бы Вы сами решили свою задачу и получили знания... Как то так...

22 Февраль 2016, 15:39:36
Ответ #9

dimarik

  • Новичок

  • Оффлайн
  • *

  • 7
  • Репутация:
    1
Цитировать
Дело в том что никто не может определить начало или конец тренда, как только будет такой метод то все сразу же станут миллионерами.
Это спорный вопрос, кто уже кажется нашел, на другом ресурсе видел, как один  тип в  ручную и ботом зафигачил 200к, а у других такого метода нет, вон они и в поиске.
Цитировать
В Вашем случае Вы берете код в котором нет определения тренда и даже намека нет.
Да я неправ, тыкаюсь во все подряд.
Вы не хотите подсказывать или научить ваше право.
На другом ресурсе уже подсказали как сделать, без воды и утверждений что это невозможно.
Да я неумею правильно формировать вопрос, а когда научусь мне не недо будет создавать такие банальные темы.

22 Февраль 2016, 16:26:57
Ответ #10

Trading-Go

  • Администратор
  • Ветеран

  • Оффлайн
  • *****

  • 2 011
  • Репутация:
    493
  • Пол
    Мужской

    Мужской
Это спорный вопрос, кто уже кажется нашел, на другом ресурсе видел, как один  тип в  ручную и ботом зафигачил 200к, а у других такого метода нет, вон они и в поиске.
Это не спорный вопрос, это Факт, дайте мне код который определяет тренд и я Вас сделаю миллиардером.
Цитировать
Да я неправ, тыкаюсь во все подряд.
Вы не хотите подсказывать или научить ваше право.
На другом ресурсе уже подсказали как сделать, без воды и утверждений что это невозможно.
Да я неумею правильно формировать вопрос, а когда научусь мне не недо будет создавать такие банальные темы.
Я чем могу тем и помогаю, в том числе и сэкономить время, что бы народ не тыкался туда где денег нет.
Тут никого силком не держат, ни я, ни кто другой на данном ресурсе рисовать "Хрустальные замки"  и "сладкие обещания не будет".
На форексе халявы нет, зарубите себе это на носу, если бы за разгрузку вагонов платили столько же я бы разгружал вагоны.
Форекс это кропотливый ежедневный труд + опыт + дисциплина.
Вы хотите тратить свое время на что то иное это Ваш выбор, я чем смог тем помог.

ЗЫ Тут не важно как Вы излагаете свои мысли, как Вы пишите с ошибками или нет, форум на то и форум что бы общаться и обсуждать мысли и идеи, а не грамматику или словосочетания.
ВАЖНО НОВОСТЬ О ПЕРЕЕЗДЕ ФОРУМА
Своей помощью я стараюсь не давать готовое, я стараюсь натолкнуть Вас на понимание и на правильные мысли, что бы Вы сами решили свою задачу и получили знания... Как то так...

27 Февраль 2016, 11:42:07
Ответ #11

Trader

  • Постоялец

  • Оффлайн
  • ***

  • 131
  • Репутация:
    81
Цитировать
Дело в том что никто не может определить начало или конец тренда, как только будет такой метод то все сразу же станут миллионерами.
Это спорный вопрос, кто уже кажется нашел, на другом ресурсе видел, как один  тип в  ручную и ботом зафигачил 200к, а у других такого метода нет, вон они и в поиске.
Цитировать
В Вашем случае Вы берете код в котором нет определения тренда и даже намека нет.
Да я неправ, тыкаюсь во все подряд.
Вы не хотите подсказывать или научить ваше право.
На другом ресурсе уже подсказали как сделать, без воды и утверждений что это невозможно.
Да я неумею правильно формировать вопрос, а когда научусь мне не недо будет создавать такие банальные темы.

Для того чтоб определить тренд, нужно всего одно единственное условие: знать прямой номер Джанет Йелен, или Марио Драги и с ними держать тесную связь.
Но так понимаю что для нас это недоступно, и в итоге мы имеем возможность определять тренд только постфактум. Другого нам не дано.
http://trader.mtrocket.com - тест совы с 27.04.2015, 17 пар

04 Март 2016, 05:52:30
Ответ #12

Lis974

  • Постоялец

  • Онлайн
  • ***

  • 115
  • Репутация:
    35
  • Пол
    Мужской

    Мужской
Цитировать
не стоит искать коды определения тренда
почему же, зачем изобретать велосипед.
Наоборот поизучав какой нибудь код можно многое понять и научится, даже более чем.
По мойму тренд - это направление в какую либо сторону на 1000 пунктов например.
Вы так я понял ждете описание идеи нового велосипеда, а я хочу написать стандартный, но может лучше чем другие.
Впрочем на большенство условий ответ я уже нашел. Будут вопросы напишу.
Я понимаю тренд - закрытие хая ниже предедущего, закрытие лоу ниже предедущего. И наобоот. Как то так.)
В 40 лет, жизнь только начинается!

04 Март 2016, 07:49:52
Ответ #13

Trader

  • Постоялец

  • Оффлайн
  • ***

  • 131
  • Репутация:
    81
примерно )
Вот только никто не знает когда он окончится, и когда идет коррекция, так-же никто не знает, коррекция это или разворот тренда.
http://trader.mtrocket.com - тест совы с 27.04.2015, 17 пар

04 Март 2016, 10:10:46
Ответ #14

Lis974

  • Постоялец

  • Онлайн
  • ***

  • 115
  • Репутация:
    35
  • Пол
    Мужской

    Мужской
примерно )
Вот только никто не знает когда он окончится, и когда идет коррекция, так-же никто не знает, коррекция это или разворот тренда.
Прикрути канал Дончиана, он же хорошо показывает тренд. Пробили низ - тренд. Оттолкнулись коррекция.
В 40 лет, жизнь только начинается!