Strategi Long-Short Indikator Bullwinkle Adaptif


Tanggal Pembuatan: 2024-01-04 16:09:30 Akhirnya memodifikasi: 2024-01-04 16:09:30
menyalin: 0 Jumlah klik: 651
1
fokus pada
1621
Pengikut

Strategi Long-Short Indikator Bullwinkle Adaptif

Daftar isi (Overview)

Strategi ini didasarkan pada pengembangan indikator Buwinco untuk mengidentifikasi tren pasar secara otomatis dan membangun posisi kosong. Ini mengintegrasikan indikator teknis seperti indikator Buwinco, moving averages dan horizontal support lines, yang dapat secara otomatis mengidentifikasi sinyal penembusan dan membangun posisi.

Prinsip Strategi

Indikator utama dari strategi ini adalah Indikator Buwenko, yang menilai tren pasar dan level dukungan / resistensi penting dengan menghitung perbedaan logaritma harga penutupan pada hari perdagangan yang berbeda.

Selain itu, strategi ini mengintegrasikan sabuk pengaman EMA yang terdiri dari beberapa rata-rata bergerak seperti 21 dan 55 hari. Berdasarkan hubungan urutan kesetaraan ini, penilaian saat ini adalah pasar multihead, pasar kosong, atau pasar konsolidasi, dan sesuai dengan itu membatasi melakukan shorting atau melakukan banyak operasi.

Menggunakan indikator Buwinco untuk mengidentifikasi sinyal perdagangan, moving average untuk menilai tahap pasar, dan keduanya dalam kombinasi, dapat mencegah pembentukan posisi yang tidak tepat.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah dapat secara otomatis mengidentifikasi tren berjangka di pasar. Indikator Buinco sangat sensitif terhadap perbedaan harga antara dua periode waktu, dapat dengan cepat menemukan resistensi pendukung utama. Pada saat yang sama, urutan rata-rata bergerak dapat secara efektif menilai situasi saat ini, apakah berjangka atau tidak.

Strategi ini menggabungkan indikator cepat dengan indikator tren, sehingga strategi dapat dengan cepat menemukan titik jual beli, sekaligus mencegah pembelian yang tidak tepat. Ini adalah keuntungan terbesar dari strategi ini.

Analisis Risiko (Risk Analysis)

Risiko dari strategi ini terutama berasal dari dua aspek, pertama adalah bahwa indikator Buwinco sendiri sangat sensitif terhadap perubahan harga dan dapat menghasilkan banyak sinyal perdagangan yang tidak perlu; dan kedua adalah bahwa rata-rata bergerak akan mengoreksi kekacauan ketika berada di lateral, yang menyebabkan kekacauan posisi.

Untuk risiko poin pertama, parameter indikator Buwenko dapat disesuaikan dengan tepat, meningkatkan siklus perhitungan indikator, mengurangi perdagangan yang tidak perlu; Untuk risiko poin kedua, lebih banyak rata-rata bergerak dapat ditambahkan, sehingga penilaian tren lebih akurat.

Optimization Directions (arah optimasi)

Optimasi utama dari strategi ini adalah penyesuaian parameter dan peningkatan kondisi penyaringan.

Untuk indikator Buwenko, Anda dapat mencoba parameter siklus yang berbeda untuk menemukan kombinasi parameter terbaik; Untuk rata-rata bergerak, Anda dapat terus menambahkan lebih banyak garis rata-rata untuk membentuk sistem penilaian tren yang lebih lengkap. Selain itu, Anda juga dapat menambahkan indikator volatilitas, indikator volume perdagangan, dan kondisi penyaringan lainnya untuk mengurangi sinyal palsu.

Dengan penyesuaian komprehensif parameter dan kondisi, stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut.

Summary (Inggris)

Strategi adaptif Buincourt berhasil menggabungkan indikator cepat dengan indikator tren, yang dapat secara otomatis mengidentifikasi titik-titik penting pasar dan membangun posisi yang benar. Kelebihannya adalah kemampuan untuk mengidentifikasi posisi dengan cepat dan mencegah pembentukan posisi yang tidak tepat. Langkah selanjutnya dapat dioptimalkan melalui parameter dan kondisi, untuk meningkatkan stabilitas strategi dan tingkat keuntungan.

Kode Sumber Strategi
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 1m
basePeriod: 1m
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/
// © boftei

//@version=5

strategy("Boftei's Strategy", overlay=false, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, margin_long = 100, margin_short = 100, slippage=0, commission_type=strategy.commission.percent, commission_value = 0, initial_capital = 40, precision = 6)
strat_dir_input = input.string("all", "strategy direction", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)
//////////////////////////////////////////////////////////////////////
//DATA
testStartYear = input(2005, "Backtest Start Year")
testStartMonth = input(7, "Backtest Start Month")
testStartDay = input(16, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)


testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
//////////////////////////////////////////////////////////////////////
sell = input.float(0.0065, "sell level")
buy = input.float(0, "buy level")
long1 = input.float(-0.493, "long retry - too low")
long2 = input.float(2, "long close up")
long3 = input.float(-1.5, "long close down")
short1 = input.float(1.26, "short retry - too high")
short2 = input.float(-5, "dead - close the short")
///< botvenko script
nn = input(60, "Histogram Period")
float x = 0
float z = 0
float k = 0



y = math.log(close[0]) - math.log(close[nn])
if y>0
    x := y
else
    k := y
//---------------------------------------------
        
plot(y > 0 ? x: 0, color = color.green, linewidth = 4)
plot(y <= 0 ? k: 0, color = color.maroon, linewidth = 4)
plot(y, color = color.yellow, linewidth = 1)

co = ta.crossover(y, buy)
cu = ta.crossunder(y, sell)
retry_long = ta.crossunder(y, long1)
deadline_long_up = ta.crossover(y, long2)
deadline_long_down = ta.crossunder(y, long3)
retry_short = ta.crossover(y, short1)
deadline_short = ta.crossunder(y, short2)


hline(buy, title='buy', color=color.green, linestyle=hline.style_dotted, linewidth=2)
hline(0, title='zero', color=color.white, linestyle=hline.style_dotted, linewidth=1)
hline(sell, title='sell', color=color.red, linestyle=hline.style_dotted, linewidth=2)
hline(long1, title='long retry', color=color.blue, linestyle=hline.style_dotted, linewidth=2)
hline(long2, title='overbought', color=color.teal, linestyle=hline.style_dotted, linewidth=2)
hline(long3, title='oversold', color=color.maroon, linestyle=hline.style_dotted, linewidth=2)
hline(short1, title='short retry', color=color.purple, linestyle=hline.style_dotted, linewidth=2)
hline(short2, title='too low to short - an asset may die', color=color.navy, linestyle=hline.style_dotted, linewidth=2)


////////////////////////////////////////////////////////////EMAprotectionBLOCK
ema_21 = ta.ema(close, 21)
ema_55 = ta.ema(close, 55)
ema_89 = ta.ema(close, 89)
ema_144 = ta.ema(close, 144)
//ema_233 = ta.ema(close, 233)
// ema_377 = ta.ema(close, 377)

long_st = ema_21>ema_55 and ema_55>ema_89 and ema_89>ema_144 //and ema_144>ema_233 and ema_233>ema_377
short_st = ema_21<ema_55 and ema_55<ema_89 and ema_89<ema_144 //and ema_144<ema_233 and ema_233<ema_377 

g_v = long_st == true?3:0
r_v = short_st == true?-2:0
y_v = long_st != true and short_st != true?2:0

plot(math.log(ema_21), color = color.new(#ffaf5e, 50))
plot(math.log(ema_55), color = color.new(#b9ff5e, 50))
plot(math.log(ema_89), color = color.new(#5eff81, 50))
plot(math.log(ema_144), color = color.new(#5effe4, 50))
//plot(math.log(ema_233), color = color.new(#5e9fff, 50))
//plot(math.log(ema_377), color = color.new(#af5eff, 50))

plot(long_st == true?3:0, color = color.new(color.green, 65), linewidth = 5)
plot(short_st == true?-2:0, color = color.new(color.red, 65), linewidth = 5)
plot(long_st != true and short_st != true?2:0, color = color.new(color.yellow, 65), linewidth = 5)
////////////////////////////////////////////////////////////EMAprotectionBLOCK




if (co and testPeriod() and (g_v == 3 or y_v == 2))
    strategy.close("OH BRO", comment = "EXIT-SHORT")
    strategy.close("OH DUDE", comment = "EXIT-SHORT")
	strategy.entry("OH DAMN", strategy.long, comment="ENTER-LONG 'co'")
if (retry_long and testPeriod() and (g_v == 3 or y_v == 2))
    strategy.close("OH DAMN", comment = "EXIT-LONG")
    strategy.entry("OH BRUH", strategy.long, comment="ENTER-LONG 'retry_long'")
	
if (cu and testPeriod() and (r_v == -2 or y_v == 2))
    strategy.close("OH DAMN", comment = "EXIT-LONG")
    strategy.close("OH BRUH", comment = "EXIT-LONG")
	strategy.entry("OH BRO", strategy.short, comment="ENTER-SHORT 'cu'")
if (retry_short and testPeriod() and (r_v == -2 or y_v == 2))
    strategy.close("OH BRO", comment = "EXIT-SHORT")
    strategy.entry("OH DUDE", strategy.short, comment="ENTER-SHORT 'retry_short'")
	
    
if (deadline_long_up and testPeriod() or r_v == -2 and testPeriod())
    strategy.close("OH DAMN", comment = "EXIT-LONG 'deadline_long_up'")
if (deadline_long_down and testPeriod())
    strategy.close("OH DAMN", comment = "EXIT-LONG 'deadline_long_down'")
if (deadline_short and testPeriod() or g_v == 3 and testPeriod())
    strategy.close("OH BRO", comment = "EXIT-SHORT 'deadline_short'")
    // (you can use strategy.close_all(comment = "close all entries") here)