
この戦略は,XAUUSD ((ゴールド) の30日単調移動平均 ((MA30) と200日単調移動平均 ((MA200) の交差を計算することによって,金叉の買取と死叉の販売の定量取引を実現する.この戦略は,同時に,ストップ・ロズとストップ・ストップ価格を設定し,自動的に平仓することができる.
この戦略の核心指標は,MA30とMA200である.MA30の上を通過すると,買いのシグナルが生じ,MA30下を通過すると,売りのシグナルが生じます.この交差は,金叉と死叉と呼ばれています.
具体的には,この策略は,ta庫を使ってMA30とMA200を計算する. そして,ta.crossoverとta.crossunderの関数を使ってそれらの交差を判断する. 上方交差 (金叉) が発生したとき,longConditionをtrueに設定して,買入操作を行う. 下方交差 (死叉) が発生したとき,shortConditionをtrueに設定して,売出操作を行う.
取引の実行に関しては,買取と売却の注文はそれぞれ40,000ポイントのストップ・ロズとストップ・ストップの価格が設定されている.これは,XAUUSDで4000ポイントの価格変化に相当する.価格がストップ・ロスまたはストップを触発すると,オーダーは自動的に平仓する.
また,策略は,ヘッジメカニズムを設定している. 現在の多頭ポジションを保有している場合,その後死叉シグナルが発生すると,直接平仓の方向に切り替わります. 現在の空頭ポジションを保有している場合,その後金叉シグナルが発生すると,直接平仓の方向に切り替わります. これは,トレンドが逆転するときに大きな損失を免れることができます.
これは非常にシンプルで直感的なトレンド追跡戦略で,以下の利点があります.
この戦略にはいくつかのリスクがあります.
これらのリスクを制御するために,パラメータを最適化し,ストップ・ロー幅を調整し,反転信号をフィルタリングすることができます.
この戦略は以下の点で最適化できます.
パラメータの調整,フィルターの追加,ポジション管理などの手段によって,戦略の安定性をさらに向上させることができます.
この戦略は,シンプルで実用的な移動平均クロス戦略である.市場周期に順応して動作し,自動ストップ・ロスト・フリッジ・ポジションとヘッジメカニズムを設定することでリスクを制御する.この戦略は,容易に理解し,実行し,複数の取引品種と時間周期に適用できる.さらに最適化することで,よりよいリスク・リターン比率を得ることができる.これは,推奨される量化取引戦略である.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Estrategia de Cruce de Medias Móviles", overlay=true)
// Medias móviles
ma30 = ta.sma(close, 30)
ma60 = ta.sma(close, 60)
ma200 = ta.sma(close, 200)
// Cruce de medias móviles
crossoverUp = ta.crossover(ma30, ma200)
crossoverDown = ta.crossunder(ma30, ma200)
// Señales de compra y venta
longCondition = crossoverUp
shortCondition = crossoverDown
// Ejecución de órdenes
if (longCondition)
strategy.entry("Buy", strategy.long)
strategy.exit("Cover", "Buy", stop=close - 40.000, limit=close + 40.000)
if (shortCondition)
strategy.entry("Sell", strategy.short)
strategy.exit("Cover", "Sell", stop=close + 40.000, limit=close - 40.000)
// Plot de las medias móviles
plot(ma30, color=color.blue, title="MA 30")
plot(ma60, color=color.orange, title="MA 60")
plot(ma200, color=color.green, title="MA 200")
// Condiciones para cerrar la posición contraria
if (strategy.position_size > 0)
if (crossoverDown)
strategy.close("Buy")
if (strategy.position_size < 0)
if (crossoverUp)
strategy.close("Sell")