二重移動平均オシレーション取引戦略


作成日: 2023-12-04 15:28:12 最終変更日: 2023-12-04 15:28:12
コピー: 0 クリック数: 614
1
フォロー
1619
フォロワー

二重移動平均オシレーション取引戦略

概要

双均線振動トレード戦略は,2/20指数移動平均と自己適応価格帯の振動指標を組み合わせて取引信号を形成し,振動状況で利益を得ます. この戦略は,株式指数,外貨,商品,デジタル通貨などの明らかに振動的な特徴を持つ市場に適用されます.

戦略原則

双重均線振動取引戦略は,次の2つの部分から構成されています.

  1. 2/20指数移動平均. この指標は,価格が上昇して20日線を突破し,下落が2日線を突破しないときに買取シグナルを生成する.価格が下落して2日線を突破し,上昇が20日線を突破しないときに売出シグナルを生成する.

  2. 適応価格帯の振動指数.この指数は,価格の波動範囲に基づいて価格帯を構成し,価格が上下価格帯を突破して市場の転換点を判断し,買入と売却のシグナルを生成する.

双均線振動取引戦略は,2/20指数移動平均と自適性価格帯振動指標が同時に信号を発信するときに,実際の取引信号を生成し,戦略取引を実現する.これは,部分的に無効な信号を効果的にフィルターして,信号の質を向上させる.

優位分析

二重均線振動取引戦略は,均線指数と波動性指数の優位性を利用し,以下の特性を有する.

  1. 信頼性の高い取引シグナル。 双重指標検証により信号品質が向上し,有効なフィルターで無効な信号。

  2. 震動状況に適応する. 平均線と価格帯の指標の組み合わせを使用し,震動状況の転換点を正確に判定することができる.

  3. 操作頻度は適度である.双指数移動平均戦略より,無効取引の発生を減らすことができる.

  4. 自動取引を容易に実施する. 信号規則は明確で,パラメータ設定は簡単で,自動取引を容易にプログラムする.

リスク分析

双重均線振動取引策には以下のリスクがあります.

  1. 信号の遅延が大きい可能性があります. 二重指数組合せはフィルター信号を出し,価格の急速な反転のチャンスを逃す可能性があります.

  2. 震動が弱くると効果が弱くなります.戦略は主に震動の状況に依存し,震動性が弱くると取引信号と利益の余地が減少します.

  3. パラメータ最適化の影響は顕著である.指標のパラメータ設定は取引結果に大きな影響を与えるため,最適のパラメータを決定するためにシステム最適化をする必要がある.

上述のリスクに対して,市場環境の変化に対応するために,動的にパラメータを調整する方法を採用することができ,同時に,損失のリスクを制御するストップ・ローズ戦略を設定できます.

最適化の方向

二重均線振動取引戦略は,以下のいくつかの点で最適化できます.

  1. 平均線と価格帯のパラメータの組み合わせをテストする. 異なる長さの平均線と価格帯のパラメータを体系的にテストし,最適のパラメータの組み合わせを探す.

  2. 取引量指数フィルタリングシグナルを追加する. 取引量異常シグナルフィルタリング平均線価格シグナルと組み合わせて,信号品質をさらに向上させる.

  3. ダイナミック・ストップ・メカニズムを設定する.市場の変動が弱くなり,ストップ・ロスを適切に締め,単一損失を減らす.

  4. ディープ・ラーニング・モデルと組み合わせた.LSTMなどのディープ・ラーニング・モデルを使用して取引信号を検証し,戦略をより賢くする.

要約する

二重均線振動取引戦略は,2/20指数移動平均と自己適応価格帯振動指標を組み合わせて,高品質の振動取引シグナルを生成し,株式指数,外為,大宗商品などの波動性の高い市場に対応し,振動区間の間で頻繁に取引アバターを行う.この戦略は,シグナル品質が高く,自動化が容易であるなどの利点を持っています.同時に,ターニングポイントと動態調整パラメータの遅延認識のリスクを制御する注意が必要です.この基礎で,まだ大きな最適化スペースがあります.

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

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 02/03/2022
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov 
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// Second strategy
// The adaptive price zone (APZ) is a volatility-based technical indicator that helps investors 
// identify possible market turning points, which can be especially useful in a sideways-moving 
// market. It was created by technical analyst Lee Leibfarth in the article “Identify the 
// Turning Point: Trading With An Adaptive Price Zone,” which appeared in the September 2006 issue 
// of the journal Technical Analysis of Stocks and Commodities.
// This indicator attempts to signal significant price movements by using a set of bands based on 
// short-term, double-smoothed exponential moving averages that lag only slightly behind price changes. 
// It can help short-term investors and day traders profit in volatile markets by signaling price 
// reversal points, which can indicate potentially lucrative times to buy or sell. The APZ can be 
// implemented as part of an automated trading system and can be applied to the charts of all tradeable assets.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
EMA20(Length) =>
    pos = 0.0
    xPrice = close
    xXA = ta.ema(xPrice, Length)
    nHH = math.max(high, high[1])
    nLL = math.min(low, low[1])
    nXS = nLL > xXA or nHH < xXA ? nLL : nHH
    iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0)
    pos := nXS > close[1] ? -1 : iff_1
    pos

APZ(nPeriods,nBandPct) =>
    pos = 0.0
    xHL = high - low
    nP = math.ceil(math.sqrt(nPeriods))
    xVal1 = ta.ema(ta.ema(close,nP), nP)
    xVal2 = ta.ema(ta.ema(xHL,nP), nP)
    UpBand = nBandPct * xVal2 + xVal1
    DnBand = xVal1 - nBandPct * xVal2
    pos := low < DnBand ? 1 : high > UpBand ? -1 : pos[1] 
    pos

strategy(title='Combo 2/20 EMA & Adaptive Price Zone', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ Adaptive Price Zone  ═════●'
nPeriods = input(20)
nBandPct = input(2)
var misc = '●═════ MISC ═════●'
reverse = input.bool(false, title='Trade reverse', group=misc)
var timePeriodHeader = '●═════ Time Start ═════●'
d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader)
m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader)
y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader)

StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false
posEMA20 = EMA20(Length)
prePosAPZ = APZ(nPeriods,nBandPct)
iff_1 = posEMA20 == -1 and prePosAPZ == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosAPZ == 1 and StartTrade ? 1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
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)