
この戦略は,21日指数移動平均に対する黄金の価格の偏差を計算し,標準差と組み合わせて,市場の過剰買いと過剰売り状況を判断し,偏差が一定標準差に達したときに,トレンド追跡戦略をとり,同時に,リスク制御のためのストップ・メカニズムを設定する.
これは,価格動力と標準差に基づいて市場を過買過売するトレンド追跡戦略であり,以下の利点があります.
この戦略にはいくつかのリスクがあります.
解決策は
この戦略は以下の点で最適化できます.
この戦略は,全体として,基本合理的なトレンド追跡戦略である。主要トレンドの方向を判断するために移動平均を使用すると同時に,価格偏差の標準化処理により,市場の過買過売状況を明確に判断し,取引信号を生成することができる。合理的な止損方法を設定すると,戦略は,収益性を保証しながら同時にリスクを制御することができる。パラメータをさらに最適化するとともに,より多くの条件判断を加えることで,戦略をより安定的に信頼でき,強力な応用価値を持つことができる。
/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("GC Momentum Strategy with Stoploss and Limits", overlay=true)
// Input for the length of the EMA
ema_length = input.int(21, title="EMA Length", minval=1)
// Exponential function parameters
steepness = 2
// Calculate the EMA
ema = ta.ema(close, ema_length)
// Calculate the deviation of the close price from the EMA
deviation = close - ema
// Calculate the standard deviation of the deviation
std_dev = ta.stdev(deviation, ema_length)
// Calculate the Z-score
z_score = deviation / std_dev
// Long entry condition if Z-score crosses +0.5 and is below 3 standard deviations
long_condition = ta.crossover(z_score, 0.5)
// Short entry condition if Z-score crosses -0.5 and is above -3 standard deviations
short_condition = ta.crossunder(z_score, -0.5)
// Exit long position if Z-score converges below 0.5 from top
exit_long_condition = ta.crossunder(z_score, 0.5)
// Exit short position if Z-score converges above -0.5 from below
exit_short_condition = ta.crossover(z_score, -0.5)
// Stop loss condition if Z-score crosses above 3 or below -3
stop_loss_long = ta.crossover(z_score, 3)
stop_loss_short = ta.crossunder(z_score, -3)
// Enter and exit positions based on conditions
if (long_condition)
strategy.entry("Long", strategy.long)
if (short_condition)
strategy.entry("Short", strategy.short)
if (exit_long_condition)
strategy.close("Long")
if (exit_short_condition)
strategy.close("Short")
if (stop_loss_long)
strategy.close("Long")
if (stop_loss_short)
strategy.close("Short")
// Plot the Z-score on the chart
plot(z_score, title="Z-score", color=color.blue, linewidth=2)
// Optional: Plot zero lines for reference
hline(0.5, "Upper Threshold", color=color.red)
hline(-0.5, "Lower Threshold", color=color.green)