この戦略は,高速および遅い移動平均の黄金十字と死十字に基づいて設計されています.高速MAが遅いMAを超えると,ロングに行く.高速MAが遅いMAを下回ると,ショートに行く.この戦略は中長期取引に適しており,市場のトレンド逆転を捉えることができます.
この戦略は,指数的な移動平均線 (EMA) を用いて,高速線と遅い線を計算する.高速MAの長さは10期,遅いMAの長さは30期である.この戦略は,まず高速EMAと遅いEMAを計算し,その後線をプロットし,トレンド方向を示すために異なる色の背景を示します.
本日の閉店が高速MAより上,高速MAが遅いMAより上である場合,背景は緑色で,上昇傾向を示す.本日の閉店が高速MAより下,高速MAが遅いMAより下である場合,背景は赤色で,低下傾向を示す.
上向きのトレンドでは,赤色のキャンドルストイック (オープンの下の閉じる) が存在し,昨日も赤色のキャンドルストイックであった場合,ロングします.300ポイントでストップロスを設定し,ショートポジションを閉じて利益を得ます.
ダウントレンドでは,緑色のキャンドルスタイク (オープン上の閉じる) が存在し,昨日も緑色のキャンドルスタイクであった場合,ショートします. 300ポイントにストップロスを設定し,ロングポジションを閉じて利益を得ます.
各方向のポジションを開いた後,保持時間が1008000000ミリ秒 (約2週間) を超えると,行き詰まりを防ぐためにポジションを強制的に閉じる.
この戦略は,誤った信号を避けるために追加のルールでトレンドとキャンドルスタックフィルターのためのダブルEMAを使用し,全体的に非常にバランスのとれたものです.しかし,EMAパラメータとストップ損失/利益ルールはさらなる最適化が必要です.全体として信頼性の高いトレンド取引戦略です.
/*backtest start: 2023-10-10 00:00:00 end: 2023-11-09 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/ // © yeainshukla //@version=5 strategy('BuyRedSellGreen4H', overlay = true) greenCandle = close > open redCandle = open > close start = timestamp(2023,9,18,0,00) end = timestamp(2023,12,31,0,00) fastLength = input.int(10, title="Fast Average Length") slowLength = input.int(30, title="Slow Average Length") averageData = input.source(close, title="Average Data Source") // Calculate exponential moving averages fastAverage = ta.ema(averageData, fastLength) slowAverage = ta.ema(averageData, slowLength) // Plot averages plot(fastAverage, color=color.navy, title="Fast EMA") plot(slowAverage, color=color.fuchsia, linewidth=2, title="Slow EMA") // Show the moving average trend with a coloured background backgroundColor = if close > fastAverage and fastAverage > slowAverage color.new(color.green, 85) else if close < fastAverage and fastAverage < slowAverage color.new(color.red, 85) else color.new(color.orange, 90) bgcolor(backgroundColor, title="EMA Background") if time >= start and time < end if(close < open) if(close[1] < open[1]) strategy.entry("Enter Long", strategy.long) strategy.exit("Exit Long", from_entry="Enter Long") strategy.close("Enter Short") else if(close[1] > open[1]) strategy.entry("Enter Short", strategy.short) strategy.exit("Exit Short", from_entry="Enter Short") strategy.close("Enter Long") if strategy.position_size < 0 or strategy.position_size > 0// short and long is opened. if((time - strategy.opentrades.entry_time(strategy.opentrades - 1)) > 1008000000) strategy.close("Enter Short") strategy.close("Enter Long")