マルチ期間EMAクロスオーバー定量取引戦略


作成日: 2023-12-27 17:09:23 最終変更日: 2023-12-27 17:09:23
コピー: 0 クリック数: 643
1
フォロー
1621
フォロワー

マルチ期間EMAクロスオーバー定量取引戦略

概要

この記事では,3つの異なる周期の指標移動平均 ((EMA) の交差点に基づく量的な取引戦略を紹介する.この戦略は,EMAの交差点を活用して,株式市場の長期的および短期的傾向を識別し,効果的な取引決定を実現することを目的としている.

戦略原則

戦略は,3つの異なる周期のEMA: 10日,100日,200日を使用します. 短い周期EMA (約10日) が長い周期EMA (約100日または約200日) を横切るとき,横切る方向に応じて買入または販売の信号を生成します. 戦略は,特定の時間帯内でのみ取引を確実にする時間フィルターも組み込みます. この組み合わせは,戦略の柔軟性と適応性を高めます.

優位分析

この戦略の優点は,そのシンプルさと高度な適応性にある.多周期EMAは,市場動向の多角的な観察を提供し,取引決定の正確性を高めます.同時に,時間フィルターは,市場の特定の期間の不安定性を避け,潜在的リスクを低減します.

リスク分析

この戦略が有効であるにも関わらず,一定のリスクがある.主なリスクは,市場の突発的な出来事が戦略の失敗につながる可能性があることである.また,EMA指標は,市場の変化を反映する遅延性がある可能性がある.これらのリスクに対処する方法には,リアルタイムでの市場モニタリングと,意思決定の正確性を高めるために他の技術指標と組み合わせることが含まれる.

最適化の方向

戦略の最適化方向には,相対的強弱指数 (RSI) とブリン帯のような複数の技術指標の統合的な使用が含まれ,市場分析の深さと幅を高める.さらに,EMAサイクルを調整することで,異なる市場条件により良く適応することができる.

要約する

全体として,この多周期EMAクロス量化取引戦略は,変化する市場でトレーダーにより良い意思決定を助けることができる高効率のツールです.この戦略は,継続的に最適化して市場変化に適応することによって,将来の取引でより高い収益を上げる可能性があります.

ストラテジーソースコード
/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
start = timestamp(2023,1,1,0,0)
end = timestamp(2024,1,1,0,0)
strategy("Tester Emas", overlay = true)

periodo1 = input(10,"Periodo_1")
periodo2 = input(100,"Periodo_2")
periodo3 = input(200,"Periodo_3")

//definir media moviles
ema1 = ta.ema(close,periodo1)
ema2 = ta.ema(close,periodo2)
ema3 = ta.ema(close,periodo3)

//Desde
desde_a = input(2000, title = "Desde año")
desde_m = input.int(   1, title = "Desde mes", minval=1, maxval = 12)
desde_d = input.int(   1, title = "Desde dia", minval=1, maxval = 31)

//Hasta
hasta_a = input(2030, title = "Hasta año")
hasta_m = input.int(   1, title = "Hasta mes", minval=1, maxval = 12)
hasta_d = input.int(   1, title = "Hasta dia", minval=1, maxval = 31)

FechaValida() => true

//Condicion de entradas
longCondition = ta.crossover(ema1, ema2)
shortCondition = ta.crossunder(ema1,ema2)

alcista = (ema1 > ema2) and (ema2 > ema3)
comprado =strategy.position_size > 0



//Comprar o vender segun las condiciones de entradas

//if (longCondition)
if (not comprado and alcista and FechaValida())
    // Round redondea mi capital para comprar las acciones en cantidades enteras
    cantidad = math.round(strategy.equity/ close)
    strategy.entry("Compra", strategy.long, cantidad)
//if (shortCondition)
if (comprado and not alcista and FechaValida())
    //strategy.entry("Venta", strategy.short)
    strategy.close("Compra" , comment = "Venta")

if (comprado and not FechaValida())
    //Cierre x finalizacion de periodo
    //strategy.entry("Venta", strategy.short)
    strategy.close("Compra" , comment = "Venta x fin")

//Graficar las medias moviles
plot(ema1, color = color.green, title = "Ema1")
plot(ema2, color = color.yellow, title = "Ema2")
plot(ema3, color = color.red, title = "Ema2")
//GMarca los cruces de medias
bgcolor(longCondition ? color.green : na)
bgcolor(shortCondition ? color.red : na)