戦略に従って 徐々に移動する平均傾向

作者: リン・ハーンチャオチャン開催日:2023年10月26日17時08分43秒
タグ:

img

概要

漸進的な移動平均トレンドフォロー戦略は,価格トレンドの変化を把握するために異なる期間の複数の移動平均値を使用し,オーバーバイトとオーバーセールエリアを決定するためにオシレーター指標と組み合わせ,取引戦略に従う低買いと高売りトレンドを形成する.この戦略は,重要なトレンド市場を追跡するために中期から長期間の保有ポジションに適しています.

戦略の論理

この戦略は,価格動向を把握するために,18~26~36期MAsのような複数の移動平均を採用する.短いMAsが長いMAsを上回ると,上向きの傾向を示し,したがってロングになります.短いMAsが長いMAsを下回ると,下向きの傾向を示し,したがってショートになります.

一方,MACD,RSI,EFIなどの振動指標は,過剰購入および過剰販売状態を特定するために使用されます.例えば,MACDがマイナスからポジティブに転換すると,ロングに行くことを示唆し,ポジティブからマイナスに転換すると,ショートに行くことを示唆します.RSIが高いレベルから撤退することはショートに行くための信号であり,低いレベルからリバウンドすることはショートに行くための信号です.EFIが0以下であればロングに行くことを意味し,0を超える場合はショートに行くことを意味します.

入場規則:

ローング:ショートMAのクロスオーバー ローングMAとMACD>0とRSIは低値とEFI<0からリバウンド

短: 短期MAのクロスオーバーが下がる 長期MAとMACD<0とRSIは高値とEFI>0から下がる

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

Long SL: EFIが上限を超え,価格が指定されたMAを下回る

短 SL: 限界以下のEFIと,指定されたMAを超える価格ブレイク

利点

  1. 複数のMAsは主要なトレンド変化点を捉えています

  2. オスイレーターコンボは高値を追いかけて低値を売るのを避けます

  3. SL規則は,動向とキャッシュフローの両方を考慮し,リスクを効果的に制御します.

  4. 幅広いバックテストによってパラメータを最適化し,ほとんどの市場環境に適応します

  5. 中程度の取引頻度で 安定した信号で 長期的なトレンド追跡に適しています

リスク

  1. 突発的な衝突は SL を無効にすることがあり SL の範囲は拡大されるべきです

  2. 市場を走行する際に信号が多すぎると パラメータを調整する必要があります

  3. 持久しすぎると損失が増加し,短時間MAはSLが速くなります.

  4. バックテストオーバーフィッティング 検証が待っています

改善

  1. 高い収益と適切な頻度のためにパラメータを最適化します

  2. マシン学習アルゴリズムを追加して パラメータを動的に最適化します

  3. 適応性のあるSLメカニズムを 異なる市場状況に基づいて構築する.

  4. より良い入口信号を特定するためにより多くのフィルターを追加します.

  5. 単一の賭けのサイズを制御するためのポジションサイズ戦略を組み込む.

結論

グラデアル・ムービング・平均トレンドフォロー戦略は,複数のMAsでトレンド方向を特定し,フィルタリングされたシグナルを入力することで,長期的な保有を通じて安定した利益を達成することによって,主要なトレンドを効果的に追跡する.この戦略はパラメータ最適化を通じて強度を示したが,引き下げを減らすためにリスク制御と適応性を改善し,勝利率を高める必要がある.全体的に,コア哲学はさらなる研究と適用の可能性を示している.


/*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)

もっと