アダプティブ・プライス・クロシング・ムービング・平均取引戦略 (Adaptive Price-Crossing Moving Average Trading Strategy) は,ハル・ムービング・平均 (HMA) をベースとした定量的な取引方法である.この戦略は,リスクと報酬を管理するために固定ストップ・ロストとテイク・プロフィートレベルを実装しながら,HMAとの価格クロスオーバーを使用して購入・売却信号を生成する.この戦略は,取引を誘発するために価格クロスオーバーと組み合わせた104期HMAを主な指標として採用する.
この戦略の核心は,ハル移動平均 (HMA) を主要指標として使用することである.HMAは,遅延を軽減しながら価格変化に迅速に対応する高度移動平均である.戦略論理は以下のとおりである:
この戦略は,既存の取引が活発である間,新しい取引が開かれないことを確認するために,オープンポジションを追跡します.取引が終了すると,システムは新しい取引信号が有効になるようにフラグをリセットします.
アダプティブ・プライス・クロシング・ムービング・アベア・トレーディング・ストラテジー (Adaptive Price-Crossing Moving Average Trading Strategy) は,シンプルで効果的な定量的なトレーディング方法である.ハル・ムービング・アベアの利点を活用することで,この戦略は固定リスク管理措置を通じて資本を保護しながら市場動向を把握することができる.この戦略にはいくつかの潜在的なリスクがあるが,継続的な最適化によってさらに改善および適応することができる.自動化トレーディングソリューションを求めるトレーダーにとって,これは考慮すべき価値のある基本的な戦略フレームワークである.
/*backtest start: 2024-01-01 00:00:00 end: 2024-03-23 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("SHIESTD", overlay=true) // Function to calculate Hull Moving Average (HMA) hma(src, length) => wma1 = ta.wma(src, length) wma2 = ta.wma(src, length / 2) hma = ta.wma(2 * wma2 - wma1, math.round(math.sqrt(length))) hma // Parameters hma_length = 104 // Calculate Hull Moving Average hma_value = hma(close, hma_length) // Plot HMA plot(hma_value, title="104-period Hull Moving Average", color=color.blue, linewidth=2) // Define SL and TP values in dollars long_sl_amount = 1.25 long_tp_amount = 37.5 short_sl_amount = 1.25 short_tp_amount = 37.5 // Number of contracts contracts = 2 // Function to calculate SL and TP prices based on entry price and dollar amounts long_sl_price(entry_price) => entry_price - long_sl_amount long_tp_price(entry_price) => entry_price + long_tp_amount short_sl_price(entry_price) => entry_price + short_sl_amount short_tp_price(entry_price) => entry_price - short_tp_amount // Trading conditions price_intersects_hma = ta.crossover(close, hma_value) or ta.crossunder(close, hma_value) // Long and Short Conditions based on price intersecting HMA long_condition = ta.crossover(close, hma_value) short_condition = ta.crossunder(close, hma_value) // Track open positions var bool long_open = false var bool short_open = false // Handle Long Positions if (long_condition and not long_open) entry_price = close strategy.entry("Long", strategy.long, qty=contracts) strategy.exit("Exit Long", from_entry="Long", stop=long_sl_price(entry_price), limit=long_tp_price(entry_price)) long_open := true // Handle Short Positions if (short_condition and not short_open) entry_price = close strategy.entry("Short", strategy.short, qty=contracts) strategy.exit("Exit Short", from_entry="Short", stop=short_sl_price(entry_price), limit=short_tp_price(entry_price)) short_open := true // Reset flags when the position is closed if (strategy.opentrades == 0) long_open := false short_open := false