
この戦略は,9日移動平均と15日移動平均の交差と,いくつかの典型的な日内K線形状に基づいて取引信号を生成する. 快線でゆっくりとした線を突破し,特定の角度条件と特定のK線形状を満たすときは,多めに行い,快線の下のゆっくりとした線を突破するときは,空いて行い. 同時に,リスク管理のために止損位と止場を設定する.
短期移動平均線 ((9日線) が長期移動平均線 ((15日線) よりも上を穿うとき,短期価格の上昇勢いが強いことを示す,多めにすること.短期移動平均線の下を穿うとき,短期価格の下落勢いが強いことを示す,空きすること.同時に,移動平均線の角度が30度以上のことを要求し,十分な上昇または下降の動きを確保すること.特定の日間のK線形状判断,例えば線,本線などを加えることで,偽の突破信号をフィルターすることができます.
この戦略は,主に移動平均のトレンド追跡機能と,一部のK線形状の特性を利用し,パラメータを調整することで,異なる市場の品種に適応することができる.
この戦略は,移動平均指数と日内K線形状判断を組み合わせて,一部のノイズを効果的にフィルターして,取引信号をより信頼性のあるものにする.特に,角度値の判断が追加され,価格変化の動きが十分に大きいときにのみ信号を発信することを保証し,無意味な偽信号を避ける.さらに,戦略は,単位の最大損失を自動的に削減し,利益の引き戻しを実現するストップ・ロースとストップ・ストップのレベルを設定する.これらの措置は,戦略の安定性と収益性の両方を向上させる.
移動平均線は,トレンド追跡型の指標として,中長期の価格トレンドを捉えることができる. k 線形は,短期間の市場参加者の力の対比を反映し,異なる時間尺度で取引ヒントを得ることができる.この戦略は,複数の判断指標の優位性を統合し,実際の取引で優れた効果を得ることができる.
この戦略のリスクは以下の通りです.
偽突破リスク。市場が振動整理状態にあるとき,移動平均が複数回交差することがあり,交差から発せられる信号はほとんどが偽信号である。このとき,利益を得ることが出来ず,代わりに套入される可能性がある。K線形状と角度条件は,このリスクを軽減できる。
トレンド反転リスク。移動平均はトレンドを追跡する指標として,トレンド反転の際には予期せぬシグナルを与えることはできません。このとき,ポジションを保有すると,巨額の損失を被る可能性があります。この種のリスクは,厳格なストップ・ロスを使って制御できます。
パラメータ最適化のリスク。異なる市場品種は,パラメータ設定に対して異なる適応性を有する。調整をせずに特定のパラメータ組み合わせを直接使用すると,損失ももたらす可能性がある。これは,反測と実体シミュレーションによって最適なパラメータを見つける必要がある。
全体として,この戦略は,市場環境の判断が欠けている場合,ある程度の偽信号と高値追殺のリスクを発生させる可能性があります. 大規模なトレンドと量値特性の判断を加えることで,これらのリスクをさらに最適化し,軽減することができます.
この戦略は,次のいくつかの点でさらに最適化できます.
大規模なトレンドの判断を増やす.例えば,長線が上昇か下落の通路にあるかどうかを確認し,逆転取引を避ける.
量能指標の分析を加える.例えば通達信の料金指標は,買賣力を見極め,高料金株の空白価格や低料金株の空白価格を避ける.
株の基本状況と組み合わせて. 利益予想が好調で,業績が安定的に伸びている個別の株を選択して取引することで,勝率を高めることができます.
移動平均システムのパラメータ群を最適化する.異なる長さの周期の平均線を試すか,三平均線,五平均線などを追加して,パラメータ調整スペースが大きい取引システムを構築できる.
異なるストップ・ストップ・パラメータをテストする. 最適なリスク・リターン比率を得るために,リターン比率を設定する.
この戦略の収益性や安定性は,上記のいくつかの方向を最適化することで,さらに顕著に向上する見込みです.
全体として,この戦略は,移動平均指標と部分日内K線形状の優位性を統合し,取引信号を発信する際に条件はより厳格であり,大量のノイズをフィルターすることができ,通過信号の質を大幅に向上させます.同時に,最大損失と達成された利益を制御するために,停止損失と停止を設定します.これは推奨される安定型量化取引戦略です.
次のステップは,パラメータの最適化により,戦略の勝率と収益性をさらに向上させることです.より多くの指標を追加することで,全体的な取引システムの健全性が強化されることもできます.厳格な実体シミュレーションの後,この戦略は,安定した利益を生み出す効果的な量化ツールになる可能性があります.
/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Moving Average Crossover Strategy with Candlestick Patterns", overlay=true)
// Define input parameters
fast_length = input(9, "Fast MA Length")
slow_length = input(15, "Slow MA Length")
stop_loss_percent = input(0.25, "Stop Loss (%)")
target_percent = input(0.25, "Target (%)")
angle_threshold = input(30, "Angle Threshold (degrees)")
// Calculate moving averages
fast_ma = sma(close, fast_length)
slow_ma = sma(close, slow_length)
// Define candlestick patterns
is_pin_bar() =>
pin_bar = abs(open - close) > 2 * abs(open[1] - close[1])
high_tail = max(open, close) - high > abs(open - close) * 1.5
low_tail = low - min(open, close) > abs(open - close) * 1.5
pin_bar and high_tail and low_tail
is_marubozu() =>
marubozu = abs(open - close) > abs(open[1] - close[1]) * 0.75
no_upper_shadow = high == max(open, close)
no_lower_shadow = low == min(open, close)
marubozu and no_upper_shadow and no_lower_shadow
is_full_body() =>
full_body = abs(open - close) > abs(open[1] - close[1]) * 0.95
full_body
// Plot moving averages
plot(fast_ma, color=color.blue, title="Fast MA")
plot(slow_ma, color=color.red, title="Slow MA")
// Calculate angle of slow moving average
ma_angle = abs(180 * (atan(slow_ma[1] - slow_ma) / 3.14159))
// Generate buy/sell signals based on angle condition and candlestick patterns
buy_signal = crossover(fast_ma, slow_ma) and ma_angle >= angle_threshold and (is_pin_bar() or is_marubozu() or is_full_body())
sell_signal = crossunder(fast_ma, slow_ma)
// Calculate stop-loss and target levels
stop_loss_level = close * (1 - stop_loss_percent / 100)
target_level = close * (1 + target_percent / 100)
// Execute trades based on signals with stop-loss and target
strategy.entry("Buy", strategy.long, when=buy_signal)
strategy.exit("Exit", "Buy", stop=stop_loss_level, limit=target_level)
// Plot buy/sell signals on chart (optional)
plotshape(series=buy_signal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=sell_signal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
// Plot angle line
hline(angle_threshold, "Angle Threshold", color=color.black, linestyle=hline.style_dashed)