Стратегия торговли на прорыве канала скользящей средней


Дата создания: 2024-01-29 14:31:25 Последнее изменение: 2024-01-29 14:31:25
Копировать: 0 Количество просмотров: 631
1
Подписаться
1617
Подписчики

Стратегия торговли на прорыве канала скользящей средней

Обзор

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

Стратегический принцип

Основная логика торговли этой стратегии основана на принципе перекрестности 7-дневного и 14-дневного средних линий. 7-дневная средняя линия - это краткосрочный тренд, а 14-дневная средняя линия - это среднесрочный тренд.

В частности, стратегия рассчитывает простые движущиеся средние на 7 и 14 день с помощью индикатора SMA. После формирования каждой K-линии сравнивается текущая 7-я линия и 14-я линия. Если 7-я линия проходит 14-ю линию, то появляется многосигнал, входящий в длинную позицию; если 7-я линия проходит 14-ю линию, то появляется пустой сигнал, входящий в короткую позицию.

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

Стратегические преимущества

Эта стратегия имеет следующие преимущества:

  1. Правила простые, понятные, легко понятные и подходят для начинающих;
  2. Принцип равнолинейного пересечения работает эффективно, и выигрыш выше;
  3. с возможностью эффективного контроля риска с помощью остановки, блокировки и отслеживания потерь;
  4. Меньшие параметры, удобство тестирования и оптимизации.

Риски и противодействие

Однако эта стратегия также несет в себе некоторые риски:

  1. При переходе в тренд сигнал пересечения равной линии задерживается и не может вовремя отреагировать на изменение тренда, что может привести к большим убыткам;
  2. При серьезном поперечном рынке часто встречаются пересекающиеся сигналы, которые могут привести к появлению большего количества ложных сигналов, влияющих на эффективность стратегии.

В ответ на вышеуказанные риски можно рассмотреть следующие меры:

  1. в сочетании с другими индикаторами фильтрации равномерного перекрестного сигнала, такие как MACD, KDJ и т. д., чтобы избежать ошибочного сигнала в точке поворота тенденции;
  2. Увеличение стоп-лосс, сокращение периода удержания позиций, чтобы снизить влияние одиночных убытков;
  3. Оптимизация параметров средней линии в соответствии с различными рыночными условиями, соответствующее увеличение цикла средней линии на горизонтальном рынке, уменьшение частоты перекрестных сигналов.

Направление оптимизации

Эта стратегия может быть оптимизирована в следующих направлениях:

  1. тестирование различных комбинаций и параметров равномерности для определения оптимальных параметров;
  2. Добавление других показателей для фильтрации сигналов, повышающих эффективность стратегии;
  3. оптимизация параметров стоп-стоп, снижение отступлений и повышение доходности;
  4. В зависимости от разных сортов и периодов торгов параметры могут быть изменены.

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © bensonsuntw

strategy("Strategy Template[Benson]", pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

backtest_year = input(2019, type=input.integer, title='backtest_year')
backtest_month = input(01, type=input.integer, title='backtest_month', minval=1, maxval=12)
backtest_day = input(01, type=input.integer, title='backtest_day', minval=1, maxval=31)
start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00)
stop_loss_and_tp = input(title="Enable Stop Loss and Take Profit", type=input.bool, defval=true)
trail_stop = input(title="Enable Trail Stop", type=input.bool, defval=true)
buy_stop_loss = input(0.2, type=input.float, title='buy_stop_loss')
sell_stop_loss = input(0.1, type=input.float, title='sell_stop_loss')
buy_tp = input(0.4, type=input.float, title='buy_tp')
sell_tp =input(0.2, type=input.float, title='sell_tp')
trail_stop_long = input(1.1, type=input.float, title='trail_stop_long')
trail_stop_short = input(0.9, type=input.float, title='trail_stop_short')
trail_stop_long_offset = input(0.05, type=input.float, title='trail_stop_long_offset')
trail_stop_short_offset = input(0.05, type=input.float, title='trail_stop_short_offset')


// you can set your own logic here
shortCondition = crossunder(sma(close,7),sma(close,14))
longCondition = crossover(sma(close,7),sma(close,14))

strategy.entry("Buy", strategy.long, when=longCondition  )
strategy.close("Buy", when=shortCondition)
strategy.exit("Close Buy","Buy", limit= stop_loss_and_tp?strategy.position_avg_price * (1+buy_tp):na, stop = stop_loss_and_tp?strategy.position_avg_price * (1-buy_stop_loss):na,trail_price=trail_stop?strategy.position_avg_price *trail_stop_long:na,trail_offset=trail_stop?-strategy.position_avg_price *trail_stop_long_offset:na)

strategy.entry("Sell", strategy.short, when=shortCondition)
strategy.close("Sell", when=longCondition)
strategy.exit("Close Sell","Sell", limit= stop_loss_and_tp?strategy.position_avg_price * (1-sell_tp):na, stop = stop_loss_and_tp?strategy.position_avg_price * (1+sell_stop_loss):na,trail_price=trail_stop?strategy.position_avg_price *trail_stop_short:na,trail_offset=trail_stop?strategy.position_avg_price *trail_stop_short_offset:na)


net_profit = strategy.netprofit + strategy.openprofit

plot(net_profit, title="Net Profit", linewidth=2, style=plot.style_area, transp=50, color=net_profit >= 0 ? #26A69A : color.red)