段階的移動平均トレンドフォロー戦略


作成日: 2023-10-26 17:08:43 最終変更日: 2023-10-26 17:08:43
コピー: 0 クリック数: 666
1
フォロー
1617
フォロワー

段階的移動平均トレンドフォロー戦略

概要

漸化平均線トレンド追跡戦略は,さまざまな周期の移動平均を使用して,価格のトレンド変化を捉え,オッセンジャーの指標で超買い超売り領域を判断し,低価格,高価格のトレンド追跡取引戦略を実現します. この戦略は,より明らかなトレンド状況を追跡する中長期線のポジションに適用されます.

戦略原則

この戦略は,18周期,26周期,36周期などの複数の移動平均を用いて価格トレンドを捕捉する.短期平均線上を長期平均線を越えると上昇傾向にあると考えられ,多額で,短期平均線下を長期平均線を越えると下降傾向にあると考えられ,空白でする.

同時に,戦略は,MACD,RSI,EFIなどの振動器指標を用い,超買い超売り領域を判断する.例えば,MACD柱状線は,負の正転が多し,正の負転が空し;RSI高値が戻るとき空し,低値が戻るとき多し;EFI指標は0時未満で多し,0時以上の空し.

入場規則:

多単数: 短平均線に長平均線を穿越する AND MACD>0 AND RSI低位反発 AND EFI<0

空券:短平均線の下を横断する長平均線 AND MACD<0 AND RSI高位後退 AND EFI>0

ストップ・ロスのルール:

多単位のストップ:EFI指標は値下がりより大きく,価格が指定平均線を下回る

空券ストップ:EFI指標は値下げより小さいAND価格が指定平均線を破る

戦略的優位性

  1. 多グループ移動平均を用いてトレンドを捉えるため,非線形会議は包括的でなければならない. 堅強さと反脆弱性は,主要なトレンドの変化点を捉えるために時間とともに回復力を確保するのに役立つ重要な特徴である.

  2. 振動器の指数组合は,超買い超売り領域を判断するために使用され,高殺低を追求することを避ける.

  3. ストップ・ロスの規則は,トレンドと資金の流れを総合的に考慮し,リスクを効果的に制御する.

  4. 戦略パラメータは,反復テストによって最適化され,ほとんどの状況に適応できます.

  5. 操作頻度は適度で,取引信号は比較的安定しており,長線持有追跡傾向を実現している.

リスク分析

  1. 突発的な出来事による暴落は,停止損失の効果を引き起こす可能性があるので,適切な範囲で停止損失の幅を大きくする必要があります.

  2. 変動の状況では取引頻度が高くなる可能性があり,適切なパラメータを調整して取引頻度を低下させるべきである.

  3. 長期にわたって保有すると,損失が拡大する可能性があるため,平均周期を適切に短縮し,損失を間に合うように止めるべきである.

  4. 検定時に適合リスクが存在し,実体効果は検証される.

最適化の方向

  1. 取引頻度と収益を最適化して,最適なパラメータの組み合わせを見つけます.

  2. 機械学習アルゴリズムを追加し,動的最適化パラメータを追加し,市場の変化に適応する.

  3. 適応性のある止損メカニズムを追加し,異なる状況で異なる止損幅を使用する.

  4. 戦略の安定性を高めるため,より多くの指標を組み合わせて,入場時刻を決定します.

  5. 資金管理戦略を向上させ,単一のポジションの規模を制御し,全体的なリスクを管理する.

要約する

漸化均線トレンド追跡戦略は,多均線でトレンドの方向を判断し,指標のフィルタリングを組み合わせてタイミングに入ると,大トレンドを効果的に追跡し,長線が安定した収益を保持する目的を達成することができる.戦略は,パラメータ最適化によって一定の安定性を持っているが,リスク管理と自適應機構をさらに改善し,引き下がりを軽減し,勝率を向上させる必要がある.全体的に言えば,この戦略は,シンプルで実用的なトレンド追跡方案であり,核心理学の強い拡張性があり,さらなる研究に値する.

ストラテジーソースコード
/*backtest
start: 2023-09-25 00:00:00
end: 2023-10-25 00:00:00
period: 1h
basePeriod: 15m
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/
// © murdocksilva

//@version=5

strategy("Daily_Mid Term_Consulting BOLT")

//calculo longuitud
longuitud = input(58, title= "longitud_sma")


px = ta.sma(close, 1)
px2 = ta.sma(low, 1)

Length1 = input.int(18)
Length2 = input.int(18)
Length3 = input.int(26)
Length4 = input.int(36)
Length5 = input.int(78)
Length6 = input.int(1)
Length7 = input.int(1500)
Length8 = input.int(58)
Length9 = input.int(3000)
Length10 = input.int(2)
Length11 = input.int(14)
ma1 = ta.sma(low, Length1)
ma2 = ta.sma(high, Length2)
ma3 = ta.sma(close, Length3)
ma4 = ta.sma(close, Length4)
ma5 = ta.sma(close, Length5)
ma6 = ta.sma(close, Length6)
ma7 = ta.sma(close, Length7)
ma8 = ta.sma(close, Length8)
ma9 = ta.sma(close, Length9)
ma10 = ta.sma(close, Length10)
ma11 = ta.sma(close, Length11)

// calculo EFI
efi = (close[1]-close) * volume / 1000
efi_indicador = (efi[1] + efi) / 2

//Variable  RSI - calculo desv estandar
b = (px-ma10)*(px-ma10)
b2 = (px[1]-ma10[1])*(px[1]-ma10[1])
c = b + b2
c2 = c / 2
desv = math.sqrt(c2)/10

//calculo MACD
macd = ma4 - ma5

//calculo RSI
rsi = ta.rsi(close, 9)

// calculo Divergencia
ma = ta.sma(close, longuitud)
dist = close - ma
porcentaje = dist * 100 / close
ma_dista = ta.sma(porcentaje, 333)

//condición de entrada y salida long
long = ma1[1] < ma1 and ma2[1] < ma2 and macd > 0 and px > ma3 and efi_indicador < 9 and px > ma7 and macd[1] < macd
clong = efi_indicador > 22000 and px < ma8
strategy.entry("BUY", strategy.long, when = long)
strategy.close("BUY", when = clong)

//condición de entrada y salida short
short = ma1[1] > ma1 and ma2[1] > ma2 and macd < 0 and px < ma3 and efi_indicador > 9 and macd[1] > macd 
cshort =  efi_indicador < 14000 and px > ma8 and ma11 > desv
strategy.entry("SELL", strategy.short, when = short)
strategy.close("SELL", when = cshort)

//SL Y TP
//strategy.exit("long exit", "Daily_Mid Term_Consulting BOLT", profit = close * 40 / syminfo.mintick, loss = close * 0.02 / syminfo.mintick)
//strategy.exit("shot exit", "Daily_Mid Term_Consulting BOLT", profit = close * 40 / syminfo.mintick, loss = close * 0.02 / syminfo.mintick)

// GRAFICA smas
plot(ma1, color=color.new(color.orange, 0))
plot(ma2, color=color.new(color.orange, 0))
plot(ma3, color=color.new(color.orange, 0))
plot(ma4, color=color.new(color.orange, 0))
plot(ma5, color=color.new(color.orange, 0))
plot(ma6, color=color.new(color.green, 0))
plot(ma7, color=color.new(color.orange, 0))
plot(ma8, color=color.new(color.orange, 0))
plot(ma9, color=color.new(color.orange, 0))
//GRAFICA MACD
plot(macd, color=color.new(color.red, 0), style = plot.style_columns)
//GRAFICA DIVERGENCIA
plot(porcentaje, style = plot.style_columns)
//GRAFICA MA DIVERGENCIA
plot(ma_dista, color=color.new(color.white, 0))
//GRAFICA MA DIVERGENCIA
plot(desv, color=color.new(color.blue, 0))
//GRAFICA EFI
plot(efi_indicador, color=color.new(color.yellow, 0))
// GRAFICA RSI
l1 = hline(70, color=color.new(color.green, 0))
l2 = hline(30, color=color.new(color.green, 0))
plot(rsi, color=color.new(color.white, 0))




//prueba 1 stop loss and take profit
//sl = 0.05
//tp = 0.1    
//calculo de precio para sl y tp
//longstop=strategy.position_avg_price*(1-sl)
//longprofit=strategy.position_avg_price*(1+tp)

//shortstop=strategy.position_avg_price*(1+sl)
//shortprofit=strategy.position_avg_price*(1-tp)

//if (long)
  //  strategy.exit("BUY", strategy.long)

//sl and tp  long|short
//if strategy.entry("BUY", strategy.long)

//if strategy.position_avg_price > 0
//strategy.exit("BUY", limit = longprofit, stop = longstop)

//if strategy.position_avg_price < 0
//strategy.exit("SELL", limit = shortprofit, stop=shortstop)