2つの移動平均価格逆転のブレイクアウト戦略

作者: リン・ハーンチャオチャン, 日付: 2023-12-07 18:15:12
タグ:

img

概要

ダブル・ムービング・平均値逆転ブレイクアウト戦略は,より高品質のエントリー機会を特定するために,ダブル・トレード・シグナルを組み合わせます.まず,9日間の移動平均値とその上下レールを用いて基本的なブレイクアウトフレームワークを構築し,その後123パターンを使用して機会の方向性を判断した後,シグナルをフィルタリングするためにストキャスティック指標を導入し,最終的に比較的厳格なエントリールールを形成します.この種の組み合わせフィルタリング方法は,中長期保有に適したシグナル品質を確保しながら,取引頻度を効果的に削減することができます.

原則

双重移動平均価格逆転ブレイクアウト戦略は2つのサブ戦略で構成されています.

第1サブ戦略は123パターン判断である.この戦略は,前2日間の閉値関係を使用して,将来の価格ブレイクの可能性のある方向を判断する.今日の閉値が前日の閉値と比較して上昇し,前日の閉値が2日前の閉値と比較して下がった場合,それは購入信号とみなされる.今日の閉値が前日の閉値と比較して低下し,前日の閉値が2日前の閉値と比較して上昇した場合,それは販売信号とみなされる.このパターンは,短期感情が悲観主義から楽観主義へ,または楽観主義から悲観主義へ転換する重要なターニングポイントを反映すると考えられる.ここで,ストコハスティック指標を使用して購入と売却信号を再確認し,ストコハスティック指標が対応するオーバーセールまたはオーバーセール信号を与える場合にのみ最終操作を生成する.

2つ目のサブ戦略は,移動平均チャネルブレイクアウトである.この戦略は,最初に指定されたサイクルの指数関数移動平均線 (例えば9日) を計算し,その後,チャネルの上下線としてその上下を一定の割合で加算する.価格が上下線を突破した場合,販売信号が生成される.価格が下下線を突破した場合,購入信号が生成される.ここで,上下線の膨張と収縮幅は,信号周波数を調整する百分比因子によって制御することができる.

最後に,2つのサブ戦略のシグナル方向が一貫しているときのみ,つまり123の逆転信号とチャネルブレイクアウト信号が同じ方向にあるときのみ,実際の取引を導くための実際の信号が最終的に生成されます.この二重フィルタリングメカニズムは多くの偽信号をフィルタリングし,取引頻度を削減し,各取引の高い信頼性を確保できます.

利点分析

二重移動平均価格逆転ブレイクアウト戦略は,複数の分析方法を組み合わせ,以下の利点があります.

  1. 双重信号フィルタリングメカニズムは,無効な信号を効果的に削減し,取引の質を高めることができます.

  2. 123 パターン判断は短期的な逆転戦略に属し,移動チャネルブレイクアウトは中長期的トレンド追跡戦略に属します.両方を組み合わせることで,より良い利益を得るために,短期,中長期間の調整を達成できます.

  3. チャンネル上部と下部のレールの幅を調整することで,信号周波数は異なる取引の好みに合わせて自由に制御できます.

  4. チャンネルの中央線として9日間の移動平均を用いると,過度に頻繁な信号を避けるため,パラメータ選択がより合理的である.

  5. ストキャスト指標の過剰購入と過剰販売ゾーンを適用することで ショック市場に閉じ込められないのです

リスク分析

双重移動平均価格逆転ブレイクアウト戦略には,主に次の側面でいくつかのリスクがあります.

  1. 双面フィルターシグナルメカニズムは 片側戦略が把握できる機会を逃し,注文を逃すリスクもある.

  2. 123 買取・販売ポイントは,すべての偽のブレイクを完全にフィルタリングすることはできません.不適切な使用は損失につながる可能性があります.

  3. 市場が急激に変化した場合,不適切なストップロスの設定は大きな損失につながる可能性があります.

  4. ifft条件の論理は複雑である.不適切なパラメータは論理エラーに易いため,無効な信号判断をもたらす.

  5. サンプル外データはパラメータの安定性に影響し,パラメータのダイナミック最適化が必要です.

オプティマイゼーションの方向性

双動平均価格逆転ブレイクアウト戦略では,まだ最適化の余地があります.

  1. 異なる種類の移動平均をテストして,より良く安定した信号品質を持つパラメータの組み合わせを選択できます.

  2. 適切な幅のチャネルは,特定の製品データの特徴に応じて選択できます.

  3. ダイナミックストップ損失は最大損失比を制御するために組み合わせることができます.

  4. 戦略をより堅牢にするため,動的パラメータ最適化のために機械学習モデルを導入することができます.

  5. 取引量や波動性に基づくフィルターを追加することで,不安定な市場状況下で過度に頻繁なエントリーとアウトリースを回避できます.

結論

ダブル検証フィルタリングメカニズムを通じて,ダブル移動平均価格逆転ブレイアウト戦略は,短期間の逆転と中長期間のトレンド追跡をうまく組み合わせ,無効なシグナルを効果的にフィルタリングし,高品質のエントリー機会を選択できる効率的な取引システムを形成し,比較的強いカスタマイズ可能性を持っています.一般的なフレームワークとして,この戦略はパラメータ調整と機械学習最適化の下でまだ大きな使用可能性を持っています.


/*backtest
start: 2023-11-06 00:00:00
end: 2023-12-06 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/03/2021
// 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
// Moving Average Displaced Envelope. These envelopes are calculated 
// by multiplying percentage factors with their displaced expotential 
// moving average (EMA) core.
// How To Trade Using:
// Adjust the envelopes percentage factors to control the quantity and 
// quality of the signals. If a previous high goes above the envelope 
// a sell signal is generated. Conversely, if the previous low goes below 
// the envelope a buy signal is given.
//
// 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


MADE(Price,Period, perAb, perBl, disp) =>
    pos = 0.0
    sEMA = ema(Price, Period)
    top = sEMA[disp] * ((100 + perAb)/100)
    bott = sEMA[disp]* ((100 - perBl)/100)
    pos := iff(close < bott , 1,
    	     iff(close > top, -1, pos[1])) 
    pos

strategy(title="Combo Backtest 123 Reversal & MA Displaced Envelope", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- MA Displaced Envelope ----")
Price = input(title="Source", type=input.source, defval=close)
Period =input(defval=9, minval=1)
perAb = input(title = "Percent above", defval=.5, minval=0.01, step = 0.1)
perBl = input(title = "Percent below", defval=.5, minval=0.01, step = 0.1)
disp = input(title = "Displacement", defval=13, minval=1) 
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMADE = MADE(Price,Period, perAb, perBl, disp)
pos = iff(posReversal123 == 1 and posMADE == 1 , 1,
	   iff(posReversal123 == -1 and posMADE == -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 )

もっと