Diese Strategie prognostiziert Trends, indem sie die
Beurteilen Sie die Entitätslänge des Körpers der aktuellen K-Linie. Wenn sie größer als das 3-fache des durchschnittlichen Körperwerts der letzten 6 K-Linien ist, gilt sie als
Wenn es 3 aufeinanderfolgende
Wenn der Preis beim Beurteilen des Signals den vorherigen Höchst- oder Tiefpunkt durchbricht, werden zusätzliche Handelssignale generiert.
Verwenden Sie SMA als Filter. Öffnen Sie Positionen nur, wenn der Preis durch den SMA bricht.
Wenn der Kurs nach der Einnahme einer Position erneut den Einstiegspunkt oder SMA durchbricht, schließen Sie die Position.
Die Verwendung von "bedeutenden Balken" zur Beurteilung von Trends kann unnötige Störungen ausfiltern und deutliche Signale erzeugen.
Die Kombination von Trendsignalen und Breakoutsignalen verbessert die Signalqualität und verringert die Falschsignale.
SMA-Filter vermeiden hohe Käufe und niedrige Verkäufe. Kaufen Sie nur unter Schließen, verkaufen Sie über Schließen, wodurch die Zuverlässigkeit verbessert wird.
Die Festlegung von Gewinn- und Stop-Loss-Bedingungen erleichtert die rechtzeitige Risikokontrolle.
Diese aggressive Strategie beurteilt Signale von nur 3 Balken und kann kurzfristige Schwankungen als Trendumkehrungen falsch einschätzen.
Die Ergebnisse können je nach Produkt und Zeitrahmen variieren.
Keine Übernachtungs-Positionskontrolle, mit Übernachtungs-Holding-Risiko.
Optimieren Sie die Parameter für
Testen Sie die Auswirkungen verschiedener Zeitrahmen, um optimale Parameter zu finden.
Hinzufügen eines ATR-basierten Stop-Loss zur Risikokontrolle.
Überlegen Sie, ob Sie eine Nacht-Positionskontrolle hinzufügen.
Diese Strategie nutzt
/*backtest start: 2023-12-26 00:00:00 end: 2024-01-02 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //AlexInc //2018 // закрытие - вычислить и в течение скольки-то баров его добиваться // если нет, то по первому противоположному // по стоп-лоссу в любом случае - стоп вычислить //@version=2 strategy(title = "AlexInc's Bar v1.2", shorttitle = "AlexInc Bar 1.2", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") usemar = input(false, defval = false, title = "Use Martingale") tryprofitbars = input(6, defval = 6, minval = 1, maxval = 100, title = "Number of candles to take profit anyway") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") useSMAfilter = input(false, defval = true, title = "Use SMA filter") SMAlimit = input(10, defval = 10, minval = 1, maxval = 30, title = "SMA filter limit") bodysizeMlt = input(3, defval = 3, minval = 1, maxval = 10, title = "Body Size Multiplier") meanfulbardiv = input(3, title = "Meanful Bar size Divider") showarr = input(false, defval = false, title = "Show Arrows") fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //SMA # index = 0 index := barstate.isfirst ==true ? 0 : nz(index[1])+1 buyindex = 0 buyindex := barstate.isfirst ==true ? 0 : buyindex[1] sellindex = 0 sellindex := barstate.isfirst ==true ? 0 : sellindex[1] //predictprofit = barstate.isfirst ==true ? 0 : predictprofit[1] smafilter = sma(close, SMAlimit) //Body body = abs(close - open) range = abs(high - low) abody = sma(body, 6) max3 = 0 if body >= body[1] and body >= body[2] max3 := body else if body[1] >= body and body[1] >= body[2] max3 := body[1] else if body[2] >= body and body[2] >= body[1] max3 := body[2] prevmax3 = 0 prevmax3 := nz(max3[1]) bar = close > open ? 1 : close < open ? -1 : 0 firstbullishopen = 0 firstbullishopen := bar == 1 and bar[1] != 1 ? open : nz(firstbullishopen[1]) firstbearishopen = 0 firstbearishopen := bar == -1 and bar[1] != -1 ? open : nz(firstbearishopen[1]) meanfulbar = body > abody / meanfulbardiv meanfulbearish = 0 meanfulbearish := nz(meanfulbearish[1]) meanfulbullish = 0 meanfulbullish := nz(meanfulbullish[1]) if meanfulbar if bar == 1 meanfulbullish := 1 + meanfulbullish meanfulbearish := 0 else if bar == -1 meanfulbearish := 1 + meanfulbearish meanfulbullish := 0 plot(min(low, high)-10, style=circles, color = meanfulbar ? yellow:black, linewidth=3) //Signals up1 = (meanfulbearish >= 3) and (close < firstbullishopen or 1) and (strategy.position_size == 0 or close < strategy.position_avg_price) and body > abody / 5 and (useSMAfilter == false or close < smafilter) if up1 == true predictprofit = sma(body, 3) up2 = sma(bar, 1) == -1 and body > prevmax3 * bodysizeMlt and (strategy.position_size == 0 or close < strategy.position_avg_price) and body > abody / 5 and (useSMAfilter == false or close < smafilter) if up2 == true predictprofit = body * 0.5 plot(min(low, high), style=circles, color = up1?blue:up2?green:gray, linewidth=3) dn1 = (meanfulbullish >= 3) and (close > firstbearishopen or 1) and (strategy.position_size == 0 or close > strategy.position_avg_price) and body > abody / 5 and (useSMAfilter==false or close > smafilter) if dn1 ==true predictprofit = sma(body, 3) dn2 = sma(bar, 1) == 1 and body > prevmax3 * bodysizeMlt and (strategy.position_size == 0 or close > strategy.position_avg_price) and body > abody / 5 and (useSMAfilter==false or close > smafilter) if dn2 ==true predictprofit = body * 0.5 plot(max(low, high), style=circles, color = dn1?blue:dn2?green:gray, linewidth=3) exit = (((strategy.position_size > 0 and bar == 1 ) or (strategy.position_size < 0 and bar == -1)) and body > abody / 2 ) // or index >= buyindex (or sellindex) + tryprofitbars //Arrows col = exit ? black : up1 or dn1 ? blue : up2 or dn2 ? red : na needup = up1 or up2 needdn = dn1 or dn2 needexitup = exit and strategy.position_size < 0 needexitdn = exit and strategy.position_size > 0 plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0) plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0) plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0) plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0) //Trading profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1] mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1 lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1] if up1 or up2 if strategy.position_size < 0 strategy.close_all() buyindex = index sellindex = index if strategy.position_size == 0 buyindex = index strategy.entry("Long", strategy.long, needlong == false ? 0 : lot ) if dn1 or dn2 if strategy.position_size > 0 strategy.close_all() buyindex = index sellindex = index if strategy.position_size == 0 sellindex = index strategy.entry("Short", strategy.short, needshort == false ? 0 : lot ) if exit strategy.close_all()