移動平均リバウンド蓄積戦略


作成日: 2023-12-28 15:25:29 最終変更日: 2023-12-28 15:25:29
コピー: 1 クリック数: 703
1
フォロー
1621
フォロワー

移動平均リバウンド蓄積戦略

概要

均線反転吸引策は,技術指標と価格形状を同時に組み合わせて,サポートレジスタンス位において多項空調操作を行う策である.この策は,均線指標を使用して市場のトレンド方向を識別し,価格極値に基づく形状指標を使用して反転点を決定し,前期高点低点と組み合わせて,重要なサポートと抵抗位置を判断し,これらの位において反転操作を行う.これは典型的な意味の反転策である.

戦略原則

この戦略は,以下のステップによって,操作のタイミングを判断します.

  1. 三均線Alligator指標を使用してトレンドの方向を判断する.価格線が指標のLip Linesを突破すると,より強い突破信号が発生したと考えられる.

  2. ピーク・トラウムのパターンの指標を用いて,価格がオーバーバイ・オーバーセール領域で反転するタイミングを識別する.ピーク・トラウムの特定の方向の極限点を破るとき,可能な反転信号として判断する.

  3. サポートとレジスタンス点を組み合わせて反転操作の特定のエントリーポイントを判断する. 価格が前期のサポートまたはレジスタンス点に近づくときにポジションを開設し,多額の空白を行う.

  4. 長期トレンドの方向を判断するためにEMA平均線指標を使用する.例えば,震動状況では,短期操作は跳躍逆転が主,傾向状況では順調操作が主である.

  5. 移動式ストップを導入し,単一損失を制御する.

戦略的優位性

この戦略には以下の利点があります.

  1. 複数の指標信号を組み合わせて判断の精度を高めます.

  2. キーサポートレジスタンスを利用して反転する,高確率操作である.

  3. 移動式ストップにより,単一損失を制限できます.

戦略リスク

この戦略には以下のリスクもあります.

  1. 複数の指標の組み合わせで判断すると,操作頻度が高い可能性があり,取引コスト管理に注意する必要がある.

  2. キーポイントの失敗は最大のリスクであり,価格が予想されたサポートまたはレジスタンスポイントの近くで反転しなかった場合,損失はかなり大きくなる可能性があります.

  3. 市場が急激に波動すると,移動停止は破られ,損失が拡大する可能性があります.

戦略最適化の方向性

この戦略は以下の点で最適化できます.

  1. 多指数重量を最適化して,最適なパラメータの組み合わせを見つけます.

  2. 機械学習のアルゴリズムを導入し, キービットの成功率を判断する.

  3. 取引量指数に追加し,価格が激しく波動し,取引量が不足している時に被套を避ける.

  4. モバイル・ストップモデルを最適化して,ストップ効果を保証しながら,必要のないストップの可能性を最小限に抑える.

要約する

概要として,この均線反彈吸引策は,均線,価格形状,支抵抗位など複数の指標を同時に利用して判断する典型的な技術策である.判断精度が高いこと,高い確率操作の利点があるが,重要な位の失敗や移動止まりが突破されるリスクにも注意する必要がある.多指標重量を継続的に最適化することで,機械学習や取引量指標などの手段によって,戦略の効果を一定程度向上させることができる.

ストラテジーソースコード
/*backtest
start: 2022-12-21 00:00:00
end: 2023-12-27 00:00:00
period: 1d
basePeriod: 1h
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/
// © vhurtadocos


//@version=5
strategy('Estrategia EMA Resistencia Soporte', shorttitle='Estrategia EMA RESISTENCIA Y SOPORTE', overlay=true, margin_long=100, margin_short=100, pyramiding = 10 )

//INICIO DE CONDICIONES BASICAS
/// Alligator
smma(src, length) =>
    smma = 0.0
    sma_1 = ta.sma(src, length)
    smma := na(smma[1]) ? sma_1 : (smma[1] * (length - 1) + src) / length
    smma
lipsLength = input(title='🐲 Lips Length', defval=5)
teethLength = input(title='🐲 Teeth Length', defval=8)
jawLength = input(title='🐲 Jaw Length', defval=13)
lipsOffset = input(title='🐲 Lips Offset', defval=3)
teethOffset = input(title='🐲 Teeth Offset', defval=5)
jawOffset = input(title='🐲 Jaw Offset', defval=8)
lips = smma(hl2, lipsLength)
teeth = smma(hl2, teethLength)
jaw = smma(hl2, jawLength)


// Fractals
n = input.int(title='📌 Period', defval=2, minval=2)
upFractal = high[n + 2] < high[n] and high[n + 1] < high[n] and high[n - 1] < high[n] and high[n - 2] < high[n] or high[n + 3] < high[n] and high[n + 2] < high[n] and high[n + 1] == high[n] and high[n - 1] < high[n] and high[n - 2] < high[n] or high[n + 4] < high[n] and high[n + 3] < high[n] and high[n + 2] == high[n] and high[n + 1] <= high[n] and high[n - 1] < high[n] and high[n - 2] < high[n] or high[n + 5] < high[n] and high[n + 4] < high[n] and high[n + 3] == high[n] and high[n + 2] == high[n] and high[n + 1] <= high[n] and high[n - 1] < high[n] and high[n - 2] < high[n] or high[n + 6] < high[n] and high[n + 5] < high[n] and high[n + 4] == high[n] and high[n + 3] <= high[n] and high[n + 2] == high[n] and high[n + 1] <= high[n] and high[n - 1] < high[n] and high[n - 2] < high[n]
dnFractal = low[n + 2] > low[n] and low[n + 1] > low[n] and low[n - 1] > low[n] and low[n - 2] > low[n] or low[n + 3] > low[n] and low[n + 2] > low[n] and low[n + 1] == low[n] and low[n - 1] > low[n] and low[n - 2] > low[n] or low[n + 4] > low[n] and low[n + 3] > low[n] and low[n + 2] == low[n] and low[n + 1] >= low[n] and low[n - 1] > low[n] and low[n - 2] > low[n] or low[n + 5] > low[n] and low[n + 4] > low[n] and low[n + 3] == low[n] and low[n + 2] == low[n] and low[n + 1] >= low[n] and low[n - 1] > low[n] and low[n - 2] > low[n] or low[n + 6] > low[n] and low[n + 5] > low[n] and low[n + 4] == low[n] and low[n + 3] >= low[n] and low[n + 2] == low[n] and low[n + 1] >= low[n] and low[n - 1] > low[n] and low[n - 2] > low[n]
plotshape(title='📌 Up-Fractal', series=upFractal, style=shape.triangleup, location=location.abovebar, offset=-2, color=color.new(color.olive, 0), text="R")
plotshape(title='📌 Down-Fractal', series=dnFractal, style=shape.triangledown, location=location.belowbar, offset=-2, color=color.new(color.maroon, 0), text="S", textcolor = color.new(color.maroon,0))

// Resistance, Support
showRS = input(title='⤒⤓ Show Res-Sup', defval=true)
lengthRS = input(title='⤒⤓ Res-Sup Length', defval=13)
highRS = ta.valuewhen(high >= ta.highest(high, lengthRS), high, 0)
lowRS = ta.valuewhen(low <= ta.lowest(low, lengthRS), low, 0)
plot(title='⤒ Resistance', series=showRS and highRS ? highRS : na, color=highRS != highRS[1] ? na : color.olive, linewidth=1, offset=0)
plot(title='⤓ Support', series=showRS and lowRS ? lowRS : na, color=lowRS != lowRS[1] ? na : color.maroon, linewidth=1, offset=0)




// EMA de 8 períodos
ema8 = ta.ema(close, 8)
plot(title='ema8', series=ema8, color=color.new(#dbef41, 0), offset=0)

// EMA de 21 períodos
ema21 = ta.ema(close, 21)
plot(title='ema21', series=ema21, color=color.new(#e12c0c, 0), offset=0)

// EMA de 50 períodos
ema50 = ta.ema(close, 50)
plot(title='ema50', series=ema50, color=color.new(#3419de, 0), offset=0)

// EMA de 200 períodos
ema200 = ta.ema(close, 200)
plot(title='ema200', series=ema200, color=color.new(#f6f6f4, 0), offset=0)



// Definiciones originales...
// ... (incluyendo tus definiciones de Alligator, Fractals, etc.)

// Guardamos el último soporte y resistencia
var float lastSupport = na
var float lastResistance = na

// Detectando un nuevo soporte y resistencia
newSupportDetected = low == lowRS


if newSupportDetected
    lastSupport := low

// Lógica de entrada y salida

// Condiciones de entrada basadas en soportes recién formados
longCondition = low == lowRS
if longCondition
    strategy.entry("Long", strategy.long)

// Salida (take profit) cuando detectamos una nueva resistencia después de entrar en una posición long
newResistanceDetected = high == highRS
if newResistanceDetected and strategy.position_size > 0
    strategy.close("Long")

// Agregar una condición para el stop loss
longStopLossPrice = close * 0.95
if strategy.position_size > 0 and close <= longStopLossPrice
    strategy.close("Long")

// Pintamos los soportes y resistencias
plotshape(longCondition, style=shape.triangledown, location=location.belowbar, color=color.red)
plotshape(newResistanceDetected, style=shape.triangleup, location=location.abovebar, color=color.green)

// Resto del código para plotear las EMAs y fractales
// ...