이 전략은 간단한 이동 평균의 황금 십자 및 죽음의 십자 원리에 기반하고 있으며, 7 일 및 14 일 이동 평균의 교차를 기반으로 구매 및 판매 결정을 내립니다. 7 일 MA가 아래에서 14 일 MA보다 높을 때 구매 신호를 생성하고 7 일 MA가 위에서 14 일 MA보다 낮을 때 판매 신호를 생성합니다. 전략은 또한 수익을 잠금하고 위험을 제어하기 위해 스톱 로스, 수익을 취하고 후속 스톱 기능을 갖추고 있습니다.
이 전략의 핵심 거래 논리는 7 일 및 14 일 이동 평균의 교차 원칙에 기반합니다. 7 일 MA는 단기 가격 추세를 반영하고, 14 일 MA는 중장기 추세를 반영합니다. 단기 MA가 아래에서 중장기 MA보다 높을 때, 단기 MA가 강화되고 있음을 신호하며, 장기간에 걸을 수있는 좋은 시간입니다. 반대로, 단기 MA가 위에서 중장기 MA보다 낮을 때, 단기 MA가 약화되고 있음을 신호합니다. 따라서 포지션을 닫거나 단위로 가야합니다.
특히, 이 전략은 SMA 지표를 사용하여 7일 및 14일 간단한 이동 평균을 계산합니다. 각 촛불 모양이 형성된 후, 7일 라인과 14일 라인의 현재 값을 비교합니다. 7일 라인이 14일 라인의 위를 넘으면 긴 신호가 생성됩니다. 7일 라인이 14일 라인의 아래를 넘으면 짧은 신호가 생성됩니다.
또한, 전략은 또한 손해를 중지, 이익을 취하고, 수익을 잠금하고 위험을 제어하기 위해 후속 중지 기능을 설정합니다. 매개 변수는 백테스트 결과에 따라 최적화 될 수 있습니다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
이 전략에는 몇 가지 위험도 있습니다.
이러한 위험을 해결하기 위해 다음과 같은 대책이 고려될 수 있습니다.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
결론적으로,이 전략은 초보자에게 배우기 매우 적합합니다. 논리는 간단하고 이해하기 쉽고 구현하기 쉽습니다. 또한 평준화 조정 및 최적화를 위해 충분한 공간을 가지고 비교적 좋은 시장 적응력을 가지고 있습니다. 양적 거래 초보자가 시작하고 배우기 위해 사용하는 것이 가치가 있습니다.
/*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)