この戦略は仮想通貨市場に適した高/低レベルの戦略である.MACD,PSAR,ATR,エリオット・ウェーブなどの複数の指標を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)