
Strategi ini adalah berdasarkan kepada indikator Buwinco yang dibangunkan untuk mengenal pasti trend pasaran secara automatik dan membina kedudukan kosong. Ia mengintegrasikan indikator teknikal seperti indikator Buwinco, purata bergerak dan garis sokongan mendatar untuk mengenal pasti isyarat penembusan secara automatik dan membina kedudukan.
Indikator utama strategi ini adalah Indikator Buwenko, yang menilai trend pasaran dan tahap sokongan / rintangan penting dengan mengira perbezaan logaritma harga penutupan pada hari perdagangan yang berbeza. Apabila penunjuk melewati satu garis mendatar, buatlah lebih banyak, dan apabila ia melewati, buatlah lebih sedikit.
Di samping itu, strategi ini mengintegrasikan tali pinggang perlindungan EMA yang terdiri daripada banyak purata bergerak seperti 21 hari, 55 hari. Berdasarkan hubungan susunan garis ini, penilaian semasa adalah pasaran berbilang, pasaran kosong atau pasaran menyeluruh, dan dengan sewajarnya mengehadkan perdagangan kosong atau berbilang.
Dengan menggunakan indikator Buwinco untuk mengenal pasti isyarat dagangan, moving average untuk menilai tahap pasaran, kedua-duanya digunakan untuk mengelakkan pembentukan kedudukan yang tidak sesuai.
Kelebihan utama strategi ini adalah bahawa ia dapat mengenal pasti secara automatik trend berlainan di pasaran. Indeks Buwenko sangat sensitif terhadap perbezaan harga dalam dua tempoh masa, dan dapat dengan cepat menentukan rintangan sokongan utama. Pada masa yang sama, pengurutan rata-rata bergerak dapat menilai dengan berkesan keadaan semasa, sama ada terlalu banyak atau terlalu banyak.
Strategi ini menggabungkan indikator cepat dengan indikator trend yang membolehkan strategi untuk mencari tempat jual beli dengan cepat dan mencegah pembelian yang tidak sesuai. Ini adalah kelebihan utama strategi ini.
Risiko strategi ini datang terutamanya dari dua aspek, pertama adalah bahawa indikator Buwinco sendiri sangat sensitif terhadap perubahan harga dan mungkin menghasilkan banyak isyarat perdagangan yang tidak perlu; kedua adalah bahawa purata bergerak akan menyusun kekacauan ketika melintang, menyebabkan kekacauan kedudukan.
Untuk risiko titik pertama, parameter penunjuk Buwenko boleh disesuaikan dengan sewajarnya, meningkatkan kitaran pengiraan penunjuk, mengurangkan perdagangan yang tidak perlu; untuk risiko titik kedua, lebih banyak purata bergerak boleh ditambah, menjadikan penilaian trend lebih tepat.
Arah pengoptimuman utama dalam strategi ini adalah dengan menyesuaikan parameter dan menambah syarat penapisan.
Untuk penunjuk Buwenko, anda boleh mencuba parameter kitaran yang berbeza untuk mencari kombinasi parameter yang terbaik; Untuk purata bergerak, anda boleh terus menambah lebih banyak garis rata-rata, membentuk sistem penilaian trend yang lebih lengkap. Selain itu, anda juga boleh memasukkan syarat penapis seperti penunjuk kadar turun naik, penunjuk jumlah perdagangan, untuk mengurangkan isyarat palsu.
Dengan menyesuaikan parameter dan syarat secara menyeluruh, anda dapat meningkatkan kestabilan dan keuntungan strategi anda.
Strategi Bwin Adaptive Condo berjaya menggabungkan indikator cepat dengan indikator trend, yang dapat secara automatik mengenal pasti titik-titik penting pasaran dan membina kedudukan yang betul. Kelebihannya adalah keupayaan untuk menentukan kedudukan dengan cepat dan mencegah pembentukan kedudukan yang tidak sesuai. Langkah seterusnya dapat dioptimumkan melalui parameter dan keadaan, untuk meningkatkan lagi kestabilan strategi dan tahap keuntungan.
/*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)