多指標短期アルゴリズム取引戦略

作者: リン・ハーンチャオチャン開催日:2023年9月14日 19時46分55秒
タグ:

この記事では,複数の指標を組み合わせた短期アルゴリズム取引戦略を詳細に紹介しています. 15分チャートなどの低時間枠で取引信号を生成するために,強力な技術指標を使用しています.

I. 戦略の論理

この戦略の核心は複数の指標の組み合わせを用いており,主に以下のような指標が用いられています.

(1) 二重移動平均システム: 1つの高速と1つの遅いハル移動平均を計算し,その交差に基づいてトレンドを判断します.

(2) イチモクシステム: 変換とベースラインを計算し,イチモク雲に基づいてトレンドとサポート/レジスタンスレベルを決定します.

(3) ドンチアン・チャネル: 最低価格と最高価格を用いてチャネルを構成し,価格のブレイクを特定する.

(4) MACD: MACDと信号線を計算し,そのクロスオーバーに基づいて取引を行う.

これらの指標がトレンド判断に合意する時のみ,信頼できる取引信号が生成されます.

速いハルMAがスローハルMAを横切り,イチモク線が雲を横切り,ドンチアンチャネルが突破し,MACDが信号線を横切るとロングポジションを取ります.ショート取引の条件を逆転します.

日々のバーの閉じる価格も取り入れられ,逆転に巻き込まれないようにします.

さらに,戦略にはストップ・ロスの論理と,各取引のリスクと報酬を制御するための利益の論理が含まれています.

戦略の利点

この戦略の最大の利点は,インジケーターの組み合わせが互いを補完し,信号の質を向上させることです.異なるインジケーターは複数の角度からトレンドを判断し,単一のインジケーターの制限を避け,単一のインジケーターを生成することに一致します.

2つ目は,多時間枠の組み合わせも大きな利点である.日々のバーからの補助判断は,短期的なサイクルに閉じ込められるリスクをフィルタリングすることができます.

最後に,ストップ・ロスト・テイク・プロフィートメカニズムは,取引ごとに制御可能なリスクも保証します.

III.潜在的なリスク

健全な戦略設計にもかかわらず,取引リスクも注意すべきです.

まず,複数の指標の組み合わせにより最適化が難しくなり,誤った調節がオーバーフィットにつながります.

2つ目は,ストップ・ロスは強いトレンド・ムーブメントでヒットし,不必要な損失につながる可能性があります.

最後に,複数の時間枠による判断は,解読が難しい混乱の状況も引き起こす可能性があります.

全体的に,この戦略は科学的に指標を組み合わせ,パラメータテストと最適化を通じて効果的な短期アルゴリズム取引システムになることができます.

IV.要約

この記事では,複数の指標を組み合わせた短期アルゴリズム取引戦略を詳細に紹介しています. 信号品質を改善するために,ダブル移動平均,イチモク,ドンチアンチャネル,MACDなどの組み合わせを使用しています. また,複数のタイムフレーム分析とストップ・ロスト/テイク・プロフィートロジックを使用してリスクを制御しています. 最適化により,この戦略は短期的体系的な取引のための効率的なシステムになることができます.


/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// Any timeFrame ok but good on 15 minute & 60 minute , Ichimoku + Daily-Candle_cross(DT) + HULL-MA_cross + MacD combination 420 special blend
strategy("Custom 15m strat",overlay=true)
keh=input(title="Double HullMA",defval=14, minval=1)
dt = input(defval=0.0010, title="Decision Threshold (0.001)", step=0.0001)`
SL = input(defval=-500.00, title="Stop Loss in $", step=1)
TP = input(defval=25000.00, title="Target Point in $", step=1)
ot=1
n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(close[1],round(keh/2))
nma1=wma(close[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
b=n1>n2?lime:red
c=n1>n2?green:red
d=n1>n2?red:green
confidence=(security(syminfo.tickerid, 'D', close)-security(syminfo.tickerid, 'D', close[1]))/security(syminfo.tickerid, 'D', close[1])
conversionPeriods = input(9, minval=1, title="Conversion Line Periods")
basePeriods = input(26, minval=1, title="Base Line Periods")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods")
displacement = input(26, minval=1, title="Displacement")
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)
LS=close, offset = -displacement
MACD_Length = input(9)
MACD_fastLength = input(12)
MACD_slowLength = input(26)
MACD = ema(close, MACD_fastLength) - ema(close, MACD_slowLength) //macd
aMACD = ema(MACD, MACD_Length) //signal
closelong = n1<n2 and close<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and close>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closeshort)
    strategy.close("Short")
longCondition = n1>n2 and strategy.opentrades<ot and confidence>dt and close>n2 and leadLine1>leadLine2 and open<LS and MACD>aMACD
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = n1<n2 and strategy.opentrades<ot and confidence<dt and close<n2 and leadLine1<leadLine2 and open>LS and MACD<aMACD
if (shortCondition)
    strategy.entry("Short",strategy.short)

a1=plot(n1,color=c)
a2=plot(n2,color=c)
plot(cross(n1, n2) ? n1 : na, style = circles, color=b, linewidth = 4)
plot(cross(n1, n2) ? n1 : na, style = line, color=d, linewidth = 4)
plot(conversionLine, color=#0496ff, title="Conversion Line")
plot(baseLine, color=#991515, title="Base Line")
//plot(longCondition == true ? 4000:4100,title="long")
plot(close, offset = -displacement, color=#459915, title="Lagging Span")
p1=plot (leadLine1, offset = displacement, color=green,  title="Lead 1")
p2=plot (leadLine2, offset = displacement, color=red,  title="Lead 2")
fill(p1, p2, color = leadLine1 > leadLine2 ? green : red)
// remove the "//" from before the plot script if want to see the indicators on chart

もっと