
Двойная равнолинейная стратегия - это количественная торговая стратегия, которая более типично отслеживает тенденции. Эта стратегия определяет позиции, рассчитывая простые движущиеся средние за разные периоды и устанавливая торговый сигнал в качестве ценового движущегося среднего.
Основная логика стратегии “двойного прорыва”Использование движущихся средних разных циклов, чтобы захватить тенденции цены и дать торговый сигнал, когда цена переходит через движущуюся среднюю。
В частности, в этой стратегии используются 20-дневные простые и 60-дневные простые движущиеся средние. Эти движущиеся средние можно рассматривать как инструменты для захвата краткосрочных и среднесрочных тенденций соответственно. Когда краткосрочные цены превышают среднесрочные цены, это означает, что они в настоящее время находятся в тенденции к росту, следует делать больше; когда краткосрочные цены превышают среднесрочные цены, что означает, что они в настоящее время находятся в тенденции к снижению, следует сократить позиции.
В коде принятоta.crossoverиta.crossunderДля определения того, будет ли цена преодолевать или опускаться ниже определенного скользящего среднего значения. Когда происходит прорыв, высылаются указания на увеличение или уменьшение позиции.
Стратегия двойного прорыва имеет следующие преимущества:
Однако есть и другие риски, связанные с двусторонним прорывом:
Стратегия двухуровневого прорыва может быть оптимизирована в следующих аспектах:
Стратегия двойного равномерного прорыва - это простая и практичная стратегия отслеживания тенденций. Она позволяет эффективно улавливать среднесрочные и долгосрочные тенденции, избегая помех от шума рынка в краткосрочной перспективе.
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 4h
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/
// © Astorhsu
//@version=5
strategy("Astor SMA20/60", overlay=true)
backtest_year = input(2018, title='backtest_year') //回測開始年分
backtest_month = input.int(01, title='backtest_month', minval=1, maxval=12) //回測開始月份
backtest_day = input.int(01, title='backtest_day', minval=1, maxval=31) //回測開始日期
start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00) //回測開始的時間函數
//Indicators
sma10 = ta.sma(close,10)
sma20 = ta.sma(close,20)
sma60 = ta.sma(close,60)
plot(sma20, color=color.green, title="sma(20)")
plot(sma60, color=color.red, title="sma(60)")
//進場條件
// trend1 = sma60 > sma20 //假設目前趨勢為60>20
longCondition = ta.crossover(close, ta.sma(close, 20))
if (longCondition)
strategy.entry("open long20", strategy.long, qty=1, comment="站上m20做多")
shortCondition = ta.crossunder(close, ta.sma(close, 20))
if (shortCondition)
strategy.close("open long20",comment="跌破m20平倉", qty=1)
longCondition1 = ta.crossover(close, ta.sma(close, 60))
if (longCondition1)
strategy.entry("open long60", strategy.long, qty=1, comment="站上m60做多")
shortCondition1 = ta.crossunder(close, ta.sma(close, 60))
if (shortCondition1)
strategy.close("open long60",comment="跌破m60平倉", qty=1)
// longCondition2 = ta.crossover(close, ta.sma(close, 10))
// if (longCondition2)
// strategy.entry("open long10", strategy.long, qty=1, comment="站上m10做多")
// shortCondition2 = ta.crossunder(close, ta.sma(close, 10))
// if (shortCondition2)
// strategy.close("open long10",comment="跌破m10平倉", qty=1)