Техническое задание
коды уже написаны, я отправлю в сообщении, их надо будет отредактировать, проверить и подключить нейросеть, которая написана на Phyton (тоже надо будет проверить)
также надо будет запустить полностью этого робота в работу а так вот все условия
торговоый робот для MetaTrader5 на языке програмирования MQL5 который будет использовать индикаторы Билла Вильямса Aligator Fractal AO AC с базовыми параметрами и условия были включаемыми/выключаемыми в панели нужно чтобы он использовал 30% от депозита для входа при всех условиях и анализировал свечи на всех этапах получается он берет середину предыдущей свечи смотрит на максимум и минимум свечи до куда она ходила и находит середину и смотрит где открылась вторая получается если тренд вверх то середина предыдущей свечи ниже текущей а если тренд вниз то середина предыдущей свечи выше текущей надо чтоб бот смотрел на все таймфреймы начиная с H1 и до W1 и заходил если происходят условия описанные нижекод Для MT5
Условие 1 Ангуляция 1 мудрец:
если цене была выше Aligator и резко цена стала ниже Aligator или образовалось одна или несколько больших свечей в низ и если Aligator выше цены и растояние от цены до Alligator минимум для H1 150 пунктов H4 500 пунктов D1 1000 пунктов W1 2500 пунктов а индикатор AO красный и образовываеться свеча и цена доходит до самого минимума по сравнению с 10 предыдущими свечами и эта свеча с большой тенью снизу не менее 50 пунктов для H1 и 100 пунктов для H4 и 200 пунктов и свеча с тенью снизу и большим телом сверху или с маленьким телом и большой тенью снизу то он идет в покупку при закрытии этой свечи и SL ставится за самый минимум этой свечи с большой тенью -10 пунктов ниже вниз а ТР ставит там где зубы Аллигатора красная линия и выходит со сделки когда цена заходит за красную линию аллигатора в текущем времени +20 пунктов выше,если цене была ниже Aligator и резко цена стала выше Aligator или образовалось одна или несколько больших свечей в верх и если Алигатор ниже цены и растояние от цены до Alligator минимум для H1 150 пунктов H4 500 пунктов D1 1000 пунктов W1 2500 пунктов а индикатор АО зеленый и образовываеться свеча и цена доходит до самого максимума по сравнению с 10 предыдущими свечами и эта свеча с большой тенью с верху не менее 50 пунктов для H1 и 100 пунктов для H4 и 200 пунктов и свеча с тенью с верху и большим телом с низу или с маленьким телом и большой тенью с верху то он идет в продажу при закрытии этой свечи и SL ставится за самый максимум этой свечи с большой тенью +10 пунктов выше а ТР ставит там где зубы красная линия Аллигатора и выходит со сделки когда цена заходит за красную линию аллигатора в текущем времени -20 пунктов ниже, это называеться Ангуляция можешь ее сверить и дополнить но базовые параметры не убирай заходит всегда при закрытии свечи с тенью и всегда когда закрываеться свеча и после чего следует вход в сделку идет до Зубов Аллигатора красной линии там где зубы находились в моменте там и остовляет TP если красная линия будет подтягиваться к цене то ТP остается всегда там где была красная линия при заходе в сделку и закрытии свечи
Условие 2 Не правильный заход:
если условие 1 выбивает SL только используеться если было условие 1 то она идет в обратную сторону с трейлинг стопом 100 пунктов получается если зашла в SELL и потом выбила SL то она идет в BUY и ставит SL за аллигатора и когда цена проходит 100 пунктов то она подтягивает SL на 100 пунктов если зашла в BUY и потом выбила SL то она идет в SELL и ставит SL за аллигатора и когда цена проходит 100 пунктов, он подтягивает SL на 100 пунктов получаеться если цена прошла 300 пунктов то подтягивет на 100 пунктов и так все время пока не выбьет трейлингстоп сделать это условие редактируемым в консоли надо чтоб я сам мог выбирать на сколько тиков будет подтягиваться стоплосс и стоплосс на какое количество тиков
Условие 3 2 мудрец:
если цена не коснулась SL условия 2, то отложенный ордер автоматически удаляется и не входит снова, пока не сформируется похожая ситуация, если условие 1 сработало и выполнилось успешно цена дошла до TP, то включаеться это условие если 1 условие не произошло то он не включиться и заходит один раз после условия и условия к нему когда цена проходит весь аллигатор, он идет дальше, получается, если была покупка по условию 1 и цена дошла до TP и цена стала выше и открылась новая свеча выше аллигатора или свеча закрылась выше аллигатора, то он идет в покупку и SL ставит на 500 пунктов ниже а TP на 1000 пунктов выше и подтягивает трейлинг стопом на каждые 300 пунктов которые прошла цена подтягивает SL на 200 пунктов,
если была продажа по условию 1 и цена дошла до TP и цена стала ниже и открылась новая свеча ниже аллигатора или свеча закрылась ниже аллигатора, то он идет в продажу и SL ставит на 500 пунктов выше а TP на 1000 пунктов ниже и
подтягивает трейлинг стопом на каждые 300 пунктов которые прошла цена подтягивает SL на 200 пунктов
Условие 4 3 мудрец:
если после условия 3 или 1 получаеться продолжаеться тренд тоесть если была покупка то и дальше покупает если была продажа то дальше продает только если не выбивало по условию 2 если условие 2 сработало то условие 4 не сработает образуется фрактал и цена в реальном времени пробивает этот фрактал +1 пункт, то он идет дальше, получается, если было выполнено условие 1 или 3 и аллигатор находиться с низу и если фрактал образовался сверху и цена его пробила +1 пункт, то он идет в покупку и SL выставляет -100 пунктов и далее на каждые 200 тиков он тянет SL вверх на 100 пунктов если было выполнено условие 1 или 3 и аллигатор находиться с верху и если фрактал образовался снизу и цена его пробила -1 пункт, то он идет в продажу и SL ставит +100 пунктов и далее на каждые 200 тиков ниже тянет SL на 100 пунктов максимальное количество фракталов в одном направлении 2 раза (получаеться 2 раза он может зайти в одном направлении) получаеться если образовался 1 фрактал с верху а предыдущий был с низу и аллигатор с низу цены и цена доходит до уровня фрактала +1 пунк максимума свечи на которой фрактал выше то он заходит в покупку если образовался 1 фрактал с низу а предыдущий был с верху и аллигатор с верху цены и цена доходит до уровня фрактала -1 пунк минимума свечи на которой фрактал в низ то он заходит в продажу
Условие 5 AO AC Alligator:
при условии,заходит один раз после ждет противоположной смены тренда тоесть когда аллигатор будет выше цены и индикаторы AO снизу красные, и AC сверху красный и Аллигатор выше цены или цена в нем но не касаеться красной линии заходит в продажу и SL ставится за вершиной Аллигатора +100 пунктов и TP на 200 пунктов ниже после входа в сделку может из нее выйти если цена каснется зубов Аллигатора +20 пунктов заходит один раз после ждет противоположной смены тренда тоесть когда цена становиться выше аллигатора и потом, при условии что индикаторы AO зеленые с верху, и AC зеленый и Аллигатор ниже цены или цена в нем но не касаеться красной линии заходит в покупку и SL ставится за низ Аллигатора -100 пунктов и TP на 200 пунктов выше после входа в сделку может из нее выйти если цена каснется зубов Аллигатора -20 пунктов заходит 1 раз после ждет смены тренда тоесть когда цена становиться ниже аллигатора и это зацикливаеться заходит по 1 разу и ждет смены тренда
Условие 6 Дополнение АO Alligator и свеча:
заходит 1 раз после ждет смены тренда тоесть если цена ниже Аллигатора и свеча образовываеться в вниз (смотрит по середине свечи тоесть берет максимум и минимум всего промежутка в свече находит середину и смотрит где открылась новая свеча если свеча открываеться ниже середины предыдущей свечи то это свеча для этого условия или появляеться красная свеча) и АО красный и он берет середину предыдущей свечи смотрит на максимум и минимум свечи до куда она ходила и находит середину и смотрит где открылась вторая получается если тренд нисходящий значит середина предыдущей свечи выше а текущая свеча которая открылась она открылась ниже середины предыдущей свечи то он заходит в продажу и SL ставится за Аллигатором и TP 200 пунктов ниже заходит 1 раз после ждет смены тренда тоесть когда цена становиться выше аллигатора и потом, если цена выше Аллигатора и свеча вверх (смотрит по середине свечи тоесть берет максимум и минимум всего промежутка в свече находит середину и смотрит где открылась новая свеча если свеча открываеться выше середины предыдущей свечи то это свеча для этого условияили появляеться зеленая свеча) и АО и он берет середину предыдущей свечи смотрит на максимум и минимум свечи до куда она ходила и находит середину и смотрит где открылась вторая получается если тренд восходящий значит середина предыдущей свечи ниже а текущая свеча которая открылась она открылась выше середины предыдущей свечи зеленая, то переходим в BUY и SL ставим за Аллигатором и TP 200 пунктов выше заходит 1 раз после ждет смены тренда тоесть когда цена становиться ниже аллигатора и это зацикливаеться заходит по 1 разу и ждет смены тренда
Условие 7 импульсные свечи
если образовываеться большая свеча в которая идет Верх по сравнению с 5 предыдущими (предыдущие 5 меньше по размеру или красные) с большим объемом смотрит на индикатор Volumes и маленькими тенями или теней вообще нету но тело свечи большое минимум пунктов в теле свечи для H1 600 пунктов H4 1000 пунктов D1 1500 пунктов то выставляет отложенный ордер BUYSTOP от середины этой импульсной свечи +10 пунктов выше и TP ставит за вершинку этой свечи +100 пунктов а SL ставит за минимум свечи -10 пунктов если цена не дошла до BUYSTOP в течении 2 дней то BUYSTOP после отключаеться и не включаетьсяесли образовываеться большая свеча в низ по сравнению с 5 предыдущими (предыдущие 5 меньше по размеру или зеленые) с большим объемом и маленькими тенями или теней вообще нету но тело свечи большое минимум пунктов в теле свечи для H1 600 пунктов H4 1000 пунктов D1 1500 пунктов то выставляет отложенный ордер SELLSTOP от середины этой импульсной свечи -10 пунктов выше и TP ставит за самый минимум этой свечи -100 пунктов а SL ставит за максимум свечи +10 пунктов если цена не дошла до SELLSTOP в течении 2 дней то после отключаеться и не включаеться
Условие 8 Бурдж халифа
Торгует в восходящем тренде Если Аллигатор с низу или цена в Аллигаторе и Если появляеться 1 свеча на верх с маленькими тенями и потом появляеться свеча 2 которая меньше 1 свечи и она красная и не пересикает середину -10 пунктов свечи 1 после чего появляеться свеча 3 такая же как и 1 после появляеться свеча 4 с болшой тенью с верху которая доходила до самого максимума была выше всех по сравнению с предыдущими 10 свечами и маленьким или красным телом в низ или свеча с большой тенью и маленьким зеленым телом мин пунктов в тени свечи для H1 50 пунктов H4 150 пунктов D1 250 пунктов W1 2000 пунктов то заходит в SELL и ставит TP на уровень где был минимум свечи 1 +50 тиков на верх чтоб точно цена дошла а SL ставит за максимум свечи 4 +10 пунктов также заходит в SELL когда цена доходит до минимума свечи 2 и ставит TP на уровень где был минимум свечи 1 +50 тиков на верх чтоб точно цена дошла а SL ставит за максимум свечи 4 +10 пунктов может образовываться несколькими свечами или стоять во флэте но суть остается одной и он должен ее находить получаеться 2 раза заходит в SELL
Торгует в нисходящем тренде Если Аллигатор с верху или цена в Аллигаторе и Если появляеться 1 свеча в низ с маленькими тенями и потом появляеться свеча 2 которая меньше 1 свечи и она зеленая и не пересикает середину +10 пунктов свечи 1 после чего появляеться свеча 3 такая же как и 1 после появляеться свеча 4 с болшой тенью с низу которая доходила до самого минимума была ниже всех по сравнению с предыдущими 10 свечамии эта свеча с маленьким и зеленым телом в верх или свеча с большой тенью и маленьким красным телом мин пунктов в тени свечи для H1 50 пунктов H4 150 пунктов D1 250 пунктов W1 2000 пунктов то заходит в BUY и ставит TP на уровень где был максимум свечи 1 -50 тиков в низ чтоб точно цена дошла а SL ставит за минимум свечи 4 -10 пунктов также заходит в BUY когда цена доходит до максимума свечи 2 и ставит TP на уровень где был максимум свечи 1 -50 тиков в низ чтоб точно цена дошла а SL ставит за минимум свечи 4 -10 пунктов получаеться 2 раза заходит в BUY может образовываться несколькими свечами или стоять во флэте но суть остается одной и он должен ее находить могут образовываться своего рода лесенки (свечи 1,2) и по этим лесенкам он долже торговать (свечи 1,2) в противоположном напровлении лесенок может быть и 2 как описано а может и 4 это максимум разворотное движение это когда появляеться свеча 4 (противоположная свеча с большой тенью) только после нее он заходит
Условие 9
Волны эллиота
Волна 1 происходит 1 мудрец или появляеться новость на этот инструмент или торговую пару новость берет из условия 10
если цене была выше Aligator и резко цена стала ниже Aligator или образовалось одна или несколько больших свечей в низ и если Aligator выше цены а индикатор AO красный и расстояние от губы Aligator до цены в текущий момент времени не менее 400 пунктов и образовываеться свеча с большой тенью не менее 30 пунктов для H1 и 60 пунктов для H4 и 150 пунктов для D1 снизу или с тенью снизу и большим телом сверху или с маленьким телом и большой тенью снизу то он идет в покупку при закрытии этой свечи и SL ставится за самый минимум этой свечи с большой тенью -10 пунктов ниже вниз а ТР ставит там где зубы Аллигатора,если цене была ниже Aligator и резко цена стала выше Aligator или образовалось одна или несколько больших свечей в верх и если Алигатор ниже цены а индикатор АО зеленый и расстояние от челюсти Алигатора до цены в текущий момент не
менее 600 пунктов и образуется свеча с большой тенью сверху и цена от аллигатор до цены не менее 30 пунктов для H1 и 60 пунктов для H4 и 150 пунктов или с тенью сверху и большим телом вниз или с маленьким телом и большой тенью сверху
то она заходит в продажу и SL ставится за самый максимум свечи с тенью -10 пунктов дальше вверх а ТР ставит там где зубы Аллигатора там где красная линия это называеться Ангуляция можешь ее сверить и дополнить но базовые параметры не
убирай заходит всегда при закрытии свечи с тенью и всегда когда закрываеться свеча и после чего следует вход в сделку идет до Зубов Аллигатора красной линии там где зубы находились в моменте там и остовляет TP если красная линия будет
подтягиваться к цене то ТP остается всегда там где была красная линия при заходе в сделку и закрытии свечи
ВЫходит когда индикаор AO=0
Волна 2 это когда цена спускаеться в противоположное направление и она не касаеться волны 1
Волна 3 самая большая получаеться находит самый максимум волны 1 до куда она дошла там будет образован фрактал когда цена
на покупку если аллигатор с низу или цена ходит в аллигаторе и цена пробила фрактал самого максимального значения где была цена +1 тик выше то заходит в покупку а SL ставит за самый минимум волны 2 Выходит из сделки когда AO=0 или цена коснулась красной линии аллигатора
на продажу если аллигатор с верху или цена ходит в аллигаторе и цена пробила фрактал самого минимального значения где была цена -1 тик ниже то заходит в продажу а SL ставит за самый максимум волны 2 Выходит из сделки когда AO=0 или цена коснулась красной линии аллигатора
Волна 4 это когда цена спускаеться в противоположное направление и она не касаеться волны 3
Волна 5 чтобы зайти надо
В покупку Ждать когда столбики АО станут зелеными и начнут подходить к нулевой или пересекут 0 выходит когда цвет столбиков снова станет красным или если цена каснется красной линии аллигатора SL ставит за самый минимум волны 4
В продажу Ждать когда столбики АО станут красными начнут подходить к нулевой или пересекут 0 выходит когда цвет столбиков снова станет зеленым или если цена каснется красной линии аллигатора SL ставит за самый минимум волны 4
ВОлна A после волны 5 идет спуск в противоположное направление
Волна B после волны А идет в противоположное напровление
Волна C заходит когда цена пробила фрактал Волны А и SL ставит за Волну В
на покупку если Волна А была корекционой при растущем тренде Аллигатор был с низу то берется самая нижняя цена где образовался фрактал от Волны А а SL ставит за вершинку волны В
и ставит трейлингстоп на 300 пунктов если цена прошла 300 пунктов в верх то подтягивает SL на 300 пунктов выше
на продажу если Волна А была корекционой при нисходящем тренде Аллигатор был с верху то берется самая верхняя цена где образовался фрактал от Волны А а SL ставит за минимум волны В
и ставит трейлингстоп на 300 пунктов если цена прошла 300 пунктов в низ то подтягивает SL на 300 пунктов ниже
Уровни фибоначи рисует от максимума до минимума который был в ближайшем времени при восходящем тренде и при нисходящем от минимума до максимума
Заходит постепенно тоесть идет по порядку 1 2 3 4 5 A B C
или смотрит по индикатору EWO (Elliott Wave Oscillator) и заходит по нему
Торговля по волнам при восходящем тренде
1. Волна 1 (начало нового тренда)
Условие входа :
Цена находится в зоне консолидации или завершает предыдущую коррекцию.
EWO пересекает нулевую линию снизу вверх.
Осциллятор начинает расти, подтверждая силу нового тренда.
Точка входа :
Открывайте длинную позицию (BUY) на следующей свече после пересечения нулевой линии.
Стоп-лосс :
Разместите за ближайшим локальным минимумом.
Выход :
Закрывайте сделку при первых признаках коррекции (волна 2), когда EWO начинает снижаться.
2. Волна 2 (коррекция)
Описание :
Волна 2 — это откат после первой импульсной волны. Цена может вернуться до уровня начала волны 1, но не ниже.
Точка входа :
Не рекомендуется открывать позицию в волне 2, так как это коррекция.
Выход :
Если вы держите позицию из волны 1, закройте её при снижении EWO и начале коррекции.
3. Волна 3 (основной импульс)
Условие входа :
После завершения волны 2 цена снова начинает расти.
EWO показывает новый максимум, превышающий значение волны 1.
Точка входа :
Открывайте длинную позицию (BUY) на пробое максимума волны 1.
Стоп-лосс :
Разместите за минимумом волны 2.
Выход :
Закрывайте сделку при первых признаках замедления роста (волна 4), когда EWO начинает снижаться.
4. Волна 4 (коррекция)
Описание :
Волна 4 — это откат после сильного движения волны 3. Она обычно менее выражена, чем волна 2.
Точка входа :
Не рекомендуется открывать позицию в волне 4, так как это коррекция.
Выход :
Если вы держите позицию из волны 3, закройте её при снижении EWO и начале коррекции.
5. Волна 5 (завершающий импульс)
Условие входа :
После завершения волны 4 цена снова начинает расти.
EWO показывает новый максимум, но он может быть слабее, чем в волне 3 (признак завершения тренда).
Точка входа :
Открывайте длинную позицию (BUY) на пробое максимума волны 3.
Стоп-лосс :
Разместите за минимумом волны 4.
Выход :
Закрывайте сделку при первых признаках разворота тренда (пересечение EWO нулевой линии).
Торговля по волнам при нисходящем тренде
1. Волна 1 (начало нового тренда)
Условие входа :
Цена находится в зоне консолидации или завершает предыдущую коррекцию.
EWO пересекает нулевую линию сверху вниз.
Осциллятор начинает снижаться, подтверждая силу нового тренда.
Точка входа :
Открывайте короткую позицию (SELL) на следующей свече после пересечения нулевой линии.
Стоп-лосс :
Разместите за ближайшим локальным максимумом.
Выход :
Закрывайте сделку при первых признаках коррекции (волна 2), когда EWO начинает расти.
2. Волна 2 (коррекция)
Описание :
Волна 2 — это откат после первой импульсной волны. Цена может вернуться до уровня начала волны 1, но не выше.
Точка входа :
Не рекомендуется открывать позицию в волне 2, так как это коррекция.
Выход :
Если вы держите позицию из волны 1, закройте её при росте EWO и начале коррекции.
3. Волна 3 (основной импульс)
Условие входа :
После завершения волны 2 цена снова начинает падать.
EWO показывает новый минимум, превышающий значение волны 1.
Точка входа :
Открывайте короткую позицию (SELL) на пробое минимума волны 1.
Стоп-лосс :
Разместите за максимумом волны 2.
Выход :
Закрывайте сделку при первых признаках замедления падения (волна 4), когда EWO начинает расти.
4. Волна 4 (коррекция)
Описание :
Волна 4 — это откат после сильного движения волны 3. Она обычно менее выражена, чем волна 2.
Точка входа :
Не рекомендуется открывать позицию в волне 4, так как это коррекция.
Выход :
Если вы держите позицию из волны 3, закройте её при росте EWO и начале коррекции.
5. Волна 5 (завершающий импульс)
Условие входа :
После завершения волны 4 цена снова начинает падать.
EWO показывает новый минимум, но он может быть слабее, чем в волне 3 (признак завершения тренда).
Точка входа :
Открывайте короткую позицию (SELL) на пробое минимума волны 3.
Стоп-лосс :
Разместите за максимумом волны 4.
Выход :
Закрывайте сделку при первых признаках разворота тренда (пересечение EWO нулевой линии).
Условие 10
Новостной фон
использует сразу 2 языка програмирования Phyton и MQL5 так же смотрит в Investing.com (и Крипто новости ниже есть ссылки) на экономический календарь и значимость новости минимум 2 звездочки
1. Общая концепция
Стратегия состоит из следующих этапов:
Сбор данных :
Использование Investing.com для получения новостей и экономических событий.
Обработка данных :
Преобразование текстовых данных в числовые признаки с помощью NLP.
Обучение нейросети :
Создание модели, которая предсказывает направление движения цены, а также определяет SL и TP на основе волатильности.
Интеграция с MQL5 :
Передача сигналов от Python-модели в MQL5 для выполнения торговых операций.
Оптимизация :
Нейросеть обучается на исторических данных и улучшает свои решения на основе положительных и отрицательных исходов сделок.
2. Сбор данных
a) Источники данных
Investing.com предоставляет:
Экономический календарь : https://www.investing.com/economic-calendar/
Новости : https://www.investing.com/news/
Новости по криптовалюте https://cointelegraph.com/?spm=a2ty_o01.29997173.0.0.2957c921rzUW3W
https://www.coindesk.com/?spm=a2ty_o01.29997173.0.0.2957c921rzUW3W
b) Используемые библиотеки
import requests
from bs4 import BeautifulSoup
import pandas as pd
c) Пример кода для сбора данных
# Парсинг новостей с Investing.com
def parse_investing_news():
url = "https://www.investing.com/news/"
headers = {"User-Agent": "Mozilla/5.0"}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.content, 'html.parser')
news_list = []
for article in soup.find_all('article'):
title = article.find('a', class_='title').text.strip()
link = article.find('a')['href']
news_list.append({'title': title, 'link': link})
return news_list
# Получение экономического календаря
def get_economic_calendar():
calendar_url = "https://www.investing.com/economic-calendar/"
headers = {"User-Agent": "Mozilla/5.0"}
response = requests.get(calendar_url, headers=headers)
soup = BeautifulSoup(response.content, 'html.parser')
events = []
for row in soup.select('table.economicCalendarData tr'):
cells = row.find_all('td')
if len(cells) > 0:
time = cells[0].text.strip()
event = cells[2].text.strip()
actual = cells[4].text.strip()
forecast = cells[5].text.strip()
previous = cells[6].text.strip()
events.append({
'time': time,
'event': event,
'actual': actual,
'forecast': forecast,
'previous': previous
})
return events
3. Подготовка данных
a) Очистка данных
Удалите дубликаты и пропущенные значения.
Преобразуйте текстовые данные в числовые признаки с помощью NLP.
b) Используемые библиотеки
from sklearn.feature_extraction.text import TfidfVectorizer
from nltk.corpus import stopwords
import nltk
nltk.download('stopwords')
stop_words = set(stopwords.words('english'))
c) Пример кода для обработки новостей
def preprocess_news(news_list):
vectorizer = TfidfVectorizer(stop_words=stop_words)
titles = [news['title'] for news in news_list]
X = vectorizer.fit_transform(titles)
return X.toarray()
4. Обучение нейросети
a) Архитектура нейросети
Модель будет принимать на вход обработанные новости и экономические данные, а на выходе предсказывать:
Направление движения цены (+1 для роста, -1 для падения).
Значения SL и TP на основе волатильности.
b) Используемые библиотеки
import tensorflow as tf
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, Dense, Dropout, Concatenate
c) Пример кода для создания модели
def create_model(input_shape):
# Входной слой
input_layer = Input(shape=(input_shape,))
# Слой для предсказания направления движения цены
price_direction = Dense(128, activation='relu')(input_layer)
price_direction = Dropout(0.2)(price_direction)
price_direction = Dense(64, activation='relu')(price_direction)
price_direction_output = Dense(1, activation='sigmoid', name='price_direction')(price_direction)
# Слой для предсказания SL и TP
volatility = Dense(128, activation='relu')(input_layer)
volatility = Dropout(0.2)(volatility)
volatility = Dense(64, activation='relu')(volatility)
sl_output = Dense(1, activation='linear', name='stop_loss')(volatility)
tp_output = Dense(1, activation='linear', name='take_profit')(volatility)
# Создание модели
model = Model(inputs=input_layer, outputs=[price_direction_output, sl_output, tp_output])
model.compile(
optimizer='adam',
loss={'price_direction': 'binary_crossentropy', 'stop_loss': 'mse', 'take_profit': 'mse'},
metrics={'price_direction': 'accuracy', 'stop_loss': 'mae', 'take_profit': 'mae'}
)
return model
# Пример: обучение модели
X_train = preprocess_news(sample_news) # Препроцессинг новостей
y_train_direction = [1, 0, 1, ...] # Метки: 1 для роста, 0 для падения
y_train_sl = [50, 30, 60, ...] # Стоп-лоссы
y_train_tp = [100, 80, 120, ...] # Тейк-профиты
model = create_model(X_train.shape[1])
model.fit(
X_train,
{'price_direction': y_train_direction, 'stop_loss': y_train_sl, 'take_profit': y_train_tp},
epochs=10, batch_size=32
)
5. Интеграция с MQL5
a) Передача сигналов из Python в MQL5
Для интеграции используется файловый интерфейс:
Python записывает сигналы (направление, SL, TP) в текстовый файл.
MQL5 считывает этот файл и выполняет торговые операции.
b) Пример кода для записи сигнала в файл
def write_signal_to_file(direction, sl, tp):
with open("trade_signal.txt", "w") as file:
file.write(f"{direction},{sl},{tp}")
c) Пример кода для чтения сигнала в MQL5
// Чтение сигнала из файла
void ReadSignalFromFile() {
string signal;
int file_handle = FileOpen("trade_signal.txt", FILE_READ);
if (file_handle != INVALID_HANDLE) {
signal = FileReadString(file_handle);
FileClose(file_handle);
}
// Разбор сигнала
string parts[];
StringSplit(signal, ',', parts);
string direction = parts[0];
double stop_loss = StringToDouble(parts[1]);
double take_profit = StringToDouble(parts[2]);
if (direction == "buy") {
Trade.Buy(0.1, NULL, Ask, stop_loss, take_profit);
} else if (direction == "sell") {
Trade.Sell(0.1, NULL, Bid, stop_loss, take_profit);
}
}
6. Оптимизация нейросети
a) Обратная связь
После каждой сделки сохраняйте результат (прибыль или убыток) в файл. Эти данные используются для дальнейшего обучения нейросети.
b) Пример кода для записи результата сделки
def log_trade_result(profit):
with open("trade_results.txt", "a") as file:
file.write(f"{profit}\n")
c) Дальнейшее обучение
Периодически пересобирайте модель, используя новые данные о результатах сделок:
# Чтение результатов сделок
def load_trade_results():
with open("trade_results.txt", "r") as file:
results = [float(line.strip()) for line in file.readlines()]
return results
# Дообучение модели
new_data = preprocess_news(new_news)
new_results = load_trade_results()
model.fit(
new_data,
{'price_direction': new_directions, 'stop_loss': new_sls, 'take_profit': new_tps},
epochs=5, batch_size=32
)
7. Риск-менеджмент
a) Учет волатильности
Волатильность можно рассчитать как стандартное отклонение цен за определенный период:
double CalculateVolatility(int period) {
double prices[];
ArrayResize(prices, period);
CopyClose(_Symbol, PERIOD_CURRENT, 0, period, prices);
double mean = MathMean(prices);
double variance = 0;
for (int i = 0; i < period; i++) {
variance += MathPow(prices[i] - mean, 2);
}
return MathSqrt(variance / period);
}
b) Выставление SL и TP
Используйте волатильность для расчета SL и TP:
double volatility = CalculateVolatility(20);
double stop_loss = Ask - 2 * volatility * Point();
double take_profit = Ask + 3 * volatility * Point();
Эта стратегия позволяет автоматизировать торговлю по новостям с использованием MQL5 и Python-нейросети. Нейросеть не только предсказывает движение цены, но и учитывает волатильность для выставления SL и TP. Она также улучшается со
временем, обучаясь на результатах сделок.
Для торговли по новостям в MQL5 с интеграцией Python-нейросети необходимо собирать данные с Investing.com, обучать модель на Python, передавать сигналы в MQL5 и выполнять автоматическую торговлю с учетом риск-менеджмента.
Нейросеть может улучшаться на основе результатов сделок.
Для Phiton
написать дополнительный код на питоне и распиши как его использовать и добавить Надо чтоб ты подключил нейросеть которая будет работать на всех индикаторах и валютных парах и чтоб она 1)Умела использовать все индикаторв в связи
получаеться я дал базовые параметры но нейросеть в будуещем должна уметь использовать этиже индикаторы в связи минимум должно быть 2 факта для входа Ао АС Аллигатор Фрактал Новости Волны Эллиота и Свечи2)Нейросеть должна сама думать и
принимать решения получаеться она все время анализирует и делает выводы на будуещее может регулировать ТР стоплосс трейлинг стоп и ищет входы в сделки и если начинаетьс импульс или новости может выйти 3)Должна настраивать манименеджмент
(объем для входа в сделку) и при положительных сделках наращивает при отрицательных сбовляет 4) с волнами элиота находит все волны по всем базовым условиям и все 4 пункта работают в совокупности
нейросеть будет брать со всех инструментов и торговых пар истарические данный максимумы минимумы (все криптовалюты, все сырье, все валютные пары, все компании)
и дополнительно к питону в отключение Вильямса тоесть торгует отдельно от вильямса только остается индикатор фрактал 1) ищет урокни поддержки и сопративления на всех таймфреймах также находит не просто линиями их не надо а облостями чтоб понимать где цена так же опредляет тренд и заходит по нему смотрит на
объемы и принимает решение 2)в базовых настройках цена может коснуться трендового уровня максимум 3-4 раза после меняет тренд 3) смотрит на то на сколько большой уровень поддержки и сопративления и делает вывод где ставить ТP SL 3) TP
ставит до уровняи ближе на 10 пунктов к цене а SL ставит еще далбше от уровня на 10 пунктов 4)Заходит по тренду 5)Фигуры
1.Треугольник если на графике образовываеться треугольник то смотрим в какую сторону он пробьет цену и сделает ретест и после заходит в сделку тоесть если образовался треугольник и пробился в низ может образаваться фрактал и цена стала
ниже этого фрактала -1 пункт или по уровню поддержки а потом цена вернулась к этому уровню и образовалась свеча в низ то он заходит в SELL ТП ставит на самое максимальное растояние треугольника от максимуму треугольника до минимума
-20 пунктов а SL ставит за максимум треугольника в даном случае и если на покупку то наоборот если на графике образовываеться треугольник то смотрим в какую сторону он пробьет цену может образаваться фрактал и цена стала выше этого
фрактала +1 пункт или по уровню сопратевления и сделает ретест и после заходит в сделку тоесть если образовался треугольник и пробился в верх а потом цена вернулась к этому уровню и образовалась свеча в верх то он заходит в BUY и ТП
ставит на самое максимальное растояние треугольника от минимума треугольника до максимума +20 пунктов а SL ставит за минимум треугольника в даном случае
2.Вымпел если было резкое движение и получился треугольник или цена ходит в коридоре то это вымпел если появилось резкое движение в верх и образовываеться треугольник или цена ходит в коридоре то при пробитии коридора или
треугольникатам там образуеться фрактал с верху при пробитии его +1 пункт выше или пробьет уровень сопративления мы заходит в BUY SL ставим за минимум тругольника или коридора -20 пунктов а TP ставим на растояние этого
импульсного движения от куда оно начиналось и до вершинки треугольника или коридора и на это растояние ставим TP -50 пунктов ниже и также с продажей только на оборот если появилось резкое движение в низ и образовываеться треугольник
или цена ходит в коридоре то при пробитии коридора или треугольника там образуеться фрактал с низу при пробитии его -1 пункт ниже или пробьет уровень поддержки мы заходит в SELL и SL ставим за максимум тругольника или коридора +20
пунктов а TP ставим на растояние этого импульсного движения от куда оно начиналось и до минимума треугольника или коридора и на это растояние ставим TP +50 пунктов
3. двойное- тройное дно если было движение в низ и тренд в низ и свечи начали по тихоньку рости в верх и обратно в низ и так 2-3 раза то появиться за этот промежуток времени фрактал с верху самый максимальный или уровень сопративления
там ставит отложенный ордер BUYSTOP когда цена пробьет тот уровень от куда цена отскочила обратно (самый максимум там образуеться фрактал) или фрактал +1 пункт выше в низ там где был спуск ищет максимум до куда дошла цена +20 пунктов
и ставит SL за самый минимум который был в течении этого времени а TP ставит на растояние от движения которое было с самого начала в верх -50 пунктов
4. Двойная-Тройная вершина если было движение в верх тренд в верх и свечи начали по тихоньку идти в низ и обратно в верх и так 2-3 раза там образуеться фрактал с низу или уровень поддержки то ставит отложенный ордер SELLSTOP когда цена
пробьет этот уровень (самый минимум там образуеться фрактал) или фрактал -1 пункт самого нижнего фрактала от куда цена отскочила обратно в низ там где был спуск (самый минимум там образуеться фрактал) ищет минимум до куда дошла цена
+20 пунктов и ставит SL за самый максимум который был в течении этого времени и TP ставит на растояние от гачала движения которое было с самого начала до низа которое произошло -50 пунктов
5. голова и плечи если восходящий тренди цена идет в верх запоминает максимум 1.1 и цена в моменте начала падать 1.0 раз после чего опять пошла в верх уже 2.1 раз и пробила максимум цены 1.1 раз (там может образоваться фрактал и цена
прообьет его) после чего опять пошла в низ уже 2.0 раз в низ и потом опять в верх и не дошла до максимума 2.1 раза то при пробитии уровня поддержки который находиться на уровне до которого доходила цена при подении в 2.0 раз
там образуеться нижний фрактал при пробитии либо уровня или нижнего фрактала (минимума 2.0) то заходит в SELL и TP ставит на растояние от максимума (максимум 2.1) до минимума где ходила (минимум 2.0) цена -50 пунктов а SL ставит за
самый максимум цены который был (максимум 2.1)
Определяет тренд с помощью бокового объема или профиля объема он рисует его от минимума до максимума и от минимума до максимума начиная с большого таймфрейма с D1 идет до H1 с D1 значения уровня более значемые и также определяет где
ходит цена если уровень сопратевления то он будет красным если уровень поддержки то он будет зеленым он рисует их прямоугольниками и смотрит на объем где максимальные значения там и проводит уровень
надо так же чтоб в будующем нейросеть училась и сама исходила из того когда и как заходить использовала минимум 2 факта для входа в сделку и расписывала мне почему зашла