Основная идея этой стратегии заключается в сравнении движущейся средней Холла (Hull Moving Average, HMA) с K-линией для получения сигналов покупки и продажи.
Во-первых, стратегия вычисляет HMA на определенный период времени с помощью функции hma (). Затем, получает цену открытия на верхней линии K в качестве сравнительной базы. Если HMA выше цены открытия на верхней линии K, то создается сигнал покупки; если HMA ниже цены открытия на верхней линии K, то создается сигнал продажи.
Вход в стратегию осуществляется только в том случае, если цена пересекает HMA в противоположном направлении. То есть, покупается только в том случае, если цена пересекает HMA снизу; продается только в том случае, если цена пересекает HMA сверху. Это позволяет избежать повторных сигналов, вызванных рыночными потрясениями.
Условие выхода стратегии заключается в том, чтобы остановить убыток, когда цена возвращается на другую сторону HMA. Например, цена после покупки падает ниже HMA, а убыток продается.
В целом, эта стратегия использует гладкую характеристику HMA, чтобы идентифицировать направление основных тенденций и генерировать сигналы. В то же время, требуя, чтобы цены пробивались, чтобы отфильтровать ложные сигналы, можно избежать повторного захвата рыночными колебаниями.
Используя HMA, а не SMA, можно лучше распознавать тренды, фильтруя колебания.
Механизм прорыва позволяет снизить вероятность попадания в ловушку и повторного открытия позиции.
Используя предыдущую цену K-линии, а не текущую цену, можно избежать рисования обратной кривой.
Правила простые и понятные, подходят для оптимизации параметров и роботизированной торговли.
Гибко применяется в любых сортах и циклах, универсальность.
Неправильная настройка параметров HMA может привести к ошибочным тенденциям или чрезмерной чувствительности. Можно тестировать параметры различных периодов для поиска оптимальных значений.
Одиночные показатели могут быть пробиты через повторную проверку, и можно рассмотреть возможность фильтрации сигналов в сочетании с другими показателями.
Стоп-потеря близка к HMA, может быть легко пробита вновь, и может быть удалена до поддерживающего сопротивления.
Невозможно определить направление и силу тенденции, поэтому следует рассмотреть возможность включения классификатора тенденций.
Фиксированная точка остановки убытков приводит к значительным колебаниям риска и дохода, можно попробовать с остановкой убытков или управлением капиталом.
Эта стратегия в целом довольно проста, практична, и ее основная идея ясна. С помощью HMA можно определить направление основной тенденции, чтобы прорвать ошибочные сигналы. Можно избежать повторного открытия позиций в рыночных рынках.
/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © SeaSide420. Any timeFrame/pair , Hull Moving Average vs Candle
//@version=4
strategy("Hull Moving Average vs Candle",shorttitle="HMA-vs-Candle",overlay=true,default_qty_type=strategy.percent_of_equity,default_qty_value=100,commission_type=strategy.commission.cash_per_order,commission_value=1.00,slippage=1)
Period=input(title="Hull MA Period",type=input.integer,defval=50,minval=1)
Resolution=input(title="Candle Resolution", type=input.resolution,defval="D")
Price=input(title="Source of Price",type=input.source,defval=open)
HMA=hma(Price,Period)
Candle=security(syminfo.tickerid,Resolution,Price,barmerge.gaps_off,barmerge.lookahead_off)
change_color=HMA>Candle?color.green:color.red
plot1=plot(Candle,color=change_color,title="Candle Line",linewidth=2,transp=50)
plot2=plot(HMA[1],color=change_color,title="Hull MA Line",linewidth=2,transp=50)
fill(plot1,plot2,color=change_color,transp=50)
strategy.close("BUY",when=Price<HMA and HMA<Candle,comment="close buy entry")
strategy.close("SELL",when=Price>HMA and HMA>Candle,comment="close sell entry")
if (Price>HMA and HMA>Candle and Price>Price[1])
strategy.entry("BUY",strategy.long)
if (Price<HMA and HMA<Candle and Price<Price[1])
strategy.entry("SELL",strategy.short)
// /L'-,
// ,'-. /MM . . / L '-,
// . _,--dMMMM\ /MMM `.. / '-,
// : _,--, )MMMMMMMMM),. `QMM ,<> /_ '-,'
// ; ___,--. \MM( `-' )M//MM\ ` ,',.; .-'* ; .'
// | \MMMMMM) \MM\ ,dM//MMM/ ___ < ,; `. )`--' /
// | \MM()M MMM)__ /MM(/MP' ___, \ \ ` `. `. /__, ,'
// | MMMM/ MMMMMM( /MMMMP'__, \ | / `. `-,_\ /
// | MM /MMM---' `--'_ \ |-' |/ `./ .\----.___
// | /MM' `--' __,- \"" |-' |_, `.__) . .F. )-.
// | `--' \ \ |-' |_, _,-/ J . . . J-'-. `-.,
// | __ \`. | | | \ / _ |. . . . \ `-. F
// | ___ / \ | `| ' __ \ | /-' F . . . . \ '`
// | \ \ \ / | __ / \ | |,-' __,- J . . . . . \
// | | / |/ __,- \ ) \ / |_,- __,--' |. .__.----,'
// | |/ ___ \ |'. |/ __,--' `.-;;;;;;;;;\
// | ___ \ \ | | ` __,--' /;;;;;;;;;;;;.
// | \ \ |-'\ ' __,--' /;;;;;;;;;;;;;;\
// \ | | / | __,--' `--;;/ \;-'\
// \ | |/ __,--' / / \ \
// \ | __,--' / / \ \
// \|__,--' _,-;M-K, ,;-;\
// <;;;;;;;; '-;;;;
// ~ priceless artwork by SeaSide420