
Strategi ini menggunakan sinyal bentuk harga untuk penembusan resistensi dan mekanisme pengendalian risiko penghentian lingkaran. Ini akan melakukan lebih banyak posisi setelah penembusan resistance dan kosong posisi setelah penembusan support.
Strategi ini didasarkan pada beberapa poin:
Gunakan garis rata-rata untuk menentukan arah tren. Dalam strategi, atur garis rata-rata yang cepat dan lambat, dengan garis cepat yang melewati garis lambat mewakili garis panjang yang naik, dan garis bawah yang melewati garis panjang yang turun.
Resistance breakout melakukan multiple entry. Ketika harga naik melewati titik tertinggi baru-baru ini, dianggap sebagai sinyal untuk menembus resistance level, melakukan multiple entry.
Mendukung sinyal shorting. Ketika harga turun melewati titik terendah baru-baru ini, ini dianggap sebagai sinyal untuk memecahkan support, dan shorting masuk.
Setting loop stop loss. Setting stop loss line after entry and adjusted with price fluctuation, to achieve stop loss line around price operation.
Stop loss dan stop exit. Stop loss dan stop exit dapat mengontrol risiko secara efektif, dan stop stop exit dapat mengunci keuntungan.
Secara khusus, strategi ini menggunakan nilai rata-rata harga tinggi dan rendah sebagai sumber harga, menghitung EMA cepat untuk menentukan arah tren. Lakukan lebih banyak ketika melewati garis lambat di garis cepat dan ada sinyal penembusan resistensi, kosong ketika melewati garis lambat di bawah garis cepat dan ada sinyal penembusan dukungan. Setelah masuk, gunakan harga terendah dalam periode tertentu sebagai stop loss, dan sesuaikan dengan kenaikan harga, atur stop loss untuk mengunci keuntungan.
Strategi ini memiliki beberapa keuntungan:
Stabilitas keuntungan. Beroperasi mengikuti tren, dapat menghasilkan keuntungan dalam tren garis panjang di tingkat indeks.
Pengendalian risiko yang baik. Pengaturan loop stop loss dan stop loss, dapat menghentikan kerugian dan keluar tepat waktu.
Sinyal akurat. Resistance break-out lebih banyak dan support break-out lebih sedikit, sinyal akurat dan dapat diandalkan.
Sederhana dan mudah dioperasikan. Aturan indikator dan sinyal sederhana dan jelas, pengaturan parameter tidak rumit.
Adaptasi pasar. Dapat beroperasi di berbagai varietas dan dalam kondisi pasar apa pun.
Strategi ini juga memiliki beberapa risiko yang perlu diperhatikan:
Resiko kegagalan penembusan. Resistensi dukungan mungkin terjadi setelah penembusan dan pengujian ulang, yang menyebabkan kerusakan.
Risiko pengoptimalan parameter. Pengaturan parameter yang tidak tepat dapat menyebabkan sinyal sering atau tidak cukup. Proses pengoptimalan perlu berhati-hati.
Risiko kegagalan indikator. Dalam kondisi pasar khusus, indikator EMA mungkin gagal atau tertunda.
Risiko reversal trend. Jika Anda melakukan lebih banyak shorting, kerugian dapat meningkat jika terjadi perpindahan dari pasar.
Risiko-risiko ini dapat dikontrol dan diatasi dengan cara-cara seperti optimasi parameter, toleransi yang tepat, dan pemenuhan sinyal yang ketat.
Strategi ini dapat dioptimalkan lebih lanjut dalam beberapa hal:
Optimalisasi siklus waktu. Menyesuaikan parameter siklus waktu untuk menghitung garis rata-rata dan bentuk harga, mencari kombinasi optimal.
Optimasi adaptasi varietas. Sesuaikan pengaturan parameter sesuai dengan karakteristik varietas yang berbeda.
Optimalkan strategi stop loss. Gunakan cara stop loss yang lebih stabil dan tepat, seperti stop loss bergerak, stop loss bergoyang, dll.
Optimalkan strategi stop-loss. Atur stop-loss bergerak atau stop-loss indeks untuk meningkatkan keuntungan.
Menambahkan kondisi penyaring. Menambahkan kondisi penyaring seperti volume transaksi, volatilitas, dan mengecualikan false breakout.
Meningkatkan sinyal masuk. Menambahkan lebih banyak indikator atau bentuk sebagai konfirmasi sinyal masuk.
Strategi ini secara keseluruhan bekerja dengan lancar, ide inti jelas, memiliki stabilitas yang lebih kuat dan kemampuan untuk menghasilkan keuntungan. Pengendalian risiko dan penggunaan indikator juga lebih tepat, adalah strategi kuantitatif terobosan yang layak digunakan. Optimasi selanjutnya melalui parameter dan modul, dapat membuat strategi lebih menyempurnakan, untuk menyesuaikan lebih banyak varietas dan lingkungan pasar yang kompleks.
/*backtest
start: 2023-12-03 00:00:00
end: 2023-12-10 00:00:00
period: 30m
basePeriod: 15m
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/
// © EduardoMattje
//@version=4
strategy("Reversal closing price", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=10000)
src = input(hl2, "Price source")
order_direction = input("Both", "Order direction", options=["Both", "Long", "Short"])
// EMA calculation and plot
ema_long_period = input(80, "EMA long period")
ema_short_period = input(8, "EMA short period")
ema_long = ema(src, ema_long_period)
ema_short = ema(src, ema_short_period)
ema_bull = ema_short > ema_long
ema_bear = ema_short < ema_long
plot(ema_long, "EMA long", ema_bull ? color.green : color.red, 3)
plot(ema_short, "EMA short", ema_bull ? color.green : color.red, 3)
// Settings
risk_reward_ratio = input(2.0, "Risk to reward ratio", minval=1.0, step=0.1)
stop_lookback = input(3, "Stoploss candle lookback", minval=1)
ema_cross_stop = input(true, "Close if EMA crosses in oposite direction")
allow_retracing = input(true, "Allow price retracing")
// RCP calculation
rcp_bull = low[0] < low[1] and low[0] < low[2] and close[0] > close[1]
rcp_bear = high[0] > high[1] and high[0] > high[2] and close[0] < close[1]
// Order placement
in_market = strategy.position_size != 0
long_condition = rcp_bull and ema_bull and not in_market and order_direction != "Short"
short_condition = rcp_bear and ema_bear and not in_market and order_direction != "Long"
bought = strategy.position_size[0] > strategy.position_size[1] and strategy.position_size[1] == 0
sold = strategy.position_size[0] < strategy.position_size[1] and strategy.position_size[1] == 0
closed = not in_market and in_market[1]
long_position = strategy.position_size > 0
short_position = strategy.position_size < 0
buy_price = high + syminfo.mintick
sell_price = low - syminfo.mintick
if long_condition
strategy.entry("Long", true, stop=buy_price)
if short_condition
strategy.entry("Short", false, stop=sell_price)
if allow_retracing
better_price_long = barssince(closed) > barssince(long_condition) and barssince(long_condition) >= 1 and not in_market and ema_bull and buy_price < valuewhen(long_condition, buy_price, 0) and buy_price[0] < buy_price[1]
if better_price_long
strategy.cancel("Long")
strategy.entry("Long", true, stop=buy_price)
better_price_short = barssince(closed) > barssince(short_condition) and barssince(short_condition) >= 1 and not in_market and ema_bear and sell_price > valuewhen(short_condition, sell_price, 0) and sell_price[0] > sell_price[1]
if better_price_short
strategy.cancel("Short")
strategy.entry("Short", false, stop=sell_price)
// Stoploss orders
stop_price = long_position ? valuewhen(bought, lowest(stop_lookback)[1] - syminfo.mintick, 0) : short_position ? valuewhen(sold, highest(3)[1] + syminfo.mintick, 0) : na
stop_comment = "Stoploss triggered"
strategy.close("Long", low <= stop_price, stop_comment)
strategy.close("Short", high >= stop_price, stop_comment)
plot(stop_price, "Stop price", color.red, 2, plot.style_linebr)
// EMA cross close orders
if ema_cross_stop
if long_position and ema_bear
strategy.close("Long", comment=stop_comment)
if short_position and ema_bull
strategy.close("Short", comment=stop_comment)
// Take profit orders
stop_ticks = abs(strategy.position_avg_price - stop_price)
take_profit_price = long_position ? valuewhen(bought, strategy.position_avg_price + stop_ticks * risk_reward_ratio, 0) : short_position ? valuewhen(sold, strategy.position_avg_price - (stop_ticks * risk_reward_ratio), 0) : na
target_comment = "Take profit"
strategy.close("Long", high >= take_profit_price, target_comment)
strategy.close("Short", low <= take_profit_price, target_comment)
plot(take_profit_price, "Target price", color.green, 2, plot.style_linebr)