多サイクル適応傾向予測戦略

作者: リン・ハーンチャオチャン,日付: 2024-02-01 14:34:38
タグ:

img

概要

この戦略は,多サイクル適応移動平均値とジグザグリスク評価指標を,市場運用における段階的なポイントと組み合わせて,トレンドと出力取引信号を予測するために使用する.戦略名は"多サイクル適応トレンド予測戦略"である.

戦略原則

戦略のコアロジックは2つの主要線に分かれています.最初の主要線は,多サイクルフィルタリング判断システムを構築するために異なるパラメータを持つ適応移動平均 nAMAを使用します.第2の主要線は,多サイクルリスク評価システムを構築するために異なるパラメータを持つジグザグリスク評価システムを利用します.最後に,2つの主要線が組み合わせられます.短サイクル線が長サイクル線を超えると,購入信号が生成されます.短サイクル線が長サイクル線以下になると,販売信号が生成されます.

具体的には,最初のメインラインはそれぞれ10サイクルと4,24パラメータの適応移動平均を設定する.第2のメインラインはそれぞれ7サイクルと4,300パラメータのジグザックリスク評価ラインを設定する.最後に,最初のメインラインの10サイクルラインは第2のメインラインの31サイクルラインと比較して取引信号を形成する.10サイクルラインが31サイクルラインの上に上昇すると,購入信号が生成される.10サイクルラインが31サイクルラインを下回ると,販売信号が生成される.

また,この戦略は,ボリューム価格確認モジュールも設定している.取引量は6サイクル平均取引量よりも大きい場合にのみ取引シグナルが有効である.これは誤ったシグナルを一定程度にフィルタリングすることができる.最後に,戦略は,異なるサイクルレベルの段階的なポイントを参照信号として描く.

戦略上の利点の分析

この戦略の最大の利点は,多サイクル適応構造の適用であり,市場状況に応じてサイクルを適応的に調整し,サイクルを動的に調整することができる.トレンドセクションやショックエリアでは,戦略のトレンドフォローする能力を向上させるために適切なサイクルパラメータの組み合わせを見つけることができます.

さらに,この戦略は,取引リスクを効果的に制御し,高リスク期間のポジションの確立を避けるために,ジグザグリスク評価システムの多サイクル共同フィルタリングを使用しています.同時に,この戦略は,ボリューム有効化が不十分であるときに間違った信号を生成しないように,ボリューム価格フィルタリング条件も設定しています.

戦略リスクの分析

この戦略の最大のリスクは,複数のサイクルラインの同じ方向判断を必要とするため,短期的な逆転市場を捕捉する能力は低いことである.短期サイクルラインと長期サイクルラインが同時に変化すると,不明確な信号が容易に生成される.パラメータサイクルは最適化のために短縮することができる.

さらに,適応型移動平均値とジグザグリスク評価システムの主要サイクル段階は,より広範な市場と比較して比較的短く,より長いレベルの推進により一定の遅れがあります.遅延を減らすために,主なサイクル段階を適切に延長することができます.

戦略の最適化方向

  1. 適応型移動平均値とジグザグリスク評価ラインの主要なサイクルのパラメータを 5サイクルと 20サイクルに短縮し,短期的な市場逆転の把握を拡大する.

  2. 主要サイクルのパラメータを20サイクルと50サイクルに増やし,より長いレベル市場のドライバーの下での遅れを減らす.

  3. トレーディングチャネルのパラメータを0,5倍に最適化して,騒々しい取引の可能性を減らす.

  4. 信号の信頼性を向上させるため,MACDなどの結果検証指標を追加します.

概要

この戦略は,適応型移動平均値,ジグザグリスク評価,およびボリューム価格分析などの複数の技術指標を包括的に利用し,多サイクル適応型取引決定システムを構築する.パラメータの最適化と調整を通じて,さまざまなタイプの市場に適用され,トレンドと範囲を自動的に特定することができます.戦略論理は明確で,掘り下げることは価値があります.これは推奨される量子方法です.


/*backtest
start: 2023-01-25 00:00:00
end: 2024-01-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Best Rabbit Strategy", shorttitle="Rabbit God",overlay=true)
Length = input(10, minval=1)
xPrice = close
xvnoise = abs(xPrice - xPrice[1])
Fastend = input(2)
Slowend = input(30)
nfastend = 2/(Fastend + 1)
nslowend = 2/(Slowend + 1)
nsignal = abs(xPrice - xPrice[Length])
nnoise = sum(xvnoise, Length)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
nAMA = nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1]))

Length2 = input(10, minval=1)
xPrice2 = close
xvnoise2 = abs(xPrice2 - xPrice2[1])
Fastend2 = input(4)
Slowend2 = input(24)
nfastend2 = 2/(Fastend2 + 1)
nslowend2 = 2/(Slowend2 + 1)
nsignal2 = abs(xPrice2 - xPrice2[Length2])
nnoise2 = sum(xvnoise, Length2)
nefratio2 = iff(nnoise2 != 0, nsignal2 / nnoise2, 0)
nsmooth2 = pow(nefratio2 * (nfastend2 - nslowend2) + nslowend2, 2) 
nAMA2 = nz(nAMA2[1]) + nsmooth2 * (xPrice2 - nz(nAMA2[1]))

price = input(hl2)
len = input(defval=7,minval=1)
FC = input(defval=4,minval=1)
SC = input(defval=300,minval=1)
len1 = len/2
w = log(2/(SC+1))
H1 = highest(high,len1)
L1 = lowest(low,len1)
N1 = (H1-L1)/len1
H2 = highest(high,len)[len1]
L2 = lowest(low,len)[len1]
N2 = (H2-L2)/len1
H3 = highest(high,len)
L3 = lowest(low,len)
N3 = (H3-L3)/len
dimen1 = (log(N1+N2)-log(N3))/log(2)
dimen = iff(N1>0 and N2>0 and N3>0,dimen1,nz(dimen1[1]))
alpha1 = exp(w*(dimen-1))
oldalpha = alpha1>1?1:(alpha1<0.01?0.01:alpha1)
oldN = (2-oldalpha)/oldalpha
N = (((SC-FC)*(oldN-1))/(SC-1))+FC
alpha_ = 2/(N+1)
alpha = alpha_<2/(SC+1)?2/(SC+1):(alpha_>1?1:alpha_)
out = (1-alpha)*nz(out[1]) + alpha*price

price2 = input(hl2)
len2 = input(defval=31,minval=1)
FC2 = input(defval=40,minval=1)
SC2 = input(defval=300,minval=1)
len12 = len2/2
w2 = log(2/(SC2+1))
H12 = highest(high,len12)
L12 = lowest(low,len12)
N12 = (H1-L1)/len12
H22 = highest(high,len2)[len12]
L22 = lowest(low,len2)[len12]
N22 = (H22-L22)/len12
H32 = highest(high,len2)
L32 = lowest(low,len2)
N32 = (H32-L32)/len2
dimen12 = (log(N12+N22)-log(N32))/log(2)
dimen2 = iff(N12>0 and N22>0 and N32>0,dimen12,nz(dimen12[1]))
alpha12 = exp(w*(dimen2-1))
oldalpha2 = alpha12>1?1:(alpha12<0.01?0.01:alpha12)
oldN2 = (2-oldalpha2)/oldalpha2
N4 = (((SC2-FC2)*(oldN2-1))/(SC2-1))+FC2
alpha_2 = 2/(N4+1)
alpha2 = alpha_2<2/(SC2+1)?2/(SC2+1):(alpha_2>1?1:alpha_2)
out2 = (1-alpha2)*nz(out2[1]) + alpha2*price2

tf = input(title="Resolution",  defval = "current")
vamp = input(title="VolumeMA",  defval=6)
vam = sma(volume, vamp)

up = high[3]>high[4] and high[4]>high[5] and high[2]<high[3] and high[1]<high[2] and volume[3]>vam[3]
down = low[3]<low[4] and low[4]<low[5] and low[2]>low[3] and low[1]>low[2] and volume[3]>vam[3]
fractalup =  up ? high[3] : fractalup[1] 
fractaldown = down ? low[3] : fractaldown[1]

fuptf = request.security(syminfo.tickerid,tf == "current" ? timeframe.period : tf, fractalup)
fdowntf = request.security(syminfo.tickerid,tf == "current" ? timeframe.period : tf, fractaldown)

plot(fuptf, "FractalUp", color=lime, linewidth=1, style=cross, transp=0, offset =-3, join=false)
plot(fdowntf, "FractalDown", color=red, linewidth=1, style=cross, transp=0, offset=-3, join=false)

buyEntry= nAMA[0]>nAMA2[0] and out[0]>out2[0]
sellEntry= nAMA[0]<nAMA2[0] and out[0]<out2[0]

if (buyEntry)
    strategy.entry("Buy", strategy.long, comment="Long Position Entry")


if (sellEntry)
    strategy.entry("Sell", strategy.short, comment="Short Position Entry")

もっと