
Dies ist eine Handelsstrategie, die auf mehreren gleitenden Durchschnitten und Momentum-Ausbrüchen basiert. Diese Strategie kombiniert mehrere technische Indikatoren wie SMMA (geglätteter gleitender Durchschnitt) und ZLEMA (exponentieller gleitender Durchschnitt ohne Verzögerung), um durch die Erfassung von Kreuzungssignalen zwischen Preisen und gleitenden Durchschnitten Handelsmöglichkeiten zu identifizieren. Die Strategie verwendet einen adaptiven Mechanismus, der die Empfindlichkeit des Signals entsprechend den Marktschwankungen anpassen und die Genauigkeit der Transaktionen verbessern kann.
Die Strategie verwendet vier wichtige gleitende Durchschnitte: src (SMMA basierend auf HLC3), hi (SMMA basierend auf hoch), lo (SMMA basierend auf niedrig) und mi (ZLEMA basierend auf src). Handelssignale basieren hauptsächlich auf den Kreuzungs- und Positionsbeziehungen zwischen diesen gleitenden Durchschnitten. Die Kombination mehrerer Signalbedingungen gewährleistet die Zuverlässigkeit von Handelssignalen. Kaufsignale umfassen vier verschiedene Bedingungskombinationen und Verkaufssignale umfassen ebenfalls vier verschiedene Bedingungskombinationen. Das Schlusssignal basiert auf der Kreuzungsstelle zwischen Preis und gleitendem Durchschnitt sowie der Positionsbeziehung zwischen den gleitenden Durchschnitten.
Diese Strategie konstruiert durch die Kombination mehrerer gleitender Durchschnitte und Momentumindikatoren ein relativ vollständiges Handelssystem. Der adaptive Charakter der Strategie und der Mechanismus mehrfacher Bestätigungen verbessern die Zuverlässigkeit der Transaktionen. Durch Optimierung und Verbesserung soll die Strategie eine stabile Leistung in unterschiedlichen Marktumgebungen aufrechterhalten. Händlern wird empfohlen, vor der Echtzeitnutzung ausreichende Backtests und Parameteroptimierungen durchzuführen.
/*backtest
start: 2024-01-10 00:00:00
end: 2025-01-08 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
//study("Limit order strategy", overlay=true)
strategy('Limit order strategy', overlay = true)
lengthMA = input(1)
lengthmi = input(14)
lengthhigh = input(14)
lengthlow = input(14)
calc_smma(src, len) =>
smma = 0.0
smma := na(smma[1]) ? ta.sma(src, len) : (smma[1] * (len - 1) + src) / len
smma
calc_zlema(src, length) =>
ema1 = ta.ema(src, length)
ema2 = ta.ema(ema1, length)
d = ema1 - ema2
ema1 + d
src = calc_smma(hlc3, lengthMA)
hi = calc_smma(high, lengthhigh)
lo = calc_smma(low, lengthlow)
mi = calc_zlema(src, lengthmi)
plot(src, color = color.new(#FF1493, 0), linewidth = 2, title = 'src')
plot(hi, color = color.new(#7CFC00, 0), linewidth = 2, title = 'hi')
plot(lo, color = color.new(#FF0000, 0), linewidth = 2, title = 'lo')
plot(mi, color = color.new(#00FFFF, 0), linewidth = 2, title = 'mi')
//strategy.order("buy", true, 1, stop = na, when = openbuy) // buy by market if current open great then previous high
//strategy.order("sell", false, 1, stop = na, when = opensell) // sell by market if current open less then previous low
//if src >= mi and src[1] <= mi[1] and src[1] <= lo[1]
// strategy.entry("buy 1", strategy.long, qty = 15)
sigorderbuy1 = src > mi and src[1] < mi[1] and src < lo and mi < lo
sigorderbuy2 = src > lo and src[1] < lo[1] and mi < lo
sigorderbuy3 = src > hi and src[1] < hi[1] and mi < hi
sigorderbuy4 = src > mi and src[1] < mi[1] and src > hi and mi > hi
//sigorderbuy5 = mi > hi and src > hi and src > mi and src[1] < mi[1]
//sigorderbuy6 = mi < hi and src > hi and src[1] < hi[1]
sigclosebuy = src < mi and src[1] > mi[1] or mi < lo and src < lo and src[1] > lo[1]
sigordersell1 = src < mi and src[1] > mi[1] and src > hi and mi > hi
sigordersell2 = src < hi and src[1] > hi[1] and mi > hi
sigordersell3 = src < lo and src[1] > lo[1] and mi > lo
sigordersell4 = src < mi and src[1] > mi[1] and src < lo and mi < lo
//sigordersell5 = mi < lo and src < lo and src < mi and src[1] > mi[1]
//sigordersell6 = mi > lo and src < lo and src[1] > lo[1]
sigclosesell = src > mi and src[1] < mi[1] or mi > hi and src > hi and src[1] < hi[1]
plot(sigorderbuy1 ? 1 : 0, 'sigorderbuy1')
plot(sigorderbuy2 ? 1 : 0, 'sigorderbuy2')
plot(sigorderbuy3 ? 1 : 0, 'sigorderbuy3')
plot(sigorderbuy4 ? 1 : 0, 'sigorderbuy4')
//plot(sigorderbuy5 ? 1 : 0,"sigorderbuy5")
//plot(sigorderbuy6 ? 1 : 0,"sigorderbuy6")
plot(sigordersell1 ? 1 : 0, 'sigordersell1')
plot(sigordersell2 ? 1 : 0, 'sigordersell2')
plot(sigordersell3 ? 1 : 0, 'sigordersell3')
plot(sigordersell4 ? 1 : 0, 'sigordersell4')
//plot(sigordersell5 ? 1 : 0,"sigordersell5")
//plot(sigordersell6 ? 1 : 0,"sigordersell6")
plot(sigclosebuy ? 1 : 0, 'sigclosebuy')
plot(sigclosesell ? 1 : 0, 'sigclosesell')
openbuy = sigorderbuy1 or sigorderbuy2 or sigorderbuy3 or sigorderbuy4 // or sigorderbuy5 or sigorderbuy6
opensell = sigordersell1 or sigordersell2 or sigordersell3 or sigordersell4 //or sigordersell5 or sigordersell6
openclosebuy = sigclosebuy
openclosesell = sigclosesell
alertcondition(condition = openbuy, title = 'sigorderbuy all', message = '{"accountmt":"70415621,666734890","time":"15","msg":"Buy {{ticker}} sig_b1={{plot("sigorderbuy1")}} sig_b2={{plot("sigorderbuy2")}} sig_b3={{plot("sigorderbuy3")}} sig_b4={{plot("sigorderbuy4")}}"}')
alertcondition(condition = opensell, title = 'sigordersell all', message = '{"accountmt":"70415621,666734890","time":"15","msg":"Sell {{ticker}} sig_s1={{plot("sigordersell1")}} sig_ss={{plot("sigordersell2")}} sig_s3={{plot("sigordersell3")}} sig_s4={{plot("sigordersell4")}} sig_s5={{plot("sigordersell5")}} sig_61={{plot("sigordersell6")}}"}')
alertcondition(condition = sigclosebuy, title = 'Close buy', message = '{"accountmt":"70415621,666734890","time":"15","msg":"Close {{ticker}} T=short"}')
alertcondition(condition = sigclosesell, title = 'Close sell', message = '{"accountmt":"70415621,666734890","time":"15","msg":"Close {{ticker}} T=long"}')
if sigorderbuy1
strategy.order('Buy 1', strategy.long, 1)
if sigorderbuy2
strategy.order('Buy 2', strategy.long, 1)
if sigorderbuy3
strategy.order('Buy 3', strategy.long, 1)
if sigorderbuy4
strategy.order('Buy 4', strategy.long, 1)
if sigordersell1
strategy.order('sell 1', strategy.short, 1)
if sigordersell2
strategy.order('sell 2', strategy.short, 1)
if sigordersell3
strategy.order('sell 3', strategy.short, 1)
if sigordersell4
strategy.order('sell 4', strategy.short, 1)
//strategy.order("sell 5", false, 1, when = sigordersell5)
//strategy.order("sell 6", false, 1, when = sigordersell6)