
이 전략은 간단한 이동 평균의 황금 포크 도매 원칙에 기초하여 7일 평균선과 14일 평균선의 교차로 매매 결정을 내립니다. 7일 평균선이 하향에서 14일 평균선을 돌파할 때 구매 신호를 냅니다. 7일 평균선이 상향에서 14일 평균선을 돌파할 때 판매 신호를 냅니다. 이 전략은 수익을 잠금하고 위험을 제어하기 위해 중지, 중지 및 추적 중지 기능을 동시에 갖추고 있습니다.
이 전략의 거래 핵심 논리는 7일 평균선과 14일 평균선의 교차 원칙에 기초한다. 7일 평균선 반응 가격의 단기 경향, 14일 평균선 반응 가격의 중기 경향. 단기 평균선이 하향에서 중기 평균선을 돌파할 때, 단기 평균선이 더 강해지는 것을 나타내고, 이는 다단위 포지션을 구축하는 좋은 시간이다. 반대로, 단기 평균선이 상향에서 하향으로 중기 평균선을 돌파할 때, 단기 경향이 약해지는 것을 나타내고, 매매를 청산하거나 공석 포지션을 구축해야 한다.
구체적으로, 이 전략은 SMA 지표를 통해 7일과 14일의 간단한 이동 평균을 계산한다. 각 K 라인이 형성된 후, 현재 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)