
Die Goldspaltungsbandschwankungen-Strategie ist eine quantitative Strategie, die auf der Goldspaltungstheorie basiert. Die Strategie verwendet hauptsächlich die Goldspaltungsregel, um mehrere Preisbänder zu berechnen, um die oberen und unteren Bands zu bilden. Die Handelssignale werden erzeugt, wenn der Preis die Bandbrechungen durchbricht, um durch die Erfassung der Eigenschaften der Preisschwankungen zwischen den Bandbrechungen Gewinne zu erzielen.
Die zentrale Logik des Codes besteht darin, den Gold-Splitting-Bereich des Preises als Schlüsselpunkt zu berechnen. Die Hauptschritte sind:
Durch diese Methode, basierend auf einem KPI-Breakthrough, können kurzfristige Marktschwankungen effektiv erfasst und zwischen den Phasen profitabel gehandelt werden.
Der größte Vorteil dieser Strategie besteht darin, dass die Goldspaltung, ein wichtiger theoretischer Indikator, zur Bestimmung der Schlüsselpreise verwendet wird, um die Gewinnwahrscheinlichkeit zu erhöhen. Die konkreten Vorteile bestehen hauptsächlich aus:
Da diese Strategie auf kurzfristige Gewinne ausgerichtet ist, gibt es einige Risiken, die beachtet werden müssen:
Diese Risiken können durch geeignete Parameteranpassungen, die Auswahl geeigneter Bandbreiten und die Vermögensverwaltung gemanagt werden.
Die Strategie kann noch weiter optimiert werden:
Die Goldsplit-Strategie ist eine sehr praktische Short-Line-Strategie insgesamt. Sie nutzt die Goldsplit-Theorie, um Preis-Kritikpunkte zu setzen, von denen ein großer Gewinn erzielt werden kann, wenn die Preise in der Nähe dieser Punkte schwanken. Diese Bandbrech-basierte Methode eignet sich für Märkte mit einer bestimmten Volatilität und Merkmalen und kann einzeln oder in Kombination mit anderen Strategien verwendet werden.
/*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")