高低自動予測と取引戦略

作者: リン・ハーンチャオチャン,日付: 2024-03-15 17:22:36
タグ:

img

概要

この戦略は,午前9時15分に高値と低値を特定し,ロングとショートポジションのターゲット価格とストップ・ロスの価格を自動的に計算し,条件が満たされたときに自動的にポジションを開く.この戦略は,相対強度指数 (RSI) を使用して,過剰購入および過剰販売状態を決定し,エントリー機会を決定するために9時15分高値と低値のブレイクと組み合わせます.

戦略の原則

  1. 9時から9時15分までの高点と低点形成間隔を決定します
  2. 最高価格と最低価格を 9時15分に セッションHighと セッションLowとして記録します
  3. 長期目標価格 (セッションHigh+200),短期目標価格 (セッションLow-200) と対応するストップ・ロスの価格を計算します.
  4. 現在の閉店価格とRSIインジケーターを取得します.
  5. ロング エントリー条件: 閉じる価格がセッションHighを突破し,RSIがオーバー・バイトレベルより大きい.
  6. ショートエントリー条件:閉値がセッションLowを下回り,RSIが過売値を下回る.
  7. 適切な価格レベルをグラフ化し,エントリー条件に基づいて自動的にロングまたはショートポジションを開く.

利点を分析する

  1. シンプルで使いやすい: 戦略は明白な9:15高低点とRSI指標に基づいています. わかりやすく実行可能な明確な論理があります.
  2. 高度な自動化: 戦略には,ターゲット価格とストップ損失価格の内蔵計算,および自動取引実行を可能にするエントリー条件判断が含まれます.
  3. 適時ストップ・ロスト:ストップ・ロスト価格は9:15の高/低点に基づいて設定され,ポジションが開かれたら明確なストップ・ロストレベルを提供し,リスクを効果的に制御します.
  4. トレンド追跡:RSI指標を使用して,過剰購入と過剰販売の状況を判断することで,戦略はトレンド形成の始まりに侵入し,トレンドを追跡するのに役立ちます.

リスク分析

  1. パラメータ最適化リスク:RSI長度や過買い/過売りの限界値などの戦略パラメータは,市場の特徴に基づいて最適化され,異なるパラメータが異なる結果をもたらす可能性があります.
  2. 単一指標リスク: 戦略は主にRSI指標に依存しており,特定の市場条件では無効になる可能性があります.
  3. 日中の変動リスク: 9:15以降の価格変動は,ストップ・ロスを引き起こす可能性があり,トレンド・ムーブメントを逃す可能性があります.
  4. ポジション管理の欠如: 戦略はポジションのサイズとマネーマネジメントをコントロールできず,過剰に頻繁にポジションを開設すると追加のリスクが生じる可能性があります.

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

  1. ダイナミックストップ・ロース: 価格変動や平均真差 (ATR) などの指標に基づいてストップ・ロースレベルをダイナミックに調整し,価格変動を追跡します.
  2. 他の指標と組み合わせる:MACDや移動平均システムなどの他の指標を導入し,トレンド判断を確認し,エントリー精度を向上させる.
  3. 入場条件を最適化:固定値の制限を回避するために,RSIの過買い/過売値を適応的に調整する.
  4. ポジション管理を導入する: 市場変動状況に基づいてポジションのサイズを制御する.例えば,リスクパーセントモデルを使用する.

概要

この戦略は,9.15の高低点に基づい,トレンド判断のためにRSI指標を使用し,目標価格とストップロスの価格を自動的に計算し,エントリー条件に基づいて自動でロングまたはショートポジションを開設する.戦略論理は単純で明確で,高度な自動化により,トレンド動きを迅速に把握することができます.しかし,この戦略にはパラメータ最適化,単一指標への依存,イントラデイ波動性,ポジション管理の欠如というリスクもあります.将来,戦略は,ダイナミックストップロスの組み合わせ,他の指標と組み合わせ,エントリー条件の最適化,ポジション管理の導入などの側面で最適化および改善され,より堅牢な取引パフォーマンスを得ることができます.


/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("9:15 AM High/Low with Automatic Forecasting", overlay=true)

// Parameters
showSignals = input(true, title="Show Signals")

// Define session time
sessionStartHour = input(9, title="Session Start Hour")
sessionStartMinute = input(0, title="Session Start Minute")
sessionEndHour = input(9, title="Session End Hour")
sessionEndMinute = input(15, title="Session End Minute")

// Calculate session high and low
var float sessionHigh = na
var float sessionLow = na
if (hour == sessionStartHour and minute == sessionStartMinute)
    sessionHigh := high
    sessionLow := low

// Update session high and low if within session time
if (hour == sessionStartHour and minute >= sessionStartMinute and minute < sessionEndMinute)
    sessionHigh := high > sessionHigh or na(sessionHigh) ? high : sessionHigh
    sessionLow := low < sessionLow or na(sessionLow) ? low : sessionLow

// Plot horizontal lines for session high and low
plot(sessionHigh, color=color.green, title="9:00 AM High", style=plot.style_stepline, linewidth=1)
plot(sessionLow, color=color.red, title="9:00 AM Low", style=plot.style_stepline, linewidth=1)

// Calculate targets and stop loss
longTarget = sessionHigh + 200
longStopLoss = sessionLow
shortTarget = sessionLow - 200
shortStopLoss = sessionHigh

// Plot targets and stop loss
plot(longTarget, color=color.blue, title="Long Target", style=plot.style_cross, linewidth=1)
plot(longStopLoss, color=color.red, title="Long Stop Loss", style=plot.style_cross, linewidth=1)
plot(shortTarget, color=color.blue, title="Short Target", style=plot.style_cross, linewidth=1)
plot(shortStopLoss, color=color.red, title="Short Stop Loss", style=plot.style_cross, linewidth=1)

// RSI
rsiLength = input(14, title="RSI Length")
overboughtLevel = input(60, title="Overbought Level")
oversoldLevel = input(40, title="Oversold Level")
rsi = ta.rsi(close, rsiLength)

// Entry conditions
longCondition = close > sessionHigh and rsi > overboughtLevel
shortCondition = close < sessionLow and rsi < oversoldLevel

// Long entry
if (showSignals and longCondition)
    strategy.entry("Long", strategy.long)

// Short entry
if (showSignals and shortCondition)
    strategy.entry("Short", strategy.short)


もっと