この戦略は,2つの指標を組み合わせます 移動平均逆転と価格デトレンドオシレーターです 取引シグナルを生成し サイクル逆転後の反転傾向を捉えます
この戦略は,主に以下の2つの技術指標を使用して取引信号を判断します.
移動平均の逆転
逆転シグナルが発生するかどうかを判断するために,過去2日の価格上昇傾向または下落傾向を高速線K値と組み合わせて計算します. 過去2日間で価格が上昇し続け,高速線K値がスローラインK値よりも低い場合,購入信号が生成されます. 過去2日間で価格が低下し続け,高速線K値がスローラインK値よりも高い場合,販売信号が生成されます.
価格デトレンドオシレーター
デトレンド価格振動器は水平移動平均線を描き,価格と線との関係に基づいて価格サイクルを識別する.計算期間よりも長い傾向をフィルタリングし,隠された短期変動を明らかにする.価格が移動平均線の上にあるとき,それは購入信号である.価格がラインの下にあるとき,それは販売信号である.
この戦略は,2つの指標のシグナルを組み合わせます.つまり,移動平均逆転シグナルが表示され,価格デトレンドオシレーターも逆転シグナルを確認すると,取引オーダーが生成されます.これはいくつかの無効な逆転シグナルをフィルタリングし,逆転後にリバウンドトレンドを捕捉することができます.
この戦略の最大の利点は,不有効な信号を効果的にフィルターし,信号の信頼性を高めることができる補完的な確認のための2つの指標の強みをうまく利用することです.
移動平均逆転指標自体は誤った信号を生成する傾向がある.判断のためにそれだけに頼ることは,上位と底部を追いかける傾向がある.組み合わせのための価格デトレンド振動器の導入は,理想的な振動圏ではない逆転操作を回避することができる.
価格デトレンドオシレータのパラメータ設定は,短期変動のみを特定することを決定します.これは移動平均逆転の判断と非常によく一致し,合理的な逆転タイミングを特定することができます.
この戦略の主なリスクは以下のとおりです.
移動平均の逆転は横向の範囲で起こる傾向があります.リバウンドモメンタムが不十分であれば,再びコールバックしてストップロスを触れる可能性があり,利益を得ることはできません.
価格デトレンドオシレータのパラメータが大きすぎると,中長期の傾向が特定され,小さすぎると,誤判のリスクが増加します.パラメータは異なる製品に対して慎重にテストする必要があります.
主要なニュースイベントは,既存のトレンド判断を混乱させ,逆転信号の失敗をもたらします.ニュースイベントが発生したとき,基本面に注意を払い,盲目取引を避ける必要があります.
この戦略は,次の側面においてさらに最適化することができる.
単一の損失を制御するために,合理的にストップ損失またはタイムストップ損失を設定します.
音量確認を追加し,平均音量を突破するときにのみ信号を発信するなど,動量不足による非効率な突破を避ける.
市場状況に合わせてパラメータを動的に最適化し,明らかなトレンドでパラメータを適切に緩和し,統合時にパラメータを厳しくします.
ランダムフォレストのような機械学習方法を用いて ダイナミックなインテリジェント最適化を実現するために パラメータの組み合わせを評価し選択します
この戦略は,2つの指標の強みを合理的に組み合わせて,反転点での反転傾向を捉える. 罠にかかったことやパラメータ最適化などの問題が残っているにもかかわらず,全体的な考えは明確で論理的です. 安定した利益を達成するために,さらなるテストと最適化に価値がある.
/*backtest start: 2023-10-15 00:00:00 end: 2023-11-14 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 30/12/2019 // This is combo strategies for get a cumulative signal. // // First strategy // This System was created from the Book "How I Tripled My Money In The // Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies. // The strategy buys at market, if close price is higher than the previous close // during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. // The strategy sells at market, if close price is lower than the previous close price // during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50. // // Second strategy // The Detrend Price Osc indicator is similar to a moving average, // in that it filters out trends in prices to more easily identify // cycles. The indicator is an attempt to define cycles in a trend // by drawing a moving average as a horizontal straight line and // placing prices along the line according to their relation to a // moving average. It provides a means of identifying underlying // cycles not apparent when the moving average is viewed within a // price chart. Cycles of a longer duration than the Length (number // of bars used to calculate the Detrend Price Osc) are effectively // filtered or removed by the oscillator. // // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// Reversal123(Length, KSmoothing, DLength, Level) => vFast = sma(stoch(close, high, low, Length), KSmoothing) vSlow = sma(vFast, DLength) pos = 0.0 pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1, iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) pos DPO(Length) => pos = 0.0 xPrice = close xsma = sma(xPrice, Length) nRes = xPrice - xsma pos := iff(nRes > 0, 1, iff(nRes < 0, -1, nz(pos[1], 0))) pos strategy(title="Combo Backtest 123 Detrended Price Oscillator", shorttitle="Combo", overlay = true) Length = input(14, minval=1) KSmoothing = input(1, minval=1) DLength = input(3, minval=1) Level = input(50, minval=1) //------------------------- LengthDPO = input(14, minval=1) reverse = input(false, title="Trade reverse") posReversal123 = Reversal123(Length, KSmoothing, DLength, Level) posDPO = DPO(LengthDPO) pos = iff(posReversal123 == 1 and posDPO == 1 , 1, iff(posReversal123 == -1 and posDPO == -1, -1, 0)) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1 , 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) if (possig == 0) strategy.close_all() barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )