
Strategi ini menggabungkan stochastic oscillator dan moving average untuk menghasilkan sinyal perdagangan dengan melihat overbought dan oversold dari indikator acak dan tren dari rata-rata bergerak. Strategi ini juga memperkenalkan filter indikator acak, yang dapat menghasilkan sinyal perdagangan yang sesuai ketika garis K acak bertahan di bawah 50 dengan jumlah tertentu garis K. Strategi ini juga mengatur stop loss untuk mengendalikan risiko.
Perhitungan indikator getaran acak menghasilkan garis K dan garis D. Parameter dapat disesuaikan, termasuk siklus indikator acak, perataan nilai K, perataan nilai D, zona overbought dan zona oversold.
Penghitungan moving average, dengan harga close-out secara default, dapat disesuaikan secara periodik.
Perhitungan acak indikator filter. Ketika K-line di bawah 50 setelah mempertahankan K-line tertentu, menghasilkan sinyal filter. Periode dapat disesuaikan.
Kondisi untuk menghasilkan sinyal multihead: indikator acak di daerah oversold berpotongan ke atas atau indikator acak sinyal filter dan rata-rata bergerak ke atas.
Kondisi untuk menghasilkan sinyal kosong: Indikator acak di zona overbought bergeser ke bawah atau sinyal filter indikator acak dan rata-rata bergerak ke bawah.
Kondisi posisi multigede: melewati rata-rata bergerak pada garis K acak dan garis rata-rata bergeser ke bawah.
Kondisi posisi kosong: rata-rata bergerak di bawah garis K acak dan rata-rata bergerak ke atas.
Manajemen posisi menggunakan rasio dana tetap, default 10%. Sementara itu, pengaturan stop loss, default 2%.
Kombinasi antara overbought dan oversold dan karakteristik tren, dapat mengejar dan menghentikan penurunan dalam tren.
Filter indikator acak menghindari perdagangan yang sering terjadi dalam situasi yang bergejolak.
Pengaturan Stop Loss membantu mengontrol penarikan.
Struktur kode yang jelas, parameter yang dapat disesuaikan, cocok untuk optimasi lebih lanjut.
Indikator acak memiliki keterlambatan dan mungkin kehilangan titik jual beli terbaik.
Akurasi penargetan pada titik-titik perubahan tren kurang baik, dan frekuensi stop loss mungkin lebih tinggi.
Pengelolaan modal proporsi tetap lebih banyak ditarik kembali dalam kasus kerugian berkelanjutan.
Untuk meningkatkan keakuratan sinyal, lebih banyak kondisi penyaringan, seperti perilaku harga, indikator tambahan lainnya, dan lain-lain.
Pembagian sinyal yang kuat dan lemah, meningkatkan posisi ketika sinyal yang kuat muncul.
Optimalkan penilaian pada titik-titik perubahan tren untuk menangkap lebih banyak situasi.
Untuk mengoptimalkan manajemen posisi, Anda dapat mempertimbangkan floating gain loss dibandingkan dengan penyesuaian posisi.
Mencoba kombinasi parameter yang berbeda untuk mencari yang optimal.
Strategi ini didasarkan pada indikator oscillasi acak, digabungkan dengan rata-rata bergerak untuk menilai tren, dan menggunakan filter indikator acak itu sendiri, menghasilkan sinyal perdagangan yang relatif andal. Strategi ini memiliki ide yang jelas dan cocok untuk digunakan dalam situasi tren. Namun, karena adanya indikator acak yang terbelakang, kinerja mungkin buruk pada titik perubahan tren, dan adaptasi dan robustitas secara keseluruhan harus diperiksa lebih lanjut.
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Pablo_2uc
//@version=5
strategy("Estrategia Estocástico + MA con Stop Loss y Filtro Estocástico", overlay=true)
// Parámetros del Estocástico
length = input.int(14, title="Longitud Estocástico")
smoothK = input.int(3, title="Suavizado K")
smoothD = input.int(3, title="Suavizado D")
oversold = input.int(20, title="Sobreventa")
overbought = input.int(80, title="Sobrecompra")
// Parámetros de la Media Móvil
maLength = input.int(9, title="Longitud MA")
maSource = input(close, title="Fuente MA")
// Capital inicial
capital = 5000
// Tamaño de posición (10% del capital)
positionSize = capital * 0.10
// Stop Loss (2% del precio de entrada)
stopLossPercent = input.int(2, title="Stop Loss (%)") / 100
// Número de ruedas para el filtro estocástico
filterPeriods = input.int(12, title="Ruedas de Filtro Estocástico")
// Cálculo del Estocástico
k = ta.sma(ta.stoch(close, high, low, length), smoothK)
d = ta.sma(k, smoothD)
// Cálculo de la Media Móvil
ma = ta.sma(maSource, maLength)
// Filtro estocástico
stochasticFilter = ta.sma(k > 50 ? 1 : 0, filterPeriods)
// Condiciones de entrada en largo y corto
longCondition = (ta.crossunder(k, oversold) or ta.crossover(stochasticFilter, 1)) and ma > ma[1]
shortCondition = (ta.crossover(k, overbought) or ta.crossover(stochasticFilter, 1)) and ma < ma[1]
// Condiciones de salida
exitLongCondition = ta.crossover(k, ma) and ma < ma[1]
exitShortCondition = ta.crossunder(k, ma) and ma > ma[1]
// Estrategia
if (longCondition)
strategy.entry("Long", strategy.long, qty=positionSize)
strategy.exit("Exit Long", "Long", stop=close * (1 - stopLossPercent))
if (shortCondition)
strategy.entry("Short", strategy.short, qty=positionSize)
strategy.exit("Exit Short", "Short", stop=close * (1 + stopLossPercent))
// Cierre de posiciones
if (exitLongCondition)
strategy.close("Long")
if (exitShortCondition)
strategy.close("Short")