Esta estratégia adota o cruzamento da média móvel de 20 dias e da média móvel de 60 dias para gerar sinais de negociação. Ele vai longo quando o preço quebra acima da MA de 20 dias e fecha a posição quando o preço quebra abaixo da MA de 20 dias. Da mesma forma, ele forma sinais de negociação quando o preço cruza a MA de 60 dias. Esta estratégia pertence a um sistema típico de tendência.
As regras acima definem os sinais de negociação e lógica para esta estratégia. Quando o preço cruza a linha MA, mostra que uma nova tendência está emergindo e podemos seguir a tendência para ir longo. Quando o preço cai abaixo da linha MA, mostra que a tendência está terminando, então fechamos a posição.
Soluções de riscos:
Esta é uma estratégia típica de cruzamento de média móvel dupla. A ideia central é seguir as tendências estabelecendo posição quando o preço cruza a linha MA. A estratégia é simples e prática de implementar. Enquanto isso, há espaço para otimização adicional, por ajuste de parâmetros, stop loss, dimensionamento de posição etc. para alcançar melhores resultados.
/*backtest start: 2022-12-01 00:00:00 end: 2023-12-07 00:00:00 period: 1d basePeriod: 1h 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 TW", overlay=true, margin_long=100, margin_short=100) 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 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)") //進場條件 longCondition = ta.crossover(close, ta.sma(close, 20)) if (longCondition) and time >= start_time strategy.entry("open long20", strategy.long, qty=1, comment="站上m20做多") shortCondition = ta.crossunder(close, ta.sma(close, 20)) if (shortCondition) and time >= start_time strategy.close("open long20",comment="跌破m20平倉", qty=1) longCondition1 = ta.crossover(close, ta.sma(close, 60)) if (longCondition1) and time >= start_time strategy.entry("open long60", strategy.long, qty=1, comment="站上m60做多") shortCondition1 = ta.crossunder(close, ta.sma(close, 60)) if (shortCondition1) and time >= start_time strategy.close("open long60",comment="跌破m60平倉", qty=1)