Обсуждение статьи "Осваиваем рыночную динамику: Создание советника на основе стратегии поддержки и сопротивления"

 

Опубликована статья Осваиваем рыночную динамику: Создание советника на основе стратегии поддержки и сопротивления:

В статье представлено подробное руководство по разработке автоматизированного торгового алгоритма на основе стратегии поддержки и сопротивления. Дана подробная информация по всем аспектам создания советника на MQL5 и его тестирования в MetaTrader 5 — от анализа поведения ценового диапазона до управления рисками.

Описание стратегии поддержки и сопротивления вращается вокруг ее применения в торговых сценариях. Уровни поддержки обычно указывают на нижнюю границу, которую цена пытается пробить, что свидетельствует о концентрации спроса, в то время как уровни сопротивления представляют собой верхнюю границу, указывающую на концентрацию предложения. Покупатели обычно входят на рынок на уровнях поддержки, и цены обычно растут, поэтому для трейдеров это хорошее время подумать о покупке или открытии длинной позиции. С другой стороны, на уровнях сопротивления в игру вступают продавцы, и цены могут упасть, что позволяет трейдерам продавать или занимать короткие позиции. Наглядное представление приведено ниже.

S & R

Вход на рынок всегда динамичен и зависит от вкуса и предпочтений, хотя существует два основных способа торговли по уровням. Некоторые трейдеры предпочитают торговать на отскоке, покупая, когда цена падает к уровням поддержки, и продавая, когда цена растет к уровням сопротивления. Другие трейдеры, наоборот, предпочитают торговать на прорыве, покупая, когда цена пробивает уровни сопротивления, и продавая, когда цена пробивает уровни поддержки. Другими словами, можно либо торговать внутри уровней (Fade the Break) или рассчитывать на прорыв (Trade the Break).

Автор: Allan Munene Mutiiria

 
Эта стратегия выглядит очень интересно. Что касается кода, каковы критерии входа? И как рассчитываются уровни стоп-лосс и тейк-профит? Спасибо.
 

Отличная статья, спасибо за ваш труд.

Я хотел бы уточнить использование термина "сломать".

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

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

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

 
davesarge1 уровни стоп-лосс и тейк-профит? Спасибо.
         if (open1 > close1 && open1 < ResistancePriceLevel
            && high1 > ResistancePriceLevel && Bid < ResistancePriceLevel){
            Print("$$$$$$$$$$$$ SELL NOW SIGNAL!");
            obj_Trade.Sell(0.01,_Symbol,Bid,Bid+350*5*_Point,Bid-350*_Point);
         if (open1 < close1 && open1 > SupportPriceLevel
            && low1 < SupportPriceLevel && Ask > SupportPriceLevel){
            Print("$$$$$$$$$$$$ BUY NOW SIGNAL!");
            obj_Trade.Buy(0.01,_Symbol,Ask,Ask-350*5*_Point,Ask+350*_Point);
 
Kyle Young Sangster уровень поддержки пробит, его роль может измениться на сопротивление, или он может стать недействительным в зависимости от ценового действия, поскольку цена продолжает двигаться вниз

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

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

Конечно. Спасибо.

 
Здравствуйте,
Пожалуйста, проясните ситуацию с использованием `pricesHighest` и `pricesLowest`

Они предназначены для хранения самых высоких максимумов и самых низких минимумов, ИЛИ, самых низких максимумов и самых высоких минимумов?

Заранее спасибо.
 

Предостережение относительно использования ArraySort с массивами, которые были изменены с помощью ArraySetAsSeries:

Если массив был изменен с помощью ArraySetAsSeries, ArraySort отсортирует его в порядке DESCENDING!!!
Чтобы получить порядок ASCENDING, передайте массив в ArrayReverse. Оттуда можно легко получить первые 10 элементов:

ArrayRemove(myArray, 10, WHOLE_ARRAY);


Спасибо и удачного кодирования.

 
Kyle Young Sangster #:


Чтобы получить порядок ASCENDING, передайте массив в ArrayReverse. Оттуда можно легко получить первые 10 элементов:

ArrayRemove(myArray, 10, WHOLE_ARRAY);

Спасибо и удачного кодирования.

Выделил желтым цветом - ничего не перепутали?

С уважением, Владимир.

 
Kyle Young Sangster #:

Предостережение относительно использования ArraySort с массивами, которые были изменены с помощью ArraySetAsSeries:

Если массив был изменен с помощью ArraySetAsSeries, ArraySort отсортирует его в порядке DESCENDING!!!
Чтобы получить порядок ASCENDING, передайте массив в ArrayReverse. Оттуда можно легко получить первые 10 элементов:


Спасибо и удачного кодирования.

MrBrooklin #:

Выделено желтым - ничего не перепутали?

С уважением, Владимир.

Не могу отредактировать свое первоначальное сообщение, поэтому отвечаю здесь. Попробую пояснить.

Первоначально предполагалось получить наименьшее n количество цен из серии. После установки массива "как серии" с помощью ArraySetAsSeries и использования ArraySort, массив цен был в порядке убывания. Согласно документации по ArraySort, я ожидал получить их в порядке возрастания. Поэтому я пропустил отсортированный массив через ArrayReverse, чтобы перевести цены в порядок возрастания. Затем я использую ArrayRemove, чтобы удалить все, кроме первых n элементов. (в моем примере n = 10).

Все еще что-то не так?

Спасибо за отзыв.

 
Kyle Young Sangster #:
Все еще что-то не так?

Теперь понятно. Спасибо.

С уважением, Владимир.

 
Kyle Young Sangster #:

Предостережение относительно использования ArraySort с массивами, которые были изменены с помощью ArraySetAsSeries:

Если массив был изменен с помощью ArraySetAsSeries, ArraySort отсортирует его в порядке DESCENDING!!!
Чтобы получить порядок ASCENDING, передайте массив в ArrayReverse. Оттуда можно легко получить первые 10 элементов:

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