ディープを買う - MA200 最適化された戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-08 16:54:21
タグ:

img

概要

この戦略は,逆のアプローチ (ダウンを購入する) とトレンドフォローする論理 (価格がMA200を超える場合にのみ) を組み合わせます.この戦略は,収益性の最も高いダウンを購入する最適なタイミングを見つけることを目的としています.長期移動平均値を超える価格は,短期的な弱さ中に資産を購入して利益を得る可能性を高める勢いを示します.

戦略原則

この戦略は,価格が相対的な下落状態にあるかどうかを判断するために,見直し期間の全体的な価格の百分比変化を計算する.全体的な価格の変化百分比が-3%未満の場合,価格は下落状態と考えられる.さらに,この戦略は,トレンドを判断するための指標として200日間の単純な移動平均値を設定する.価格が200日間の移動平均値を超えるとのみ購入信号が起動する.平均逆転原理とロングショートペアリングの両方を利用することにより,戦略は,利益を得るために上昇傾向中に下落を購入する.

利点分析

この戦略は,トレンドトレードとコントリアントレードの両方の利点を組み合わせている.一方,トレンドを決定するために長期移動平均を使用することで,下落傾向中に盲目的に購入を避ける.一方,買い下げは,短期的訂正中により良いエントリー機会を提供します.この組み合わせは,取引のセキュリティと利益の確率の両方を保証します.さらに,この戦略は,異なる市場に適合するように調整できるパラメータのための大きな最適化スペースを有し,強力な適応性を有します.

リスク分析

最大のリスクは,購入信号が発信された後に価格が引き続き下落し,損失が拡大することである.また,市場が長期間にわたって範囲に制限され,価格が移動平均を突破することができない場合,戦略も失敗する.そのようなリスクを軽減するために,移動平均期間を相応に短縮し,十分な安全性範囲を確保するために購入基準を最適化することができます.

オプティマイゼーションの方向性

戦略は,いくつかの側面で最適化することができます: 1) 異なる市場に適応するために移動平均期を最適化する; 2) 十分な利益率を確保するために購入基準を最適化する; 3) 損失を制御するためにストップロスを追加する; 4) 精度を向上させるためにトレンドとダウンを判断するための他の指標を組み合わせる.

概要

一般的に,これはトレンドフォローとコントリアン・トレードアイディアを組み合わせた典型的な戦略である.これは,強力な実用的な価値を持つ,トレードセキュリティとより高い勝利確率の両方を保証する.パラメータ最適化とストップ損失最適化によって安定性と実際の取引効果のさらなる向上を達成することができる.


/*backtest
start: 2023-12-08 00:00:00
end: 2024-01-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Buy The Dips - MA200 Optimised", overlay=false)

//Moving average
MAinp = input(defval = 100, title = "MA", type = input.integer, minval = 1, step = 1)
MA=sma(close, MAinp)

//Percent change
inp_lkb = input(1, title='Lookback Period')
 
perc_change(lkb) =>
    overall_change = ((close[0] - close[lkb]) / close[lkb]) * 100

// Call the function    
overall = perc_change(inp_lkb)

// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"

//Entry/Exit
strategy.entry(id="long", long = true, when = window() and overall<-3 and close > MA) 
strategy.close(id="long", when = window() and overall>1)


bgcolor(color = showDate and window() ? color.gray : na, transp = 90) 
plot(overall, color=color.black, title='Overall Percentage Change', linewidth=3)
band1 = hline(1, "Upper Band", color=#C0C0C0)
band0 = hline(-2, "Lower Band", color=#C0C0C0)
fill(band1, band0, color=#9915FF, transp=90, title="Background")
hline(0, title='Center Line', color=color.orange, linestyle=hline.style_solid, linewidth=2)

もっと