
この戦略は,価格動力の指標を用いて取引の方向性を判断する.具体的には,平均線と平均価格をそれぞれ計算し,価格が平均線と平均価格を横切るときに買入シグナルを生成する.偽信号をフィルターするために,以前に同様のシグナルがないことを要求する.その後,シグナル状態を保存し,平均線判断と組み合わせて最終的な開場シグナルを生成する.戦略は,ストップ・ロズとストップ・ストップの設定を同時に含む.
この戦略は,主に価格動力の指標に基づいてトレンドの方向を判断する.まずは価格の平均線と平均価格を計算する.
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行以上のpineスクリプトで実現できる.
/*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)