이 전략은 이중 이동 평균 크로스오버를 계산하여 가격 추세와 거래 기회를 판단합니다. 빠른 MA가 느린 MA보다 높을 때, 그것은 긴 걸기위한 황금 십자가로 간주됩니다. 빠른 MA가 느린 MA보다 낮을 때, 그것은 짧은 걸기위한 죽음의 십자가로 간주됩니다. 동시에 잘못된 신호를 피하기 위해 크로스오버의 신뢰성을 판단하기 위해 볼륨 지표를 결합하십시오.
이 전략의 핵심 원칙은 다음과 같습니다.
서로 다른 매개 변수를 가진 이동 평균의 두 그룹을 계산하면, 한 그룹은 가격 변화에 빠르게 반응하고 다른 그룹은 상대적으로 느리게 반응합니다. 빠른 MA가 느린 MA보다 높을 때 상승 추세를 나타냅니다. 빠른 MA가 느린 MA보다 낮을 때 하락 추세를 나타냅니다.
MAs가 교차 할 때 볼륨 지표의 변화를 확인합니다. 볼륨 지표가 또한 현저하게 깨지면 교차 신호가 신뢰할 수 있습니다. 볼륨에 대응하는 파업이 없으면 잘못된 신호일 수 있습니다.
크로스오버 방향과 볼륨 판단에 따라 긴 또는 짧은 포지션을 입력합니다. 특정 수익 수준에 도달하면 포지션을 닫기 위해 수익 기준을 설정합니다.
특히, 전략은 7 기간 이중 MAs 크로스오버를 사용하여 가격 추세를 판단합니다. 그것은 신호 신뢰성을 확인하기 위해 볼륨 지표를 사용합니다. 신뢰할 수있는 신호를 얻을 때, 신호에 따라 길거나 짧습니다. 이윤을 취하기 위해 수익 목표를 설정합니다.
이 전략의 주요 장점은 다음과 같습니다.
트렌드 방향을 결정하기 위해 이중 MA를 결합하고 잘못된 신호와 함락을 피하기 위해 볼륨 필터를 사용합니다.
부피가 확인되면 포지션을 취득하면 성공률이 높아집니다.
수익을 취하는 메커니즘을 가지고 적시에 수익을 취하고 수익을 반환하지 않도록합니다.
이 전략의 주요 위험은 다음과 같습니다.
MA 크로스오버 지연은 최고의 기회를 놓칠 수 있습니다.
부피가 변할 때 판단하기 어렵죠. 확인을 위해 더 많은 지표를 추가할 수 있습니다.
잘못된 스톱프로프트 설정은 상거래를 과도하게 하거나 승자를 너무 오래 보유하게 할 수 있습니다. 스톱프로프트 매개 변수를 테스트하고 최적화해야 합니다.
전략은 다음 측면에서 최적화 될 수 있습니다:
가격 변화의 시간에 더 반응하기 위해 MA 기간을 최적화하십시오.
부피 잘못된 신호를 피하기 위해 신호 확인을 위해 MACD, KD와 같은 더 많은 지표를 추가하십시오.
트레일 스톱, 퍼센트 스톱, 변동성 스톱과 같은 더 많은 이윤 취득 메커니즘을 통합하여 동적인 이윤 취득을 위해
단일 거래 손실 금액을 제어하기 위해 스톱 로스 메커니즘을 추가합니다.
다양한 시장 환경에 적응할 수 있는 포지션 크기를 최적화합니다.
결론적으로,이 전략의 핵심 아이디어는 트렌드 및 볼륨 필터를 위해 이중 MA 크로스오버를 사용하는 것입니다. 그것은 안정적이고 구현하기가 쉽습니다. 매개 변수, 신호 필터링, 수익 취득 및 스톱 손실에 대한 추가 최적화는 실용적인 거래에 더 신뢰할 수 있고 지능화 될 수 있습니다.
/*backtest start: 2022-12-19 00:00:00 end: 2023-12-25 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("ZendicatoR", overlay=true, calc_on_order_fills= true, calc_on_every_tick=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15, pyramiding=0) dt = input(defval=0.0010, title="Decision Threshold", type=float, step=0.0001) keh=input(title="Double HullMA Cross",defval=7, minval=1) che1=input(title="MA 1",defval=34,minval=1) che2=input(title="MA 2",defval=144,minval=1) che3=input(title="MA 3",defval=377,minval=1) amnt=input(title="TP ($)",defval=4200,minval=1) wma1=wma(close,che1) wma2=wma(close,che2) wma3=wma(close,che3) sma1=sma(close,11) tms=10000000000000 A=request.security(syminfo.tickerid, 'D', close)*tms B=request.security(syminfo.tickerid, 'D', close[1])*tms C=A>B?green:red D=wma2>wma3?green:red plot(wma1,style=line,color=C,linewidth=4) p1=plot(wma2,style=line,color=D) p2=plot(wma3,style=line,color=D) fill(p1, p2, color=D, transp=75) n2ma=2*wma(close,round(keh/2)) nma=wma(close,keh) diff=n2ma-nma,sqn=round(sqrt(keh)) n2ma1=2*wma(close[2],round(keh/2)) nma1=wma(close[2],keh) diff1=n2ma1-nma1,sqn1=round(sqrt(keh)) n1=wma(diff,sqn)*tms n2=wma(diff1,sqn)*tms Q=n1>n2?blue:yellow plot(sma1,style=line,color=Q,linewidth=4) closelong = A*tms<B*tms and n2*tms>n1*tms and strategy.openprofit>amnt if (closelong) strategy.close("Long") closeshort = A*tms>B*tms and n1*tms>n2*tms and strategy.openprofit>amnt if (closeshort) strategy.close("Short") longCondition = A*tms>B*tms and n1*tms>n2*tms if (longCondition) strategy.entry("Long",strategy.long) shortCondition = A*tms<B*tms and n1*tms<n2*tms if (shortCondition) strategy.entry("Short",strategy.short)