移動平均エンベロープ戦略の反転


作成日: 2023-10-20 16:05:43 最終変更日: 2023-10-20 16:05:43
コピー: 0 クリック数: 766
1
フォロー
1617
フォロワー

移動平均エンベロープ戦略の反転

概要

逆転均線包網戦略は,逆転取引と均線包網の2つの主要技術指標を総合的に利用する量化取引戦略である.それは,逆転戦略が市場逆転の機会と均線包網の判断トレンド方向の優位性を統合して,安定した利益を実現する.

戦略原則

この戦略は2つの部分から構成されています.

第”部は123反転戦略である。その取引信号はランダムな指標KDJからである。具体的論理は:閉盘価格が2連取引日前日の閉盘価格より低く,そして9日のランダムなスローラインが50より低いなら,買入信号を生成する.閉盘価格が2連取引日前日の閉盘価格より高く,そして9日のランダムなスローラインが50より高いなら,売り出信号を生成する。

第2部は均線包網戦略である。この戦略は均線と均線上下2つの包網線を用いてトレンドを判定する。具体的論理は,閉盘価格が上線より高い場合,買入シグナルを生成し,閉盘価格が下線より低い場合,売り出シグナルを生成する。

この戦略は,上記の2つの取引シグナルを総合的に利用し,123反転と均線包囲ネットワークが同時に買取シグナルを発信するとき,戦略はポジションを多く開きます.両者が同時に売るシグナルを発信するとき,戦略はポジションを空にするだけです.このようにして,一部の無効なシグナルをフィルターして,取引頻度を低下させながら,利益率を向上させることができます.

優位分析

  • 逆転とトレンドを組み合わせて,利益の確率を高める

123反転戦略は,重要なサポート抵抗の近くにある反転の機会を捉えるのに優れている.均線包網戦略は,トレンドの方向を正確に判断できます.両方を組み合わせて使用すると,高い確率の位置で反転を捉えることができます.

  • ダブルフィルタリングにより取引頻度が低下

策略は,両方の指標が同時に信号を発信するときにのみ,ポジションを開きます.これは,単一の指標によって引き起こされる無効な信号の干渉を避け,取引の頻度を低下させ,取引コストを減らすのに役立ちます.

  • パラメトリザブルパラメータは,戦略に柔軟性を与える

戦略の指標パラメータは調整可能であり,ユーザーは市場状況と個人の好みに応じて適切なパラメータの組み合わせを選択し,戦略をより適応的にすることができます.

  • 単一取引は 操作を簡素化しました

この戦略は,多頭または空頭単面取引のみを行い,反転開設は行わない.これは,戦略の操作ロジックを簡素化し,durationsのリスクを低減する.

リスク分析

  • 逆転取引はトレンドを捉えにくい

この戦略は,主に反転取引で利益を得ることに依存している. 長期にわたる一方的なトレンドが起こると,この戦略は,連続した損失を生じかねない.

  • パラメータ最適化の難しさ

策略には複数の調整可能なパラメータが含まれているため,パラメータの最適化には一定の困難が生じます.不適切なパラメータの組み合わせは,策略のパフォーマンスを影響する可能性があります.

  • ポジション交換の頻度が高まり,取引リスクも高まる

戦略は,頻繁にポジションを交換し,小さな利益を得ることができますが,頻繁に取引すると,取引コストと意外なリスクが増加します.

  • 最大の撤収を制限できない

戦略には止損点が設定されず,最大撤退を効果的に制御することはできません.重大ブラック天事件が発生した場合,戦略は大きな損失に直面する可能性があります.

最適化の方向

  • ストップ・ロスの策略を増やす

移動ストップまたはトラッキングストップを設定して最大撤退を制限できます. 市場が異常な変化を起こしたときに,早期のストップは資金を保護します.

  • オプティマイズパラメータの組み合わせ

回測と模擬取引による最適化パラメータを決定し,最適化パラメータの組み合わせを決定し,戦略の安定性を高めます.また,動的パラメータの最適化メカニズムを設計し,戦略をより適応的にすることができます.

  • 他の指標と組み合わせたフィルタリング信号

MACD,ブリン帯などの指標を追加して取引信号を検証することで,信号の質をさらに向上させ,無効取引を減らすことができます.

  • 取引の頻度を下げること

逆転条件の適切な緩和と平均線パラメータの調整により,ポジションの交換頻度が低下し,取引コストと意外なリスクの軽減に役立ちます.

要約する

逆転均等線包ネットワーク戦略は,逆転取引とトレンド追跡の総合的な適用の優位性を,リスクを制御した前提で,安定した余剰収益を実現する.この戦略は,さらに最適化され,そのパラメータの組み合わせをより科学的に合理化して,より優れた取引パフォーマンスを得る.それは,複数の取引シグナルを組み合わせた効果的な戦略理念を提供し,トレンド情勢と市場全体に適用され,トレーダーが学習し,使用する価値を定量化します.

ストラテジーソースコード
/*backtest
start: 2023-09-19 00:00:00
end: 2023-10-19 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 22/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 Envelopes are percentage-based envelopes set above and 
// below a moving average. The moving average, which forms the base for 
// this indicator, can be a simple or exponential moving average. Each 
// envelope is then set the same percentage above or below the moving average. 
// This creates parallel bands that follow price action. With a moving average 
// as the base, Moving Average Envelopes can be used as a trend following indicator. 
// However, this indicator is not limited to just trend following. The envelopes 
// can also be used to identify overbought and oversold levels when the trend is 
// relatively flat. 
//
// 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


MAE(Length,PercentShift) =>
    pos = 0.0
    xSMA = sma(close, Length)
    xHighBand = xSMA + (xSMA * PercentShift / 100)
    xLowBand = xSMA - (xSMA * PercentShift / 100)
    pos := iff(close > xHighBand, 1,
             iff(close <xLowBand, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Moving Average Envelopes", 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 Envelope ----")
LengthMA = input(18, minval=1)
PercentShift = input(0.2, minval = 0.01, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMAE = MAE(LengthMA,PercentShift)
pos = iff(posReversal123 == 1 and posMAE == 1 , 1,
	   iff(posReversal123 == -1 and posMAE == -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 )