モメンタムトレンドフォロー戦略


作成日: 2023-10-30 11:36:26 最終変更日: 2023-10-30 11:36:26
コピー: 1 クリック数: 736
1
フォロー
1617
フォロワー

モメンタムトレンドフォロー戦略

概要

この戦略は,VIDYA (変数指数移動平均) の指標を使用して,暗号通貨市場のトレンド方向を識別し,トレンドに基づいて取引する.

戦略原則

この戦略はまずVIDYA指標を計算する。VIDYA指標は価格の変化の動力をベースに,より迅速にトレンドの変化に反応する。具体的には,Chande Momentum Oscillator (CMO) とSimple Moving Average (SMA) を組み合わせている。CMOは価格の上昇と下降の変動の違いを測定し,トレンドの強さを判断する。SMAは価格に平滑処理を行う。VIDYAはCMOの値に応じて,動的にSMAの重さを調整し,トレンドの変化の初期にCMOに重みを与え,トレンド形成後にSMAに重みを与える。VIDYAは,トレンドの変化に迅速に反応し,同時にトレンド平滑の追跡を保つことができる。

VIDYAを計算した後,戦略は曲線の方向でトレンドの方向を判断します.VIDYAが上昇すると,多めにします.VIDYAが低下すると,平仓します.

優位分析

  • VIDYAの指標は迅速に反応し,トレンドの変化を早期に捉えることができ,SMAなどの従来の指標に比べて優れている.

  • トレンドの強度とトレンドの方向の判断を組み合わせて,強いトレンドと弱いトレンドを効果的に区別し,波動的な市場の偽トレンドに惑わされないようにする.

  • 単一のVIDYA指数で判断するだけで,戦略の簡素性が実現する.指数の衝突や誤解が生じない.

  • 長期VIDYA設定は,長期トレンドを追跡し,主要トレンドの方向を把握するのに役立ちます.

  • 戦略的反省は良好で,期待される収益は正しかった.

リスク分析

  • VIDYAは,市場における突発的な出来事に対する反応が遅れている可能性があり,短期取引の機会をすぐに掴むことができません.

  • 長期VIDYAの設定は短期トレンドの変化に無感で,中間で大きな後退が起こる可能性があります.

  • 純粋なトレンドフォロー戦略は,震動の状況下ではうまく機能しない.追加フィルタリング条件と組み合わせてパフォーマンスを向上させることができる.

  • 回測データは不十分で,戦略の安定性を完全に検証することはできません.実際の取引では,パラメータを繰り返し最適化テストする必要があります.

  • 仮想通貨市場は波動性があり,ポジションの規模と停止条件を慎重に管理し,厳格なリスク管理を行う.

最適化の方向

  • トレンドの変化に対する認識感を高めるために,追加量値指標または変動率指標をテストする.

  • VIDYAと他のトレンド指標の組み合わせをテストし,指標集積効果を形成する.

  • トレンドが逆転したときにできるだけ早くストップする.

  • ポジション管理戦略の最適化,市場状況に応じてポジションの動的調整.

  • 異なる暗号通貨品種と周期パラメータの下での安定性をテストする.

要約する

この戦略は,全体として量的なトレンド追跡戦略である.VIDYA指標を使用してトレンドの方向性を判断し,暗号通貨の長期的なトレンド状況を簡単に効果的に把握している.しかし,いくつかの制限があり,戦略をより堅牢で実用的に実行できるようにするために,止損,ポジション管理などの側面をさらに最適化する必要がある.全体的に,暗号通貨トレンド戦略を構築するための基礎的枠組みとアイデアを提供しているが,実際のアプリケーションでは慎重に評価する必要がある.

ストラテジーソースコード
/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
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/
// @version=5
// Author = TradeAutomation


strategy(title="VIDYA Trend Strategy", shorttitle="VIDYA Trend Strategy", process_orders_on_close=true, overlay=true, pyramiding=25,  commission_type=strategy.commission.percent, commission_value=.075, slippage = 1, initial_capital = 1000000, default_qty_type=strategy.percent_of_equity, default_qty_value=4)


// Backtest Date Range Inputs // 
StartTime = input(defval=timestamp('01 Jan 2000 08:00'), group="Date Range", title='Start Time')
EndTime = input(defval=timestamp('01 Jan 2099 00:00'), group="Date Range", title='End Time')
InDateRange = true

// Strategy Inputs //
len = input.int(title="VIDYA Length", defval=50, step=5,group="Trend Settings")
src = input.source(title="VIDYA Price Source",defval=ohlc4, group="Trend Settings")

// VIDYA Calculations //
valpha=2/(len+1)
vud1=src>src[1] ? src-src[1] : 0
vdd1=src<src[1] ? src[1]-src : 0
vUD=math.sum(vud1,9)
vDD=math.sum(vdd1,9)
vCMO=nz((vUD-vDD)/(vUD+vDD))
var VIDYA = 0.0
VIDYA := na(VIDYA[1]) ? ta.sma(src, len) : nz(valpha*math.abs(vCMO)*src)+(1-valpha*math.abs(vCMO))*nz(VIDYA[1])
plot(VIDYA, title="VIDYA",color=(VIDYA > VIDYA[1]) ? color.green : (VIDYA<VIDYA[1]) ? color.red : (VIDYA==VIDYA[1]) ? color.gray : color.black, linewidth=2)

// Entry & Exit Signals //
if (InDateRange)
    strategy.entry("Long", strategy.long, when = VIDYA>VIDYA[1])
    strategy.close("Long", when = VIDYA<VIDYA[1])
if (not InDateRange)
    strategy.close_all()