この戦略は,取引方向を決定するために価格勢力の指標を使用します.具体的には,移動平均値と平均価格をそれぞれ計算します.価格が移動平均値と平均価格を超えると,購入信号が生成されます.偽信号をフィルタリングするには,同様の以前の信号を必要としません.その後,信号の状態を保存し,移動平均値と組み合わせて最終的なオープニングポジション信号を生成します.この戦略にはストップ損失と利益の設定も含まれます.
この戦略は,傾向の方向を判断するために主に価格動向指標に依存する.まずは移動平均値と価格の平均値を計算する.
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
誤った信号をフィルターで排除し より信頼性の高い信号になります
ストップ・ロスの設定は,ストップ・ロスの距離を設定し,ストップ・ロスの一定倍数に設定する.
この戦略には以下の利点があります.
この戦略にはいくつかのリスクもあります:
対策:
この戦略は,次の方向でも最適化できます.
これらの最適化は 戦略の柔軟性,安定性,収益性を向上させることができる.
総じて,この価格モメンタム追跡戦略は,シンプルで直接的で論理的なトレンド追跡戦略である.この戦略は価格モメンタム方向性を決定するために価格移動平均値と平均価格を使用し,信号品質を改善するために多段階の検証メカニズムを設計している.この戦略には合理的なストップ損失と利益の設定も含まれている.コードの観点から,戦略ロジックは非常に簡潔で,実行するにはパインスクリプトの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)