ガリレオ・ガリレーの移動平均のクロスオーバー戦略

作者: リン・ハーンチャオチャン開催日:2023年12月18日 12:07:07
タグ:

img

概要

ガリレオ・ガリレオの移動平均クロスオーバー戦略は,移動平均値に基づいた取引戦略である.指定された期間における指数的な移動平均値 (EMA) を計算し,EMAと価格のクロスオーバーを比較することによって取引信号を生成する.価格は上から下へとEMAを下回るときに販売信号が生成され,価格は下から上へとEMAを下回るときに購入信号が生じる.

戦略の論理

ガリレオ・ガリレオの戦略の核心は指数的な移動平均値 (EMA) にあります.EMAは,最近の価格により重みをかける移動平均値の一種です.その計算式は:

今日のEMA = (今日の閉場価格 × 調整因数) + (昨日のEMA × (1 − 調整因数))

均一化因子 α = (2/(周期数 + 1))

この戦略は,ユーザー入力期間のパラメータに基づいて EMA を動的に計算し,価格と EMA のクロスオーバーを比較して取引信号を決定します.

  1. 価格が上から下へと EMAを下回ると,ショート取引のためのセールシグナルが生成されます.

  2. 価格がEMAを下から突破すると 買い信号が発信され ロング取引が開始されます

この戦略は,チャート上で EMA 線と,買い・売るシグナルを示す矢印をグラフ化しています.

利点分析

ガリレオ・ガリレオの移動平均のクロスオーバー戦略には以下の利点があります.

  1. シンプルな論理で 簡単に理解し 実行し 初心者にも適しています
  2. 価格変動に対する迅速な対応は EMA の利用によって可能になります.
  3. クロスオーバー信号は 過剰な鞭打ちなしです
  4. EMAのパラメータを調整することで,異なる市場環境に適応する柔軟性
  5. 定義された入口と出口信号はリスク制御を提供します.

リスク分析

この戦略による潜在的なリスクは以下のとおりです.

  1. 高い価格変動の間には,より多くの誤った信号が発生する可能性があります.ストップ・ロスの戦略は最適化するのに役立ちます.
  2. 単一の指標に頼ると,価格操作に脆弱になります.追加の指標は信頼性を向上させることができます.
  3. 遅延効果 特に突然の出来事の後
  4. 長期にわたる一方的な価格動向に適応できず,移動平均戦略の共通の限界である.

オプティマイゼーションの方向性

戦略を最適化する方法:

  1. 誤った信号に対する強度向上のための複合戦略を構築するために他の指標を組み込む.例には,ボリューム,トレンド指標などがあります.

  2. ストップ・ロスのメカニズムを追加します. ストップ・ロスの遅れや ストップ・ロスの割合をベースに,単一の取引の損失額を制御します.

  3. 最適な設定を見つけるために異なるパラメータ組み合わせで EMA をテストする.他の移動平均型も評価できる.

  4. 初期価格逆転の後,リバウンドを捕捉し,収益性を向上させるため,再入力の論理を評価する.

結論

ガリレオ・ガリレオの移動平均クロスオーバーは,シンプルで実用的な戦略で,論理が明確で操作が容易です. 初心者の量子トレーダーに適しています.継続的な改善により,そのパフォーマンスは時間の経過とともにますます優位化することができます.


/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © armigoldman

//@version=3
strategy(title="Galileo Galilei", shorttitle="Galileo Galilei", overlay=true, initial_capital = 100000, default_qty_type=strategy.cash, default_qty_value = 100000)
len = input(11, minval=1, title="Length")
src = input(open, title="Source")
out = ema(src, len)
plot(out, title="EMA", color=yellow)
//last8h = highest(close, 8)
//lastl8 = lowest(close, 8)

//plot(last8h, color=red, linewidth=2)
//plot(lastl8, color=green, linewidth=2)

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE

// From Date Inputs
fromDay = input(defval=1, title="From Day", minval=1, maxval=31)
fromMonth = input(defval=1, title="From Month", minval=1, maxval=12)
fromYear = input(defval=2020, title="From Year", minval=1970)

// To Date Inputs
toDay = input(defval=1, title="To Day", minval=1, maxval=31)
toMonth = input(defval=12, title="To Month", minval=1, maxval=12)
toYear = input(defval=2021, title="To Year", minval=1970)

// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true


bearish = cross(close, out) == 1 and close[1] > close
bullish = cross(close, out) == 1 and close[1] < close

plotshape(bearish, color=white, style=shape.arrowdown, text="BEAR", location=location.abovebar)
plotshape(bullish, color=white, style=shape.arrowup, text="BULL", location=location.belowbar)

buy = if cross(close, out) == 1 and close[1] < close
    strategy.entry("BUY", strategy.long, when=time_cond)
        //strategy.close_all(when=bearish)
        // strategy.exit("exit", "Long", profit =, loss = 35)


sell = if cross(close, out) == 1 and close[1] > close
    strategy.entry("SELL", strategy.short, when=time_cond)
        //sell = if bearish
        //strategy.close_all(when=bullish)
        // strategy.exit("exit", "Long", profit = bullish, loss = 100)

profit = strategy.netprofit
if not time_cond
    strategy.close_all()

//plotshape(true, style=shape.triangleup, location=location.abovebar)


もっと