이 전략은 암호화폐 시장에 적합한 높은/저준위 전략이다. MACD, PSAR, ATR, Elliott Wave 및 1시간, 4시간 또는 1일과 같은 더 높은 시간 프레임에서 거래하기 위한 다른 여러 지표를 통합한다. 이 전략의 장점은 1.5에서 2.5 사이의 평균 이익 인수와 높은 위험 보상 비율에 있다.
이 전략의 거래 신호는 가격 높고 낮은 수준과 여러 지표의 복합 판단에서 나옵니다. 구체적인 논리는 다음과 같습니다.
가격 차트에서 순차적으로 높은 최고 또는 낮은 최저로 형성된 높은/저 낮은 레벨 범위가 있는지 판단하십시오.
MACD의 히스토그램 레벨을 확인하세요.
트렌드 방향에 대한 PSAR 표시기를 확인합니다.
ATR와 MA를 기준으로 트렌드 방향을 확인합니다.
엘리엇 파동 지표로 트렌드 방향을 확인해
만약 모든 5가지 조건이 같은 방향으로 향한다면, 긴 신호나 짧은 신호가 생성됩니다.
위험과 보상 비율이 1:30까지 높습니다.
높은 평균 수익률, 보통 1.5-2.5 사이
여러 가지 지표의 조합은 거짓 유출을 효과적으로 필터링하는 데 도움이 됩니다.
상대적으로 낮은 승률 10%~20% 정도입니다.
잠재적인 철수 및 윙사 위험은 존재합니다.
시장제도에 따라 지표 성능이 영향을 받을 수 있습니다.
정신적으로 견딜 수 있어야 합니다.
대응 대책:
자본을 늘려서 이득율을 균형 잡아야 합니다.
각 거래에 엄격한 스톱 로스를 설정합니다.
다른 시장에 따라 매개 변수를 조정합니다.
심리학을 강화하고 위치 크기를 제어합니다.
다른 암호화폐와 시장에 기반한 테스트 매개 변수
금전 관리를 최적화하기 위해 스톱 로스를 추가하고 이윤을 취합니다.
머신러닝 방법을 통해 승률을 높여
트레이딩 신호에 대한 사회적 감정 필터를 추가합니다.
여러 시간 프레임에서 확인을 고려하십시오.
결론적으로, 이것은 공격적인 고위험 고수익 암호화폐 거래 전략이다. 이 전략의 장점은 높은 위험 보상 비율과 수익 요인이다. 주요 위험은 강력한 심리학을 필요로하는 상대적으로 낮은 승률에서 비롯된다. 미래의 최적화 방향은 매개 변수 조정, 돈 관리, 승률 증가 등이 될 수 있다. 전반적으로 이 전략은 높은 수익을 추구하는 암호화폐 거래자에게 실용적인 가치를 가지고 있다.
/*backtest start: 2023-12-21 00:00:00 end: 2023-12-28 00:00:00 period: 45m basePeriod: 5m 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/ // © SoftKill21 //@version=4 strategy("Crypto strategy high/low", overlay=true) fast_length = input(title="Fast Length", type=input.integer, defval=12) slow_length = input(title="Slow Length", type=input.integer, defval=26) src = input(title="Source", type=input.source, defval=close) signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9) sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=true) sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false) //sar start = input(0.02) increment = input(0.02) maximum = input(0.2) var bool uptrend = na var float EP = na var float SAR = na var float AF = start var float nextBarSAR = na if bar_index > 0 firstTrendBar = false SAR := nextBarSAR if bar_index == 1 float prevSAR = na float prevEP = na lowPrev = low[1] highPrev = high[1] closeCur = close closePrev = close[1] if closeCur > closePrev uptrend := true EP := high prevSAR := lowPrev prevEP := high else uptrend := false EP := low prevSAR := highPrev prevEP := low firstTrendBar := true SAR := prevSAR + start * (prevEP - prevSAR) if uptrend if SAR > low firstTrendBar := true uptrend := false SAR := max(EP, high) EP := low AF := start else if SAR < high firstTrendBar := true uptrend := true SAR := min(EP, low) EP := high AF := start if not firstTrendBar if uptrend if high > EP EP := high AF := min(AF + increment, maximum) else if low < EP EP := low AF := min(AF + increment, maximum) if uptrend SAR := min(SAR, low[1]) if bar_index > 1 SAR := min(SAR, low[2]) else SAR := max(SAR, high[1]) if bar_index > 1 SAR := max(SAR, high[2]) nextBarSAR := SAR + AF * (EP - SAR) // Calculating fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length) slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length) hist = macd - signal CCI = input(20) ATR = input(5) Multiplier=input(1,title='ATR Multiplier') original=input(true,title='original coloring') thisCCI = cci(close, CCI) lastCCI = nz(thisCCI[1]) bufferDn= high + Multiplier * sma(tr,ATR) bufferUp= low - Multiplier * sma(tr,ATR) if (thisCCI >= 0 and lastCCI < 0) bufferUp := bufferDn[1] if (thisCCI <= 0 and lastCCI > 0) bufferDn := bufferUp[1] if (thisCCI >= 0) if (bufferUp < bufferUp[1]) bufferUp := bufferUp[1] else if (thisCCI <= 0) if (bufferDn > bufferDn[1]) bufferDn := bufferDn[1] x=0.0 x:=thisCCI >= 0 ?bufferUp:thisCCI <= 0 ?bufferDn:x[1] swap=0.0 swap:=x>x[1]?1:x<x[1]?-1:swap[1] swap2=swap==1?color.lime:color.red swap3=thisCCI >=0 ?color.lime:color.red swap4=original?swap3:swap2 //elliot wave srce = input(close, title="source") sma1length = input(5) sma2length = input(35) UsePercent = input(title="Show Dif as percent of current Candle", type=input.bool, defval=true) smadif=iff(UsePercent,(sma(srce, sma1length) - sma(srce, sma2length)) / srce * 100, sma(srce, sma1length) - sma(srce, sma2length)) col=smadif <= 0 ? color.red : color.green longC = high > high[1] and high[1] > high[2] and close[2] > high[3] and hist > 0 and uptrend and smadif < 0 and swap4==color.lime //longC = high > high[1] and high[1] > high[2] and high[2] > high[3] and high[3] > high[4] and close[4] > high[5] shortC = low < low[1] and low[1] < low[2] and close[2] < low[3] and hist < 0 and not uptrend and smadif > 0 and swap4==color.red //shortC = low < low[1] and low[1] < low[2] and low[2] < low[3] and low[3] < low[4] and close[4] < low[5] tp=input(0.15, title="tp") sl=input(0.005, title="sl") strategy.entry("long",1,when=longC) strategy.entry("short",0,when=shortC) strategy.exit("x_long", "long" ,loss = close * sl / syminfo.mintick, profit = close * tp / syminfo.mintick , alert_message = "closelong") //strategy.entry("short",0, when= loss = close * sl / syminfo.mintick) strategy.exit("x_short", "short" , loss = close * sl / syminfo.mintick, profit = close * tp / syminfo.mintick,alert_message = "closeshort") //strategy.entry("long",1, when = loss = close * sl / syminfo.mintick) //strategy.close("long",when= hist < 0) //strategy.close("short", when= hist > 0)