
Strategi penarikan imbang rantaian adalah strategi yang menggabungkan petunjuk teknikal dan bentuk harga pada masa yang sama, melakukan banyak pengendalian shorting pada tahap rintangan sokongan. Strategi ini menggunakan petunjuk rantaian untuk mengenal pasti arah trend pasaran, menggunakan indikator bentuk berdasarkan nilai harga yang paling tinggi untuk membantu menentukan titik balik, digabungkan dengan kedudukan sokongan dan rintangan yang kritikal pada tahap tinggi dan rendah di masa lalu, melakukan operasi terbalik pada titik-titik ini, termasuk dalam strategi terbalik yang tipikal.
Strategi ini menilai masa operasi melalui beberapa langkah:
Menggunakan indikator Alligator tiga rata-rata untuk menentukan arah trend. Apabila garis harga menembusi Lip Lines pada indikator ini, dianggap bahawa terdapat isyarat penembusan yang lebih kuat.
Menggunakan indikator pola puncak-lewat untuk mengenal pasti masa apabila harga berbalik di kawasan overbought dan oversold. Melewati titik paling tinggi di satu arah puncak-lewat adalah isyarat pembalikan yang mungkin.
Mengambil keputusan mengenai titik masuk yang tepat untuk operasi pembalikan dengan menggabungkan sokongan dan rintangan. Apabila harga mendekati sokongan atau rintangan pada masa lalu, anda boleh membuat lebih banyak shorting.
Menggunakan petunjuk garis rata EMA membantu menentukan arah trend jangka panjang. Sebagai contoh, dalam keadaan gegaran, operasi jangka pendek dipengaruhi oleh pembalikan lompat tinggi, dan dalam keadaan trend dipengaruhi oleh pergerakan maju.
Menggunakan kaedah berhenti bergerak untuk mengawal kerugian tunggal.
Strategi ini mempunyai beberapa kelebihan:
Ia juga menggabungkan pelbagai isyarat indikator untuk meningkatkan ketepatan penilaian.
Menggunakan rintangan sokongan utama untuk membalikkan, adalah operasi kebarangkalian tinggi.
Menggunakan kaedah berhenti bergerak, anda boleh mengehadkan kerugian tunggal.
Strategi ini juga mempunyai risiko:
Berikutan keputusan gabungan pelbagai indikator, frekuensi operasi mungkin lebih tinggi, perlu memberi perhatian kepada kawalan kos transaksi.
Kegagalan titik penting adalah risiko terbesar, dan kerugian mungkin lebih besar jika harga tidak berbalik berhampiran tahap sokongan atau rintangan yang dijangkakan.
Apabila pasaran berubah-ubah, penutupan bergerak boleh ditembusi dan menyebabkan kerugian meningkat.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Penyesuaian optimum kepada berat pelbagai indikator untuk mencari kombinasi parameter terbaik.
Menambah algoritma pembelajaran mesin untuk membantu menentukan kadar kejayaan bit utama.
Menambah petunjuk jumlah urus niaga untuk mengelakkan harga turun naik tetapi jumlah urus niaga tidak mencukupi.
Mengoptimumkan model hentian bergerak untuk memastikan keberkesanan hentian dan mengurangkan kebarangkalian hentian yang tidak perlu.
Ringkasnya, strategi penarikan balik rantaian rantaian menggunakan pelbagai petunjuk seperti rantaian rantaian, bentuk harga, dan tahap rintangan sokongan untuk membuat keputusan pada masa yang sama. Ini adalah strategi teknikal yang tipikal. Ia mempunyai keunggulan untuk menentukan ketepatan yang tinggi, operasi berkemungkinan tinggi, tetapi juga perlu berhati-hati dengan risiko kegagalan kedudukan penting dan penangguhan bergerak.
/*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
// ...