
この戦略は,複数の時間周期のトレンド分析と量値関係を組み合わせた高周波数量化取引システムである.これは,主に3分と1時間の2つの時間周期の指数移動平均 (EMA) を使って市場のトレンドを判断し,取引シグナルを確認するために取引量分析を組み合わせ,全日の最高価格と固定時間点を基にした二重退出機構を設計している.
戦略の中核となるロジックは、次の 3 つの主要な部分から構成されます。
入場信号は上記の3つの条件を同時に満たす必要があります. 退出戦略は,価格が日中の最高点に触れたり,午後3時に達したこの2つの条件の任意の1つを使用しています.
この戦略は,複数のタイムサイクル分析と量価格関係を組み合わせて,比較的完全な取引システムを構築する.その優点は,論理的明瞭性,実装の簡素性にあるが,リスク管理の面で最適化が必要である.トレーダーは,実用化される前に十分な歴史データテストを行い,特定の取引品種の特性に応じてパラメータを最適化することを推奨する.
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-16 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Intraday + 1-Hour Trend Match", overlay=true)
// Inputs
emaLength3Min = input.int(50, title="EMA Length (3-Min)")
emaLength1Hr = input.int(50, title="EMA Length (1-Hour)")
volumeMultiplier = input.float(1.5, title="Volume Spike Multiplier")
// Intraday (3-Minute) EMA and Volume Spike
ema3Min = ta.ema(close, emaLength3Min)
volumeSMA = ta.sma(volume, 20)
isVolumeSpike = volume > (volumeSMA * volumeMultiplier)
// 1-Hour Trend (EMA)
ema1Hr = request.security(syminfo.tickerid, "60", ta.ema(close, emaLength1Hr))
is1HrUptrend = close > ema1Hr
// Intraday Signal
buyCondition3Min = close > ema3Min and isVolumeSpike
// Combined Signal: Match 3-Min Signal with 1-Hour Trend
finalBuyCondition = buyCondition3Min and is1HrUptrend
// All-Day High Tracking
var float allDayHigh = na
if (hour == 9 and minute == 0)
allDayHigh := high // Reset the all-day high at market open
else
allDayHigh := math.max(allDayHigh, high) // Update all-day high
// Debugging Plots
plot(ema3Min, color=color.blue, title="EMA 3-Min")
plot(ema1Hr, color=color.orange, title="EMA 1-Hour")
plotshape(isVolumeSpike, style=shape.circle, color=color.blue, title="Volume Spike (3-Min)")
plotshape(finalBuyCondition, style=shape.triangleup, color=color.green, title="Buy Signal")
plot(allDayHigh, color=color.red, title="All-Day High", linewidth=2)
// Strategy Execution
if (finalBuyCondition)
strategy.entry("Buy Signal", strategy.long)
// Exit Conditions
exitCondition = (close == allDayHigh) or (hour == 15 and minute >= 0)
if (exitCondition)
strategy.close("Buy Signal")