ストキャスティクスオシレーター戦略


作成日: 2023-11-06 09:30:27 最終変更日: 2023-11-06 09:30:27
コピー: 1 クリック数: 575
1
フォロー
1621
フォロワー

ストキャスティクスオシレーター戦略

概要

ランダムな振動戦略は,平均線交差,MACD指標,ハル移動平均などの複数の技術指標を組み合わせ,科学的で体系的な取引意思決定システムを形成します. この戦略は,振動状況でトレンド転換点を捕捉し,状況の潜在的な機会を発見し,捕捉することに専念しています.

戦略原則

まず,この戦略は,同時に送られた転換線と基準線の指数を使用する. 転換線は,9周期間の最高価格と最低価格の平均を計算し,基準線は24周期間の最高価格と最低価格の平均を計算する. 価格が基準線の上から下を通るときは,買入シグナル; 基準線上から下を通るときは,売出シグナルである.

次に,MACDは,重要なトレンド追跡指標として,この戦略によっても採用されている.MACDは,短期エマ (12日) と長期エマ (24日) の差値を計算し,信号線を計算し,9日エマ).MACDが信号線を下から上へと渡るときは,買入信号;上から下へと渡るときは,売出信号である.

さらに,Hull移動平均は,移動平均の遅れを減らすために,価格転換信号の感性を高めるために,この戦略に導入されました.その計算方法は,半周期WMAを2で掛け,完全な周期WMAを減算し,開方周期WMAを計算します.速いHull MAと遅いHull MAの交差は,補助的な買入信号として使用されます.

最後に,この戦略は,上記の複数の指標の結果を統合し,より信頼性の高い取引意思決定システムを形成します. 一つの株,MACD,Hull MAなどの複数の指標が同方向信号を発信するときに,実際の買入と販売の操作が生じます.

戦略的優位性

  • 複数の指標の組み合わせで,一株,MACDとHull MAの3つの指標を総合的に使用し,より強力な意思決定力を形成します.

  • 偽信号の減少,異なる指標の間の検証が可能で,単一の指標の誤判の確率を低減する.

  • 複数の指標が一致するときにのみ取引を行い,頻繁に取引を避ける.

  • 調整可能なパラメータ,指標パラメータは市場に応じて調整され,戦略の適応性を向上させることができる.

  • Hull MAは移動平均の計算を改良し,価格変化を早期に捉えるため,遅延を軽減しました.

戦略リスク

  • 戦闘機が空中に混じり合っている場合,誤った信号が発せられる可能性が高い.

  • 指標パラメータの設定が不適切であることも,戦略のパフォーマンスに影響を与えます.

  • 傾向を無視して指標の反転信号に注目しすぎると,

  • Hull MAは新しい指標で,長期的な有効性は検証される必要がある.

  • 取引の頻度が低いため,全ての機会を有効に利用できない可能性があります.

最適化の方向

  • Bollinger Bandsなどの他の指標をテストして,意思決定システムをさらに最適化できます.

  • 指数パラメータを調整して,最適なパラメータの組み合わせを見つけます.

  • 単一損失を制御するためにダイナミック・ストップ・メカニズムを導入することができる.

  • 傾向を判断する指標を組み合わせて,トレンドの機会を逃さないようにする.

  • ポジション管理の最適化,異なる市場での取引頻度とポジションの調整

要約する

ランダムな振動戦略は,多種多様な指標と技術分析の方法を総合的に適用して,振動状況で取引機会を探します.それは,指標の組み合わせの優位性,偽信号の減少,運用効率の向上などの特性を有しています.しかし,一定のリスクもあります.より広範な市場状況に適応し,リスクと利益の間の最適なバランスを見つけるために,さらなるテストと最適化が必要です.全体的に,この戦略は,信頼性の高い,実用的振動取引戦略です.

ストラテジーソースコード
/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Ichimoku Kinko Hyo + HULL-MA_X + MacD", shorttitle="@m", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=1000, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)

keh=input(title="Double HullMA",defval=12, minval=1)

n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(close[1],round(keh/2))
nma1=wma(close[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
b=n1>n2?lime:red
c=n1>n2?green:red
d=n1>n2?red:green

TenkanSenPeriods = input(9, minval=1, title="Tenkan Sen Periods")
KijunSenPeriods = input(24, minval=1, title="Kijun Sen Periods")
SenkouSpanBPeriods = input(51, minval=1, title="Senkou Span B Periods")
displacement = input(24, minval=1, title="Displacement")
donchian(len) => avg(lowest(len), highest(len))
TenkanSen = donchian(TenkanSenPeriods)
KijunSen = donchian(KijunSenPeriods)
SenkouSpanA = avg(TenkanSen, KijunSen)
SenkouSpanB = donchian(SenkouSpanBPeriods)
LS=close, offset = -displacement

MACD_Length = input(9)
MACD_fastLength = input(12)
MACD_slowLength = input(24)
MACD = ema(close, MACD_fastLength) - ema(close, MACD_slowLength)
aMACD = ema(MACD, MACD_Length)

a1=plot(n1,color=c)
a2=plot(n2,color=c)
plot(cross(n1, n2) ? n1 : na, style = circles, color=b, linewidth = 4)
plot(cross(n1, n2) ? n1 : na, style = line, color=d, linewidth = 3)
plot(TenkanSen, color=blue, title="Tenkan Sen", linewidth = 2)
plot(KijunSen, color=maroon, title="Kijun Sen", linewidth = 3)
plot(close, offset = -displacement, color=orange, title="Chikou Span", linewidth = 2)
p1=plot (SenkouSpanA, offset = displacement, color=green,  title="Senkou Span A", linewidth = 2)
p2=plot (SenkouSpanB, offset = displacement, color=red,  title="Senkou Span B", linewidth = 3)
fill(p1, p2, color = SenkouSpanA > SenkouSpanB ? green : red)

closelong = n1<n2 and close<n2 and (MACD<aMACD or TenkanSen<KijunSen or close<KijunSen)
if (closelong)
    strategy.close("Long")

closeshort = n1>n2 and close>n2 and (MACD>aMACD or TenkanSen>KijunSen or close>KijunSen)
if (closeshort)
    strategy.close("Short")

longCondition = n1>n2 and close>n2 and MACD>aMACD and (TenkanSen>KijunSen or close>KijunSen) 
if (longCondition)
    strategy.entry("Long",strategy.long)

shortCondition = n1<n2 and close<n2 and MACD<aMACD and (TenkanSen<KijunSen or close<KijunSen)
if (shortCondition)
    strategy.entry("Short",strategy.short)