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

Автор:Чао Чжан, Дата: 2024-01-29 14:31:25
Тэги:

img

Обзор

Эта стратегия основана на принципах "золотого креста" и "смертного креста" простых скользящих средних, принимая решения о покупке и продаже на основе перекрестки 7-дневных и 14-дневных скользящих средних.

Логика стратегии

Основная логика торговли этой стратегии основана на принципах перекрестки 7-дневных и 14-дневных скользящих средних. 7-дневный MA отражает краткосрочные ценовые тенденции, в то время как 14-дневный MA отражает среднесрочные тенденции. Когда краткосрочный MA переходит выше среднесрочного MA снизу, это сигнализирует о том, что краткосрочный тренд укрепляется, что делает его хорошим временем для длинного.

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

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

Преимущества

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

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

Риски и контрмеры

Эта стратегия также сопряжена с некоторыми рисками:

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

Для устранения этих рисков можно рассмотреть следующие контрмеры:

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

Руководство по оптимизации

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

  1. Испытать различные комбинации и параметры MA для определения оптимальной настройки.
  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)






Больше