이것은 이중 취득, 이중 스톱 손실 및 후속 스톱 손실에 기반한 비트코인 양적 거래 전략이다. EMA와 WMA 크로스오버를 입구 신호로 사용하고, 이중 취득 및 이중 스톱 손실 위험 관리 방법론을 채택하고, 첫 번째 취득이 달성 된 후 후속 스톱 손실을 적용하여 더 큰 이익을 추구하면서 부분적 이익을 잠금합니다.
EMA가 WMA를 밑에서 넘어서면 긴 입문, WMA를 위로부터 넘어서면 짧은 입문
이윤 측면에서는 이윤을 취하는 두 가지 목표가 있습니다. 첫 번째 이윤은 입시 가격보다 20 pips 높고 두 번째 이윤은 입시 가격보다 40 pips 높습니다.
스톱 로스 측면에서는 두 개의 스톱 로스도 있습니다. 첫 번째 스톱 로스는 엔트리 가격보다 20 피프 아래로 설정되며 두 번째 스톱 로스는 엔트리 가격 자체로 설정됩니다.
첫 번째 영업이익이 발생하면, 지점의 50%가 닫히고, 영업이익을 확보하기 위해 엔트리 가격에 Stop Loss을 추적하고, 두 번째 영업이익 목표에서 더 큰 수익을 추구합니다.
따라서 각 거래에 대해 세 가지 가능한 결과가 있을 수 있습니다.
이 전략의 가장 큰 장점은 위험 관리 방법론에 있다. 이중 취득 이익과 이중 중지 손실을 설정함으로써, 첫 번째 취득 이익이 달성 된 후 부분 수익을 잠금 할 수 있으며, 더 큰 이익을 계속 추구 할 수 있습니다. 이것은 수익성을 크게 향상시킬 수 있습니다.
또 다른 장점은 하나의 거래를 가능한 3가지 결과로 나누는 것으로 최대 손실의 확률을 낮추고 전체 수익을 더 일관되게 한다는 것입니다. 일반적인 전략은 두 가지 결과만을 가지고 있습니다. 또는 2%의 스톱 손실을 달성하거나 2% 이상의 이득을 얻습니다. 이 전략은 3 가지 결과를 가지고 있습니다.
이 전략의 주요 위험은 스톱 로스 설정에서 비롯된다. 스톱 로스 거리가 너무 넓다면, 그것은 과대 한 단일 거래 손실로 이어질 수 있다. 스톱 로스 거리가 너무 좁으면, 시장 소음으로 인해 조기에 중단 될 수 있다. 적절한 스톱 로스 거리는 다른 거래 도구의 특성 및 변동성에 따라 설정되어야 한다.
또 다른 위험은 첫 번째 취득 후 남은 위치가 여전히 손실 위험을 초래한다는 것입니다. 후속 손실이 첫 번째 취득을 초과하면 실현 된 이익의 일부 또는 전부를 상쇄합니다. 이것은 잠금 된 이익을 보호하기 위해 정지 손실을 엄격히 추적하여 해결해야합니다.
다음 영역은 전략에 최적화 될 수 있습니다:
최적의 매개 변수를 찾기 위해 다른 매개 변수 조합을 테스트하십시오. 예를 들어 15 pips, 25 pips를 테스트하고 수익 / 스톱 손실 거리를 취하십시오.
KDJ, MACD 크로스오버와 같은 입력 신호를 위한 다른 기술 지표 조합을 시도하십시오.
첫 번째 수익을 취하면 포지션의 비율을 최적화합니다. 예를 들어 50%가 최적이 아닐 수도 있습니다. 30% 또는 70%는 잠재적으로 더 나은 성과를 낼 수 있습니다.
수익에 잠금 균형을 맞추고 가격에 충분한 변동 공간을 제공하기 위해 후속 스톱 손실 속도를 위해 다른 설정을 테스트합니다.
결론적으로, 이것은 전체적으로 견고한 전략이며, 이중 취득, 이중 스톱 손실 및 후속 스톱 손실 메커니즘을 통해 수익성을 크게 향상시키고 꼬리 위험을 줄일 수 있습니다. 또한 더 나은 성능을 달성하기 위해 매개 변수 조정 및 기술 지표 엔지니어링을 통해 최적화 할 수있는 충분한 공간이 있습니다. 높고 안정적인 투자 수익을 추구하는 투자자에게 적합합니다.
/*backtest start: 2024-01-11 00:00:00 end: 2024-01-18 00:00:00 period: 45m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("SL1 Pips after TP1 (MA)", commission_type=strategy.commission.cash_per_order, overlay=true) // Strategy Buy = input(true) Sell = input(true) // Date Range start_year = input(title='Start year' ,defval=2020) start_month = input(title='Start month' ,defval=1) start_day = input(title='Start day' ,defval=1) start_hour = input(title='Start hour' ,defval=0) start_minute = input(title='Start minute' ,defval=0) end_time = input(title='set end time?',defval=false) end_year = input(title='end year' ,defval=2019) end_month = input(title='end month' ,defval=12) end_day = input(title='end day' ,defval=31) end_hour = input(title='end hour' ,defval=23) end_minute = input(title='end minute' ,defval=59) // MA ema_period = input(title='EMA period',defval=10) wma_period = input(title='WMA period',defval=20) ema = ema(close,ema_period) wma = wma(close,wma_period) // Entry Condition buy = crossover(ema,wma) and nz(strategy.position_size) == 0 and Buy sell = crossunder(ema,wma) and nz(strategy.position_size) == 0 and Sell // Pips pip = input(20)*10*syminfo.mintick // Trading parameters // var bool LS = na var bool SS = na var float EP = na var float TVL = na var float TVS = na var float TSL = na var float TSS = na var float TP1 = na var float TP2 = na var float SL1 = na var float SL2 = na if buy or sell and strategy.position_size == 0 EP := close SL1 := EP - pip * (sell?-1:1) SL2 := EP - pip * (sell?-1:1) TP1 := EP + pip * (sell?-1:1) TP2 := EP + pip * 2 * (sell?-1:1) // current trade direction LS := buy or strategy.position_size > 0 SS := sell or strategy.position_size < 0 // adjust trade parameters and trailing stop calculations TVL := max(TP1,open) - pip[1] TVS := min(TP1,open) + pip[1] TSL := open[1] > TSL[1] ? max(TVL,TSL[1]):TVL TSS := open[1] < TSS[1] ? min(TVS,TSS[1]):TVS if LS and high > TP1 if open <= TP1 SL2:=min(EP,TSL) if SS and low < TP1 if open >= TP1 SL2:=max(EP,TSS) // Closing conditions close_long = LS and open < SL2 close_short = SS and open > SL2 // Buy strategy.entry("buy" , strategy.long, when=buy and not SS) strategy.exit ("exit1", from_entry="buy", stop=SL1, limit=TP1, qty_percent=1) strategy.exit ("exit2", from_entry="buy", stop=SL2, limit=TP2) // Sell strategy.entry("sell" , strategy.short, when=sell and not LS) strategy.exit ("exit3", from_entry="sell", stop=SL1, limit=TP1, qty_percent=1) strategy.exit ("exit4", from_entry="sell", stop=SL2, limit=TP2) // Plots a=plot(strategy.position_size > 0 ? SL1 : na, color=#dc143c, style=plot.style_linebr) b=plot(strategy.position_size < 0 ? SL1 : na, color=#dc143c, style=plot.style_linebr) c=plot(strategy.position_size > 0 ? TP1 : na, color=#00ced1, style=plot.style_linebr) d=plot(strategy.position_size < 0 ? TP1 : na, color=#00ced1, style=plot.style_linebr) e=plot(strategy.position_size > 0 ? TP2 : na, color=#00ced1, style=plot.style_linebr) f=plot(strategy.position_size < 0 ? TP2 : na, color=#00ced1, style=plot.style_linebr) g=plot(strategy.position_size >= 0 ? na : EP, color=#ffffff, style=plot.style_linebr) h=plot(strategy.position_size <= 0 ? na : EP, color=#ffffff, style=plot.style_linebr) plot(ema,title="ema",color=#fff176) plot(wma,title="wma",color=#00ced1)