
自適性価格交差均線取引戦略は,ハル移動平均 ((HMA)) をベースにした量的な取引方法である.この戦略は,価格とHMAの交差を活用して,買入と売却の信号を生成し,リスクと利益を管理するために固定したストップ・ロスとストップ・ストップのレベルを設定する.この戦略は,HMAの104サイクルを主要指標として使用し,価格交差と組み合わせて取引を誘発する.
この戦略の核心は,Hull移動平均 ((HMA) を主要な指標として使用することである.HMAは,価格の変化に迅速に反応し,遅延を減らすことができる高度な移動平均である.戦略の論理は次のとおりである.
策略は,開いたポジションをトラッキングすることによって,既にあるポジションを繰り返さないことを保証する.取引が平仓された後に,システムは,新しい取引シグナルが有効になるように,標識をリセットする.
自動価格交差均等線取引戦略は,シンプルで効果的な量化取引方法である.この戦略は,ハル移動平均の優位性を利用することで,市場動向を捉えることができ,同時に,固定されたリスク管理措置によって資金を保護することができる.この戦略にはいくつかの潜在的リスクがあるが,継続的な最適化と改善によって,その性能と適応性をさらに向上させることができる.自動取引ソリューションを求めるトレーダーにとって,これは考慮すべき基本的な戦略の枠組みである.
/*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