Strategi Osilasi Pita Bagian Emas


Tanggal Pembuatan: 2023-11-21 13:47:12 Akhirnya memodifikasi: 2023-11-21 13:47:12
menyalin: 0 Jumlah klik: 628
1
fokus pada
1621
Pengikut

Strategi Osilasi Pita Bagian Emas

Ringkasan

Strategi ini didasarkan pada teori pembagian emas. Strategi ini menggunakan aturan pembagian emas untuk menghitung beberapa band harga, membentuk band atas dan bawah. Ini menghasilkan sinyal perdagangan ketika harga menembus band, dan menghasilkan keuntungan dengan menangkap karakteristik harga yang bergoyang di antara band.

Prinsip Strategi

Logika inti dari kode ini adalah untuk menghitung harga emas pada segmen gelombang sebagai titik kunci. Langkah-langkah utama adalah:

  1. Menghitung rata-rata EMA 14 siklus sebagai sumbu tengah
  2. 4 garis band di atas dan bawah berdasarkan ATR dan Gold Divisi Rasio
  3. Sinyal perdagangan dihasilkan ketika harga naik melewati gelombang turun atau turun melewati gelombang naik
  4. Setting Stop Loss Stop Stop, Menelusuri Pertumbuhan Harga

Dengan pendekatan berdasarkan titik-titik penting ini, Anda dapat secara efektif menangkap getaran jangka pendek di pasar dan berdagang kembali di antara gelombang untuk keuntungan.

Keunggulan Strategis

Keuntungan terbesar dari strategi ini adalah memanfaatkan indikator teoritis penting pembagian emas untuk menentukan titik harga kunci, sehingga meningkatkan probabilitas keuntungan. Keuntungan spesifik terutama tercermin dalam:

  1. Gold Divide Bands Cerdas, Mudah Kenali Penembusan
  2. Bandwidth yang tepat, tidak terlalu kecil dan tidak terlalu longgar
  3. Multiple bandwidth yang dapat dipilih, dapat melakukan perdagangan agresif dan konservatif
  4. Terlihat jelas karakteristik gejolak gelombang, strategi short-line berhasil

Risiko Strategis

Karena strategi ini bertujuan untuk mendapatkan keuntungan dalam jangka pendek, ada beberapa risiko yang perlu diperhatikan:

  1. Tidak ada keuntungan dalam tren siklus besar
  2. Risiko Stop Loss Lebih Besar Saat Harga Berfluktuasi
  3. Lebih banyak sinyal terobosan, pilihlah dengan hati-hati
  4. Tidak berlaku saat karakteristik gelombang getaran hilang

Risiko ini dapat dikontrol dengan penyesuaian parameter, pemilihan band yang tepat, dan manajemen dana.

Optimasi Strategi

Strategi ini masih bisa dioptimalkan lebih jauh:

  1. Kombinasi dengan penyaringan indikator tren hanya menghasilkan sinyal arah tren tertentu
  2. Menutup strategi pada periode waktu tertentu atau sebelum titik peristiwa penting
  3. Dinamika penyesuaian stop loss untuk menyesuaikan frekuensi fluktuasi pasar
  4. Parameter optimasi memilih EMA periode yang berbeda sebagai garis tengah acuan

Meringkaskan

Strategi gelombang gelombang pembagian emas secara keseluruhan adalah strategi garis pendek yang sangat praktis. Ini menggunakan teori pembagian emas untuk menetapkan titik-titik harga yang penting, dan keuntungan yang besar dapat diperoleh ketika harga bergoyang di sekitar titik-titik ini.

Kode Sumber Strategi
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 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/
// © drhakankilic

//@version=5
strategy("FIBONACCI BANDS Strategy", shorttitle="FBANDS Strategy", overlay=true)
// === Date === { 
//Backtest dates
fromDay = input.int(defval=1, title='From Day',minval=1,maxval=31)
fromMonth = input.int(defval=2, title='From Month',minval=1,maxval=12)
fromYear = input.int(defval=2022, title='From Year')
thruDay = input.int(defval=1, title='Thru Day',minval=1,maxval=31)
thruMonth = input.int(defval=1, title='Thru Month',minval=1,maxval=12)
thruYear = input.int(defval=2112, title='Thru Year')
showDate = true  // input(defval=true, title="Show Date Range")
start = timestamp(fromYear, fromMonth, fromDay, 00, 00)  // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59)  // backtest finish window
window() =>  // create function "within window of time"
    time >= start and time <= finish ? true : false
// }

// === Long or Short ===  
tradeDirection = input.string(title="Long veya Short", options=["Long", "Short", "Both"], defval="Both",                                       group="Bot")
// Translate input into trading conditions
longOK  = (tradeDirection == "Long") or (tradeDirection == "Both")
shortOK = (tradeDirection == "Short") or (tradeDirection == "Both")
copypaste   = input('{{strategy.order.alert_message}}',         title='alert message to copy/paste',                                    group="Bot")
// }

// === FIBONACCI BANDS === {
EMAperiod = input.int(14, title='EMAperiod', minval=1, maxval=500, group="Fibonacci")
ATRperiod = input.int(14, title='ATRperiod', minval=1, maxval=500, group="Fibonacci")
EMA = ta.ema(close, EMAperiod)
TR1 = math.max(high - low, math.abs(high - close[1]))
TR = math.max(TR1, math.abs(low - close[1]))
ATR = ta.sma(TR, ATRperiod)
F2 = input(defval=1.618, title='Fibonacci Ratio 2', group="Fibonacci")
F3 = input(defval=2.618, title='Fibonacci Ratio 3', group="Fibonacci")
F4 = input(defval=4.236, title='Fibonacci Ratio 4', group="Fibonacci")
R1 = ATR
R2 = ATR * F2
R3 = ATR * F3
R4 = ATR * F4
FIBOTOP4 = EMA + R4
FIBOTOP3 = EMA + R3
FIBOTOP2 = EMA + R2
FIBOTOP1 = EMA + R1
FIBOBOT1 = EMA - R1
FIBOBOT2 = EMA - R2
FIBOBOT3 = EMA - R3
FIBOBOT4 = EMA - R4
plot(FIBOTOP4[1], title='FIBOTOP4', linewidth=1, color=color.new(color.orange, 0))
plot(FIBOTOP3[1], title='FIBOTOP3', linewidth=1, color=color.new(color.aqua, 20))
plot(FIBOTOP2[1], title='FIBOTOP2', linewidth=1, color=color.new(color.gray, 40))
plot(FIBOTOP1[1], title='FIBOTOP1', linewidth=1, color=color.new(color.purple, 40))

plot(FIBOBOT1[1], title='FIBOBOT1', linewidth=1, color=color.new(color.green, 40))
plot(FIBOBOT2[1], title='FIBOBOT2', linewidth=1, color=color.new(color.yellow, 40))
plot(FIBOBOT3[1], title='FIBOBOT3', linewidth=1, color=color.new(color.blue, 20))
plot(FIBOBOT4[1], title='FIBOBOT4', linewidth=1, color=color.new(color.aqua, 0))
// plot(EMA[1], style=plot.style_cross, title='EMA', color=color.new(color.red, 0))

prefm = input.string(title="Fibo", options=["close>FIBOTOP4(orange)", "close>FIBOTOP3(aqua)","close>FIBOTOP2(gray)","close>FIBOTOP1(purple)", "Disable"] , defval="close>FIBOTOP1(purple)", group="Long")
_prefm = false 
if (prefm == "close>FIBOTOP4(orange)" )
    _prefm := close>FIBOTOP4[1]
    
if (prefm == "close>FIBOTOP3(aqua)" )
    _prefm := close>FIBOTOP3[1]

if (prefm == "close>FIBOTOP2(gray)" )
    _prefm := close>FIBOTOP2[1]
    
if (prefm == "close>FIBOTOP1(purple)" )
    _prefm := close>FIBOTOP2[1]
 
 
if (prefm == "Disable" )
    _prefm := low<low[1] or low>low[1]  
    
prefmS = input.string(title="Fibo", options=["close<FIBOBOT1(green)", "close<FIBOBOT2(yellow)", "close<FIBOBOT3(blue)", "close<FIBOBOT4(aqua)", "Disable"] , defval="close<FIBOBOT1(green)", group="Short")
_prefmS = false 
if (prefmS == "close<FIBOBOT1(green)" )
    _prefmS := close<FIBOBOT1[1]
  
if (prefmS == "close<FIBOBOT2(yellow)" )
    _prefmS := close<FIBOBOT2[1]

if (prefmS == "close<FIBOBOT3(blue)" )
    _prefmS := close<FIBOBOT3[1]
  
if (prefmS == "close<FIBOBOT4(aqua)" )
    _prefmS := close<FIBOBOT4[1]

if (prefmS == "Disable" )
    _prefmS := low<low[1] or low>low[1]  

// }

long2= _prefm 

short2= _prefmS
//

// === Bot Codes === { 
enterlong = input("Long Code", title='Long İlk Alım', group="Long Code")
entershort= input("Short Code", title='Short İlk Alım', group="Short Code")
exitlong = input("Long Exit Code", title='Long Exit', group="Long Code")
exitshort= input("Short Exit Code", title='Short Exit', group="Short Code")
// }

////////////////////////////////////////////////////////////////////////////////////////////TPSL
// Inputs
sl_inp = input.float(4, title='Stop %', step=0.1, group="Long") / 100
tp_inp = input.float(1.5, title='TP %', step=0.1, group="Long") / 100

sl_inp2 = input.float(4, title='Stop %', step=0.1, group="Short") / 100
tp_inp2 = input.float(1.5, title='TP %', step=0.1, group="Short") / 100

longtp = strategy.position_avg_price * (1 + tp_inp) 
longstop=  strategy.position_avg_price * (1 - sl_inp)

shortstop=  strategy.position_avg_price * (1 + sl_inp2)
shorttp = strategy.position_avg_price * (1 - tp_inp2) 
////////////////////////////////////////////////////////////////////////////////////////////
if window() and strategy.position_size==0 and longOK
    strategy.entry("Long", strategy.long, when= long2, alert_message=enterlong, comment="Long")
    
if strategy.position_size>0
    strategy.exit("Long", stop= longstop, limit=longtp, alert_message=exitlong, comment="TPSL")
////////////////////////////////////////////////////////////////////////////////////////////SHORT
if window() and strategy.position_size==0 and shortOK 
    strategy.entry("Short", strategy.short, when= short2, alert_message=entershort, comment="Short")
    
if strategy.position_size<0
    strategy.exit("Short", stop= shortstop, limit= shorttp, alert_message=exitshort, comment="TPSL")