
Die Myo_LS_D Quantitative Strategie ist eine Tracking-Stopp-Strategie, die auf mehreren leeren Doppelbahnen basiert. Die Strategie verwendet mehrere Indikatoren wie die Durchschnittslinie, den Preisbruch und die Risiko-Rendite-Ratio, um ein Handelssignal zu erstellen. Unter der Voraussetzung, dass die Trends genau beurteilt werden, werden höhere Gewinnraten und Gewinnraten erzielt.
Die Strategie besteht hauptsächlich aus einem Modul zum Beurteilen von Trends, mehreren Modulen, einem freien Modul und einem Modul zum Verfolgen von Stopps.
Trendbeurteilung Modul verwendet Donchain-Kanal, um die Richtung des Gesamttrends zu bestimmen. Mehr Eintritt ist vorausgesetzt, dass es sich um einen Aufwärtstrend handelt, während ein Defizit in einem Abwärtstrend sein muss.
Das Multi-Modul berücksichtigt neue Höhen, Tiefen und die Position der langen und mittleren Linien. Das Leerlaufmodul berücksichtigt neue Höhen, Tiefen und die Position der kurzen und mittleren Linien. Dies gewährleistet, dass die Position bei einem Auf- oder Abbruch der kritischen Preispunkte aufgebaut wird.
Das Stop-Stop-Modul verwendet zwei unterschiedliche Perioden der SMA-Mittellinie, um die Preisentwicklung in Echtzeit zu verfolgen. Der Stop-Stop-Stillstand, wenn der Preis unter der Durchschnittslinie fällt. Diese Echtzeit-Verfolgung ermöglicht die Maximierung der Gewinne aus dem Trend.
Die Stop-Loss-Einstellungen berücksichtigen die Erweiterung des Stop-Losses, um sicherzustellen, dass der Stop-Loss-Punkt weit von der Unterstützung entfernt ist und keine Erschütterungen auftreten.
Der größte Vorteil dieser Strategie besteht darin, mehrere freie Lagerhäuser zu bauen, um die Strategie des Stillstands zu verfolgen.
Die Trennung von mehreren Räumen maximiert die Gewinnchancen, die sich aus einer einseitigen Entwicklung ergeben.
Durch die Realzeit-Anpassung kann eine höhere Gewinnquote erzielt werden. Im Vergleich zu herkömmlichen Stop-Off-Methoden können die Gewinne deutlich erhöht werden.
Die Erweiterung des Stop-Losses verringert die Wahrscheinlichkeit von Erschütterungen und verringert das Risiko von Verlusten.
Die Risiken dieser Strategie konzentrieren sich auf folgende Punkte:
Trend-Erkenntnisse können fehlerhaft sein, was zu Verlusten bei der Rückschlagposition führen kann. Die Donchain-Parameter können entsprechend angepasst oder andere Kennzahlen hinzugefügt werden, um die Urteile zu optimieren.
Tracking-Stopps sind zu radikal, und es kann sein, dass vorzeitige Stopps nicht dauerhaft profitabel sind. Sie können die Stopp-Gewinnlinie-Intervalle entsprechend erweitern, um zu optimieren.
Der Schadensstop ist zu klein und kann die Wahrscheinlichkeit einer Erschütterung erhöhen. Der Schadensstop kann entsprechend erweitert werden, um das Risiko zu verringern.
Die Strategie kann vor allem in folgenden Bereichen weiter optimiert werden:
Optimierung des Trend-Beschlussmoduls, um die Richtigkeit der Beurteilung zu verbessern. Es kann in Betracht gezogen werden, mehr Indikatoren wie MACD zu kombinieren.
Anpassung der Stop-Tracking-Methode, um die Gewinnspanne weiter zu erweitern. Zum Beispiel kann die Stop-Line proportional bewegt werden.
Vergrößern Sie den Stoppbereich oder erwägen Sie, den Stopp zu verkleinern, um die Wahrscheinlichkeit einer Erschütterung weiter zu verringern.
Die Parameter für verschiedene Sorten sind unterschiedlich und können trainiert werden, um die optimale Kombination von Parametern zu erhalten.
Die Myo_LS_D-Strategie ist insgesamt eine relativ erfahrene, stabile Multi-Hole-Tracking-Stopp-Strategie. Ihre Vorteile sind eindeutig, die Risiken sind kontrollierbar und sie ist eine der Quantifizierungsstrategien, die es wert sind, sie langfristig zu verwenden. Mit weiteren Optimierungen in der Zukunft kann ihre Ertragsleistung kontinuierlich verbessert werden und eine noch bessere Quantifizierungsstrategie werden.
/*backtest
start: 2023-12-15 00:00:00
end: 2024-01-14 00:00:00
period: 4h
basePeriod: 15m
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/
// © agresiynin
//@version=5
// ©Myo_Pionex
strategy(
title = "Myo_simple strategy_LS_D",
shorttitle = "Myo_LS_D",
overlay = true )
// var
lowest_price = ta.lowest(low, 200)
highest_price = ta.highest(high, 200)
min_800 = ta.lowest(low, 800)
max_800 = ta.highest(high, 800)
tp_target_L = min_800 + (max_800 - min_800) * math.rphi
tp_target_S = max_800 - (max_800 - min_800) * math.rphi
sl_length_L = input.int(100, "做多的止損長度", minval = 50, maxval = 300, step = 50)
sl_length_S = input.int(100, "做空的止損長度", minval = 50, maxval = 300, step = 50)
sl_L = lowest_price * (1 - 0.005)
sl_S = highest_price * (1 + 0.005)
rrr_L = tp_target_L - sl_L / sl_L
rrr_S = ta.lowest(low, 800) + ta.highest(high, 800) - ta.lowest(low, 800) * math.rphi / ta.highest(high, 200) + 0.005 * ta.highest(high, 200) - ta.lowest(low, 200) - 0.005 * ta.lowest(low, 200)
smalen1 = input.int(10, "做多追蹤止盈SMA長度1", options = [5, 10, 20, 40, 60, 80])
smalen2 = input.int(20, "做多追蹤止盈SMA長度2", options = [5, 10, 20, 40, 60, 80])
smalen1_S = input.int(5, "做空追蹤止盈SMA長度1", options = [5, 10, 20, 40, 60, 80])
smalen2_S = input.int(10, "做空追蹤止盈SMA長度2", options = [5, 10, 20, 40, 60, 80])
TrendLength_L = input.int(400, "做多趨勢線", options = [100, 200, 300, 400, 500])
TrendLength_S = input.int(300, "做空趨勢線", options = [100, 200, 300, 400, 500])
SMA1 = ta.sma(close, smalen1)
SMA2 = ta.sma(close, smalen2)
SMA1_S = ta.sma(close, smalen1_S)
SMA2_S = ta.sma(close, smalen2_S)
shortlength = input.int(20, "短期均價K線數量")
midlength = input.int(60, "中期均價K線數量")
longlength = input.int(120, "長期均價K線數量")
ShortAvg = math.sum(close, shortlength)/shortlength
MidAvg = math.sum(close, midlength)/midlength
LongAvg = math.sum(close, longlength)/longlength
// Trend
basePeriods = input.int(8, minval=1, title="趨勢基準線")
basePeriods_Short = input.int(26, "做空基準線")
donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
baseLine = donchian(basePeriods)
baseLine_Short = donchian(basePeriods_Short)
trend = request.security(syminfo.tickerid, "D", baseLine)
isUptrend = false
isDowntrend = false
baseLine_D = request.security(syminfo.tickerid, "D", baseLine)
plot(baseLine_D, color=#B71C1C, title="趨勢基準線")
if close[0] > baseLine_D
isUptrend := true
if close[0] < baseLine_Short
isDowntrend := true
// Long
// Condition
// entry
con_a = low > lowest_price ? 1 : 0
con_b = high > highest_price ? 1 : 0
con_c = close[0] > ta.sma(close, TrendLength_L) ? 1 : 0
con_d = isUptrend ? 1 : 0
con_e = rrr_L > 3 ? 1 : 0
con_a1 = close[0] > ShortAvg[shortlength] ? 1 : 0
con_b1 = close[0] > MidAvg[midlength] ? 1 : 0
// close
con_f = ta.crossunder(close, SMA1) and ta.crossunder(close, SMA2) ? 1 : 0
con_g = close < ta.lowest(low, sl_length_L)[1] * (1 - 0.005) ? 1 : 0
// exit
con_h = tp_target_L
// Main calculation
LongOpen = false
AddPosition_L = false
if con_a + con_b + con_c + con_e + con_a1 + con_b1 >= 4 and con_d >= 1
LongOpen := true
// Short
// Condition
// entry
con_1 = high < highest_price ? 1 : 0
con_2 = low < lowest_price ? 1 : 0
con_3 = close[0] < ta.sma(close, TrendLength_S) ? 1 : 0
con_4 = isDowntrend ? 1 : 0
con_5 = rrr_S > 3 ? 1 : 0
con_11 = close[0] < ShortAvg[shortlength] ? 1 : 0
con_12 = close[0] < MidAvg[midlength] ? 1 : 0
// close
con_6 = ta.crossover(close, SMA1_S) and ta.crossover(close, SMA2_S) ? 1 : 0
con_7 = close > ta.highest(high, sl_length_S)[1] * (1 + 0.005) ? 1 : 0
// exit
con_8 = tp_target_S
// Main calculation
ShortOpen = false
AddPosition_S = false
if con_1 + con_2 + con_3 + con_4 + con_5 + con_11 + con_12 >= 5
ShortOpen := true
//
// execute
//
strategy.initial_capital = 50000
if strategy.position_size == 0
if LongOpen
strategy.entry("Long Open" , strategy.long , comment= "Long Open " + str.tostring(close[0]), qty=strategy.initial_capital/close[0])
if strategy.position_size > 0
if (con_f > 0 or con_g > 0 or ShortOpen) and close <= baseLine_D
strategy.close_all(comment="Close Long " + str.tostring(close[0]))
if strategy.position_size == 0
if ShortOpen
strategy.entry("Short Open" , strategy.short , comment= "Short Open " + str.tostring(close[0]), qty=strategy.initial_capital/close[0])
if strategy.position_size < 0
if (con_6 > 0 or con_7 > 0 or LongOpen) and close >= baseLine_D
strategy.close_all(comment="Close Short " + str.tostring(close[0]))
plot(ta.sma(close, TrendLength_L), color=#e5c212, title="LTradeTrend")
plot(ta.sma(close, TrendLength_S), color=#1275e5, title="STradeTrend")
plot(SMA1, "SMA1", color = color.lime, linewidth = 2)
plot(SMA2, "SMA2", color = color.rgb(255, 0, 255), linewidth = 2)