3分間のショートポジションエキスパートアドバイザー戦略


作成日: 2023-11-24 15:58:01 最終変更日: 2023-11-24 15:58:01
コピー: 0 クリック数: 618
1
フォロー
1617
フォロワー

3分間のショートポジションエキスパートアドバイザー戦略

概要

この戦略は,ドル指数 (ES) に3分間の間隔でショートポジションの専門家アドバイザー戦略である.これは,特定の形状条件と組み合わせた指数の移動平均を計算することによって取引シグナルを生成する.

戦略原則

この戦略の核心指標は,T3平均である。T3平均は,まず,指数移動平均xe1~xe6と,時間間隔でユーザーに設定されたT3パラメータを計算する。それから,特定の加重係数のセットを介して,これらの指数移動平均の加重平均を計算し,最終的なT3平均として働く。

閉盤価格がT3平均線以下であるとき,買入シグナルが生成され;閉盤価格がT3平均線より高いとき,売出シグナルが生成される.さらに,戦略は,特定のK線形状を入場シグナルの補助条件として判断する.形状条件とT3平均線シグナルが同時に現れる場合にのみ,取引指示を発行する.

優位分析

この戦略の最大の利点は,複数のフィルタリングとパラメータの最適化である.一方,価格指標とグラフィック指標を組み合わせた複数のフィルタリングを行うことで,多くのノイズ取引を減らすことができる.一方,重要なパラメータT3と形状判断規則を最適化することで,異なる市場に対して入場精度を調整することができる.

さらに,SMPなどの指標と比較して,T3指標の重複の平滑さは,市場騒音を効果的にフィルターし,トレンド転換点を識別する.三分周期は,日中の取引に適しており,短期的な機会を素早く捉える.

リスクと解決策

この戦略の主なリスクは,パラメータの最適化が不適切であり,ポジション保持時間が長すぎることにある.T3パラメータが大きすぎると,戦略の指標の変化が遅れる;小さすぎると,騒音取引の確率が増加する.また,3分周期操作が,時間に合わない場合,損失のリスクが大きい.

リスクを制御するには,まずは,異なる品種に対して繰り返しテストし,パラメータの最適な範囲を決定する必要があります.次に,ストップ・ロスの戦略を厳格に実行し,タイムリーにストップ・ロスの退出を行い,単発損失を一定比率で制御する必要があります.

最適化の方向

この戦略は,以下のいくつかの最適化方向に重点を置いています.

  1. T3パラメータを最適化して,異なる取引品種のパラメータの最適な範囲を見つけます.

  2. グラフィック指標判断の論理を最適化し,形状認識の精度を向上させる

  3. 遅滞の停止を増加させ,停止を追跡するなどの停止最適化方法

  4. 収益率または最大回収に基づく資金管理モジュールを追加

  5. 機械学習モデルの判断を追加する入門補助モジュール

戦略の安定性や収益性を向上させるには,上記のいくつかの方向を最適化することが必要です.

要約する

この戦略は,短線日内取引戦略として,指標最適化スペースが大きい,複数のフィルタリングと迅速な出場などの利点があります.パラメータ最適化,ストップ・ロズ・最適化,資金管理などの一連の最適化手段を使用して,高周波取引に適応した有効な戦略として調整することができます.

ストラテジーソースコード
/*backtest
start: 2023-11-16 00:00:00
end: 2023-11-23 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("ES 3m Short Only (Triple RED)", overlay=true)
// Alert Message '{{strategy.order.alert_message}}'
//3min
T3 = input(150)//to 600

xPrice3 = close
xe1 = ta.ema(xPrice3, T3)
xe2 = ta.ema(xe1, T3)
xe3 = ta.ema(xe2, T3)
xe4 = ta.ema(xe3, T3)
xe5 = ta.ema(xe4, T3)
xe6 = ta.ema(xe5, T3)

b3 = 0.7
c1 = -b3*b3*b3
c2 = 3*b3*b3+3*b3*b3*b3
c3 = -6*b3*b3-3*b3-3*b3*b3*b3
c4 = 1+3*b3+b3*b3*b3+3*b3*b3
nT3Average = c1 * xe6 + c2 * xe5 + c3 * xe4 + c4 * xe3

// Buy Signal - Price is below T3 Average
buySignal3 = xPrice3 < nT3Average
sellSignal3 = xPrice3 > nT3Average

//NinjaTrader Settings.
acct = "Sim101"
ticker = "ES 12-23"
qty = 1
takeProfitTicks = 4
stopLossTicks = 16
tickSize = 0.25

takeProfitShort = close - takeProfitTicks * tickSize
stopLossShort = close + stopLossTicks * tickSize

OCOMarketShort = '{ "alert": "OCO Market Short", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '", "qty": "' + str.tostring(qty) + '", "take_profit_price": "' + str.tostring(takeProfitShort) + '", "stop_price": "' + str.tostring(stopLossShort) + '", "tif": "DAY" }'
CloseAll = '{ "alert": "Close All", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '" }'

IsUp = close > open
IsDown = close < open
PatternPlot = IsDown[2] and IsDown[1] and IsDown and close[1] <= high[0] and close[1] > close[0] and low[1] > low[0] and high[2] > high[1] and low[2] <= low[1]
if (PatternPlot and sellSignal3)
    strategy.entry('Short', strategy.short, alert_message=OCOMarketShort)
    strategy.exit('Close Short', 'Short', profit=takeProfitTicks, loss=stopLossTicks, alert_message=CloseAll)

//plotshape(PatternPlot, title="Custom Pattern", style=shape.circle, location=location.abovebar, color=color.red, size=size.small)