価格動向を追跡する戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-03 17:32:14
タグ:

img

概要

この戦略は,取引方向を決定するために価格勢力の指標を使用します.具体的には,移動平均値と平均価格をそれぞれ計算します.価格が移動平均値と平均価格を超えると,購入信号が生成されます.偽信号をフィルタリングするには,同様の以前の信号を必要としません.その後,信号の状態を保存し,移動平均値と組み合わせて最終的なオープニングポジション信号を生成します.この戦略にはストップ損失と利益の設定も含まれます.

戦略原則

この戦略は,傾向の方向を判断するために主に価格動向指標に依存する.まずは移動平均値と価格の平均値を計算する.

swmaClose = swma(close)
vwapClose = vwap(close) 

どこにswma滑らかな移動平均値で,vwap両方とも平均価格レベルを反映することができる.

平均値と価格を比較して 価格が移動平均値と平均値を超えているかどうかを判断します

swmaLong = close > swmaClose 
vwapLong = close > vwapClose

誤った信号をフィルタリングするには,次の2つの指標から先行信号を必要としません.

triggerLong = vwapLong and not vwapLong[1] and not swmaLong and not swmaLong[1] 

次は,上昇信号を保存します.

saveLong = false, saveLong := triggerLong ? true : not vwapLong ? false : saveLong[1] 

最後に,保存された交差信号と価格が再び移動平均値を超えると,開口ポジション信号を生成します.

startLong = saveLong and swmaLong

誤った信号をフィルターで排除し より信頼性の高い信号になります

ストップ・ロスの設定は,ストップ・ロスの距離を設定し,ストップ・ロスの一定倍数に設定する.

利点分析

この戦略には以下の利点があります.

  1. 価格動向指標を使用することで,傾向の方向性をよりよく判断できます.
  2. 二重指標と多段階検証の組み合わせにより,誤った信号をフィルタリングし,戦略をより信頼性のあるものにすることができます.
  3. ストップ・ロストと得益の設定は,単一の取引リスクを制御するために合理的です.
  4. 戦略パラメータは,異なる市場環境に適応するように設定できます.
  5. 戦略の論理は単純で直結しやすく,理解し実行しやすい

リスク分析

この戦略にはいくつかのリスクもあります:

  1. 移動平均指標は遅れがあり,価格変動を見逃す可能性があります.
  2. 異なるパラメータの組み合わせは大きな違いを生むことができます
  3. 購入信号は比較的少なく,見逃した取引リスクもいくつかあります.
  4. 多段階の検証は,利益レベルに影響を与えるかもしれないいくつかの機会をフィルタリングします

対策:

  1. パラメータ最適化のために異なる移動平均パラメータをテスト
  2. 購入信号を増やすために論理的な判断を略微簡化
  3. 単一の損失を制御するためにストップ損失と利益率を調整する

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

この戦略は,次の方向でも最適化できます.

  1. MACD,DMIなどより多くの価格動向指標をテストします.
  2. 双方向取引を実装するために販売信号判断を追加
  3. 取引量の指標を組み込むことにより,潜在的な偽ブレイクを回避する.
  4. バックテスト結果に基づいてパラメータ設定を最適化
  5. 市場状況に基づいてパラメータを自動的に調整することを検討する
  6. パラメータ自適性最適化を達成するために機械学習アルゴリズムを追加する

これらの最適化は 戦略の柔軟性,安定性,収益性を向上させることができる.

概要

総じて,この価格モメンタム追跡戦略は,シンプルで直接的で論理的なトレンド追跡戦略である.この戦略は価格モメンタム方向性を決定するために価格移動平均値と平均価格を使用し,信号品質を改善するために多段階の検証メカニズムを設計している.この戦略には合理的なストップ損失と利益の設定も含まれている.コードの観点から,戦略ロジックは非常に簡潔で,実行するにはパインスクリプトの20行以上しか必要ありません.要約すると,この戦略は非常に良い学習例であり,初心者は定量的な取引戦略を理解するための非常に良い出発点として使用することができます.もちろん,この戦略自体は実用的な取引価値を持っています.パラメータ最適化と機能拡張を通じて,ノイズとトレンドを避けるための実用的なトラッキングシステムになることができます.


/*backtest
start: 2023-12-03 00:00:00
end: 2024-01-02 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "Simple Price Momentum", shorttitle = "SPM", overlay = true, initial_capital = 20000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, commission_value = 0.025)

// How To Create A Simple Trading Strategy With TradingView
// https://docs.google.com/document/d/1fXxCtPuGgTXb-RuBJNbwlfgkeiLTK5060LfTrzRlr5k/view

swmaClose = swma(close)
vwapClose = vwap(close)

swmaLong = close > swmaClose
vwapLong = close > vwapClose

triggerLong = vwapLong and not vwapLong[1] and not swmaLong and not swmaLong[1]
saveLong = false, saveLong := triggerLong ? true : not vwapLong ? false : saveLong[1]

startLong = saveLong and swmaLong
startLong := input(false, "Consecutive Orders") ? startLong : startLong and not startLong[1]

stopLoss = input(250, "Stop Loss", step = 50)
takeProfit = input(10, "Reward/Risk") * stopLoss

strategy.entry("Open Long", strategy.long, when = startLong)
strategy.exit("Exit Long", "Open Long", profit = stopLoss, loss = takeProfit)

// bgcolor(swmaLong ? color.blue : na)
// bgcolor(vwapLong ? color.orange : na)
// bgcolor(triggerLong ? color.purple : na)
// bgcolor(saveLong ? color.yellow : na)
bgcolor(startLong[1] ? color.green : na)


もっと