Die Strategie nutzt eine Kombination von gleitenden Durchschnittslinien über einen zeitlichen Rahmen, um Trendwechsel auf dem grossen und mittleren Stundenchart zu erkennen und Trends mit geringem Risiko zu verfolgen. Die Strategie hat die Vorteile einer flexiblen Konfiguration, der Einfachheit und der hohen Kapital-Effizienz und ist für Trader geeignet, die Trends mit mittleren und langen Linien verfolgen.
Die Strategie verwendet drei gleitende Durchschnittslinien von 5, 20 und 40 Tagen, um eine Reihe von Trends in verschiedenen Zeitrahmen zu bestimmen.
Insbesondere wird der 20-tägige Mittelpunkt der 5-tägigen schnellen Linie als ein kurzfristiges Aufstiegssignal betrachtet. Der 40-tägige Mittelpunkt der 40-tägigen langsamen Linie wird als ein mittleres Aufstiegssignal betrachtet.
So wird ein spezifischer Einstieg in Kombination mit einer kleinen Zyklusstärke nach der Richtung des großen Zyklustrends ermittelt. Das heißt, man kann nur bei gleichgerichteten großen Trends und starken kleinen Zyklen treten, um einen umgekehrten falschen Durchbruch effektiv zu filtern und eine hohe Gewinnrate zu erzielen.
Darüber hinaus nutzt die Strategie den ATR-Stoppverlust, um das Risiko einer Einzahlung zu kontrollieren und die Profitabilität weiter zu steigern.
Konfigurationsflexibilität, Benutzer können die Parameter der gleitenden Durchschnittslinie an unterschiedliche Sorten und Handelspräferenzen anpassen
Die Implementierung ist einfach und für Neulinge einfach.
Die Effizienz der Kapitalnutzung und die Nutzung des Kapital-Leverages
Risikokontrolle, Verlustverhütungsmechanismen, um erhebliche Verluste effektiv zu vermeiden
Trends mit starker Trendfähigkeit, nach der Festlegung der Richtung des großen Zyklus weiterhin profitabel
Höhere Gewinnraten, bessere Signalqualität und weniger falsche Zugwechsel
Die große Periodenschätzung hängt von der Verlagerung der Mittellinien ab und besteht ein Risiko für Verzögerungen bei der Fehlentscheidung.
Kleinsiklusstärke-Detektion mit nur einem K-Strang, möglicherweise frühzeitig ausgelöst, entsprechend entspannt
Festes Stoppvermögen, optimiert für dynamisches Stopp
Sie können zusätzliche Filterbedingungen wie Transaktionsvolumenenergie berücksichtigen.
Versuche verschiedene Kombinationen von gleitenden Mittelwertparametern, optimiere die Strategie
Die Strategie integriert Multi-Zeitrahmen-Analyse und Stop-Loss-Management und ermöglicht eine geringe Risikobereitschaft bei Trend-Folge-Tarifen. Durch die Anpassung der Parameter kann sie auf verschiedene Sorten angewendet werden, um die Bedürfnisse von Trend-Folgern zu erfüllen. Die Handelsentscheidungen sind stabiler und die Signale sind effizienter als bei herkömmlichen Single-Time-Frame-Systemen.
Diese Strategie verwendet eine Kombination von gleitenden Durchschnitten über Zeitrahmen hinweg, um Trendrotationen auf den stündlichen, täglichen und wöchentlichen Diagrammen zu identifizieren. Sie ermöglicht einen risikoarmen Trend nach dem Handel. Die Strategie ist flexibel, einfach zu implementieren, kapitaleffizient und geeignet für mittel- und langfristige Trendhandler.
Die Strategie verwendet gleitende Durchschnitte von 5, 20 und 40 Tagen, um die Ausrichtung der Trends in verschiedenen Zeitrahmen zu bestimmen.
Die Überschreitung der 5-tägigen schnellen MA über die 20-tägige mittlere MA zeigt einen Aufwärtstrend auf kurze Sicht. Die Überschreitung der 20-tägigen mittleren MA über die 40-tägige langsame MA signalisiert einen Aufwärtstrend auf mittlere Sicht. Wenn die schnellen, mittleren und langsamen MA positiv ausgerichtet sind (5-tägige > 20-tägige > 40-tägige), ist es ein Bullenzyklus. Wenn sie negativ ausgerichtet sind (5-tägige < 20-tägige < 40-tägige), ist es ein Bärenzyklus.
Durch die Bestimmung der Richtung aus den größeren Zyklen und die Bestätigung der Stärke auf den kleineren Zyklen eröffnet diese Strategie Positionen nur, wenn sich der Haupttrend und die geringere Dynamik ausrichten.
Die Strategie nutzt auch ATR-Trailing Stops, um Einzelhandelsrisiken zu kontrollieren und die Rentabilität weiter zu verbessern.
Flexible Konfigurationen für verschiedene Instrumente und Handelsstile
Einfache Implementierung auch für Anfänger
Hohe Kapitaleffizienz zur Maximierung der Hebelwirkung
Wirksame Risikokontrolle zur Vermeidung erheblicher Verluste
Starke Entwicklung nach nachhaltiger Gewinnfähigkeit
Hohe Gewinnrate durch starke Signale und weniger Whipsaws
MA-Kreuzungen können verzögern und zu einer späten Trenddetektion führen
Eine einzelne Kerzenstärke könnte einen vorzeitigen Einstieg auslösen, entspannenden Zustand.
Festgelegte ATR-Stoppverluste, Optimierung auf dynamische Stopps
Überlegen Sie, zusätzliche Filter wie Volumen hinzuzufügen
Erforschen Sie verschiedene MA-Parameter zur Optimierung
Diese Strategie integriert mehrere Zeitrahmenanalyse und Risikomanagement für einen risikoarmen Trend nach dem Handel. Durch die Anpassung der Parameter kann sie an verschiedene Instrumente angepasst werden, um den Trendhandlern zu entsprechen. Im Vergleich zu einzelnen Zeitrahmensystemen trifft sie robustere Handelsentscheidungen und erzeugt höhere Effizienzsignale. Abschließend hat diese Strategie eine gute Marktanpassungsfähigkeit und ein gutes Entwicklungspotenzial.
/*backtest start: 2023-10-17 00:00:00 end: 2023-11-16 00:00:00 period: 1h 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/ // © kgynofomo //@version=5 strategy(title="[Salavi] | Andy Advance Pro Strategy [BTC|M15]",overlay = true, pyramiding = 1,initial_capital = 10000, default_qty_type = strategy.cash,default_qty_value = 10000) ema_short = ta.ema(close,5) ema_middle = ta.ema(close,20) ema_long = ta.ema(close,40) cycle_1 = ema_short>ema_middle and ema_middle>ema_long cycle_2 = ema_middle>ema_short and ema_short>ema_long cycle_3 = ema_middle>ema_long and ema_long>ema_short cycle_4 = ema_long>ema_middle and ema_middle>ema_short cycle_5 = ema_long>ema_short and ema_short>ema_middle cycle_6 = ema_short>ema_long and ema_long>ema_middle bull_cycle = cycle_1 or cycle_2 or cycle_3 bear_cycle = cycle_4 or cycle_5 or cycle_6 // label.new("cycle_1") // bgcolor(color=cycle_1?color.rgb(82, 255, 148, 60):na) // bgcolor(color=cycle_2?color.rgb(82, 255, 148, 70):na) // bgcolor(color=cycle_3?color.rgb(82, 255, 148, 80):na) // bgcolor(color=cycle_4?color.rgb(255, 82, 82, 80):na) // bgcolor(color=cycle_5?color.rgb(255, 82, 82, 70):na) // bgcolor(color=cycle_6?color.rgb(255, 82, 82, 60):na) // Inputs a = input(2, title='Key Vaule. \'This changes the sensitivity\'') c = input(7, title='ATR Period') h = false xATR = ta.atr(c) nLoss = a * xATR src = h ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=barmerge.lookahead_off) : close xATRTrailingStop = 0.0 iff_1 = src > nz(xATRTrailingStop[1], 0) ? src - nLoss : src + nLoss iff_2 = src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), src + nLoss) : iff_1 xATRTrailingStop := src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), src - nLoss) : iff_2 pos = 0 iff_3 = src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0) pos := src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0) ? 1 : iff_3 xcolor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue ema = ta.ema(src, 1) above = ta.crossover(ema, xATRTrailingStop) below = ta.crossover(xATRTrailingStop, ema) buy = src > xATRTrailingStop and above sell = src < xATRTrailingStop and below barbuy = src > xATRTrailingStop barsell = src < xATRTrailingStop atr = ta.atr(14) atr_length = input.int(25) atr_rsi = ta.rsi(atr,atr_length) atr_valid = atr_rsi>50 long_condition = buy and bull_cycle and atr_valid short_condition = sell and bear_cycle and atr_valid Exit_long_condition = short_condition Exit_short_condition = long_condition if long_condition strategy.entry("Andy Buy",strategy.long, limit=close,comment="Andy Buy Here") if Exit_long_condition strategy.close("Andy Buy",comment="Andy Buy Out") // strategy.entry("Andy fandan Short",strategy.short, limit=close,comment="Andy 翻單 short Here") // strategy.close("Andy fandan Buy",comment="Andy short Out") if short_condition strategy.entry("Andy Short",strategy.short, limit=close,comment="Andy short Here") // strategy.exit("STR","Long",stop=longstoploss) if Exit_short_condition strategy.close("Andy Short",comment="Andy short Out") // strategy.entry("Andy fandan Buy",strategy.long, limit=close,comment="Andy 翻單 Buy Here") // strategy.close("Andy fandan Short",comment="Andy Buy Out") inLongTrade = strategy.position_size > 0 inLongTradecolor = #58D68D notInTrade = strategy.position_size == 0 inShortTrade = strategy.position_size < 0 // bgcolor(color = inLongTrade?color.rgb(76, 175, 79, 70):inShortTrade?color.rgb(255, 82, 82, 70):na) plotshape(close!=0,location = location.bottom,color = inLongTrade?color.rgb(76, 175, 79, 70):inShortTrade?color.rgb(255, 82, 82, 70):na) plotshape(long_condition, title='Buy', text='Andy Buy', style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), textcolor=color.new(color.white, 0), size=size.tiny) plotshape(short_condition, title='Sell', text='Andy Sell', style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny) //atr > close *0.01* parameter // MONTHLY TABLE PERFORMANCE - Developed by @QuantNomad // ************************************************************************************************************************************************************************************************************************************************************************* show_performance = input.bool(true, 'Show Monthly Performance ?', group='Performance - credits: @QuantNomad') prec = input(2, 'Return Precision', group='Performance - credits: @QuantNomad') if show_performance new_month = month(time) != month(time[1]) new_year = year(time) != year(time[1]) eq = strategy.equity bar_pnl = eq / eq[1] - 1 cur_month_pnl = 0.0 cur_year_pnl = 0.0 // Current Monthly P&L cur_month_pnl := new_month ? 0.0 : (1 + cur_month_pnl[1]) * (1 + bar_pnl) - 1 // Current Yearly P&L cur_year_pnl := new_year ? 0.0 : (1 + cur_year_pnl[1]) * (1 + bar_pnl) - 1 // Arrays to store Yearly and Monthly P&Ls var month_pnl = array.new_float(0) var month_time = array.new_int(0) var year_pnl = array.new_float(0) var year_time = array.new_int(0) last_computed = false if (not na(cur_month_pnl[1]) and (new_month or barstate.islastconfirmedhistory)) if (last_computed[1]) array.pop(month_pnl) array.pop(month_time) array.push(month_pnl , cur_month_pnl[1]) array.push(month_time, time[1]) if (not na(cur_year_pnl[1]) and (new_year or barstate.islastconfirmedhistory)) if (last_computed[1]) array.pop(year_pnl) array.pop(year_time) array.push(year_pnl , cur_year_pnl[1]) array.push(year_time, time[1]) last_computed := barstate.islastconfirmedhistory ? true : nz(last_computed[1]) // Monthly P&L Table var monthly_table = table(na) if (barstate.islastconfirmedhistory) monthly_table := table.new(position.bottom_center, columns = 14, rows = array.size(year_pnl) + 1, border_width = 1) table.cell(monthly_table, 0, 0, "", bgcolor = #cccccc) table.cell(monthly_table, 1, 0, "Jan", bgcolor = #cccccc) table.cell(monthly_table, 2, 0, "Feb", bgcolor = #cccccc) table.cell(monthly_table, 3, 0, "Mar", bgcolor = #cccccc) table.cell(monthly_table, 4, 0, "Apr", bgcolor = #cccccc) table.cell(monthly_table, 5, 0, "May", bgcolor = #cccccc) table.cell(monthly_table, 6, 0, "Jun", bgcolor = #cccccc) table.cell(monthly_table, 7, 0, "Jul", bgcolor = #cccccc) table.cell(monthly_table, 8, 0, "Aug", bgcolor = #cccccc) table.cell(monthly_table, 9, 0, "Sep", bgcolor = #cccccc) table.cell(monthly_table, 10, 0, "Oct", bgcolor = #cccccc) table.cell(monthly_table, 11, 0, "Nov", bgcolor = #cccccc) table.cell(monthly_table, 12, 0, "Dec", bgcolor = #cccccc) table.cell(monthly_table, 13, 0, "Year", bgcolor = #999999) for yi = 0 to array.size(year_pnl) - 1 table.cell(monthly_table, 0, yi + 1, str.tostring(year(array.get(year_time, yi))), bgcolor = #cccccc) y_color = array.get(year_pnl, yi) > 0 ? color.new(color.teal, transp = 40) : color.new(color.gray, transp = 40) table.cell(monthly_table, 13, yi + 1, str.tostring(math.round(array.get(year_pnl, yi) * 100, prec)), bgcolor = y_color, text_color=color.new(color.white, 0)) for mi = 0 to array.size(month_time) - 1 m_row = year(array.get(month_time, mi)) - year(array.get(year_time, 0)) + 1 m_col = month(array.get(month_time, mi)) m_color = array.get(month_pnl, mi) > 0 ? color.new(color.teal, transp = 40) : color.new(color.gray, transp = 40) table.cell(monthly_table, m_col, m_row, str.tostring(math.round(array.get(month_pnl, mi) * 100, prec)), bgcolor = m_color, text_color=color.new(color.white, 0))