この戦略は,高速移動平均値,スロー移動平均値,MACD指標を計算して価格傾向を判断し,ゴールデンクロスとデッドクロス取引シグナルを構築します.また,利益をロックし,トレンドを継続的に追跡するために,利益,ストップ損失,ストップ損失を組み合わせます.
この戦略は主に3つの指標に基づいています.
まず,高速移動平均と2つのスロームービング平均を計算します.高速MAが2つのスローMAを超えると,購入信号が生成されます.高速MAが2つのスローMAを下回ると,販売信号が生成されます.これは,ゴールデンクロスとデッドクロス取引を実現するための短期および長期トレンドの関係を判断します.
2つ目は,MACD線,信号線,ヒストグラムを含むMACD指標を計算する.MACDヒストグラム > 0の場合,それは上昇指標であり,MACDヒストグラム < 0の場合,それは下落指標である.これは黄金十字と死十字信号の信頼性を判断するのに役立ちます.
最後に,Take Profit,Stop Loss,Trailing Stop Lossメカニズムを組み込みます.Take ProfitとStop Lossポイントは,利益をロックし,リスクを制御するために使用されます.Trailing Stop Lossは,利益を追跡するために使用されます.
この戦略の利点は以下の通りです.
リスクもあります:
解決策は次のとおりです
戦略は,次の側面からも最適化できます.
概要すると,これは,トレンドを判断し,ストップロスを実現するためにゴールドクロス,デッドクロス,MACDを使用するシンプルで効果的な戦略です.利点はトレンド追跡と高度なカスタマイズ可能性のある利益ロックです.これはさまざまな取引ツールに適した汎用パラメータ最適化戦略です.まだいくつかのリスクと最適化スペースがありますが,全体的には信頼性と実用的な取引戦略です.
/*backtest start: 2023-12-14 00:00:00 end: 2023-12-21 00:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy('The Puria Method', shorttitle = 'Puria',overlay = true) //=== GENERAL INPUTS === // short ma maFastSource = input(defval = close, title = "Fast MA Source") maFastLength = input(defval = 5, title = "Fast MA Period", minval = 1) // long ma 1 maSlow1Source = input(defval = low, title = "Slow MA1 Source") maSlow1Length = input(defval = 85, title = "Slow MA Period", minval = 1) // long ma 2 maSlow2Source = input(defval = low, title = "Slow MA2 Source") maSlow2Length = input(defval = 75, title = "Slow MA Period", minval = 1) //macd macdFastLength = input(defval = 12, title = "Fast MACD Period", minval = 1) macdSlowLength = input(defval = 26, title = "Slow MACD Period", minval = 1) macdSmaLength = input(defval = 9, title = "SMA MACD Period", minval = 1) // the risk management inputs inpTakeProfit = input(defval = 30, title = "Take Profit", minval = 0) inpStopLoss = input(defval = 10, title = "Stop Loss", minval = 0) inpTrailStop = input(defval = 5, title = "Trailing Stop Loss", minval = 0) inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0) // if an input is less than 1, assuming not wanted so we assign 'na' value to disable it. useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na // === SERIES SETUP === maFast = ema(maFastSource, maFastLength) maSlow1 = wma(maSlow1Source, maSlow1Length) maSlow2 = wma(maSlow2Source, maSlow2Length) [_, signal, histLine] = macd(close, macdFastLength, macdSlowLength, macdSmaLength) // === PLOTTING === fast = plot(maFast, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50) slow1 = plot(maSlow1, title = "Slow MA1", color = red, linewidth = 2, style = line, transp = 50) slow2 = plot(maSlow2, title = "Slow MA2", color = red, linewidth = 2, style = line, transp = 50) // === LOGIC === signalUp = crossover(maFast, maSlow1) and crossover(maFast, maSlow2) and histLine > 0 signalDown = crossunder(maFast, maSlow1) and crossunder(maFast, maSlow2) and histLine < 0 // ===STRATEGY=== strategy.entry(id = "Long", long = true, when = signalUp) strategy.entry(id = "Short", long = false, when = signalDown) strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset) strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)