Die Ressourcen sind geladen. Beförderung...

Auto-Handelsstrategie auf Basis von STOCH

Schriftsteller:ChaoZhang, Datum: 2023-09-28 11:38:44
Tags:

Diese Strategie entwirft ein einfaches Auto-Trading-System, das auf dem STOCH-Indikator basiert.

Strategieübersicht

Diese Strategie identifiziert überkaufte und überverkaufte Positionen, indem sie den STOCH-Indikator in Kombination mit PIVOT-Punkten verwendet, um Stop-Loss-Positionen zu setzen und dem Trend zu folgen. Sie geht lang oder kurz, wenn der STOCH-Indikator überkaufte oder überverkaufte Signale zeigt. Stop-Loss-Punkte werden in der Nähe der PIVOT-Punkte des Tages gesetzt, um Risiken effektiv zu kontrollieren. Teilweise Gewinnpunkte werden eingestellt, um teilweise Positionen nach einem bestimmten Gewinnniveau zu schließen.

Strategie Logik

Diese Strategie verwendet die Kreuzung von %K und %D Linien des STOCH-Indikators, um lange und kurze Signale zu erzeugen. Insbesondere, wenn die %K Linie über die %D Linie kreuzt, wird sie lang gehen. Wenn die %K Linie unter die %D Linie kreuzt, wird sie kurz gehen. Dies erfasst den Überkauf- und Überverkaufsstatus.

Um Risiken zu kontrollieren, wird der lange Stop-Loss-Punkt in der Nähe des täglichen untersten PIVOT-Punkts und der kurze Stop-Loss-Punkt in der Nähe des täglichen höchsten PIVOT-Punkts gesetzt.

Bei einem partiellen Take-Profit wird 50% der Position nach einem gewissen Gewinnniveau nach Eröffnung der Position geschlossen, wodurch die Effizienz der Kapitalverwertung optimiert wird.

Zusammenfassend lässt sich sagen, dass diese Strategie überkaufte und überverkaufte Punkte angemessen erfasst, Risiken mit einem Stop-Loss kontrolliert und die Effizienz der Kapitalnutzung optimiert.

Stärken der Strategie

  • Die Verwendung des STOCH-Indikators erfasst effektiv Überkauf- und Überverkaufsstatus.

  • Der Teilgewinnmechanismus optimiert die Effizienz der Kapitalnutzung.

  • Anpassbare Parameter ermöglichen eine Flexibilität, die auf Marktbedingungen und Risikopräferenzen basiert.

  • Einfache und klare Logik, leicht verständlich und beherrschbar für alle Händler.

Strategische Risiken

  • Als Trendstrategie kann es in den Märkten mit Bandbreiten feststecken und keinen Gewinn erzielen.

  • STOCH kann falsche Signale erzeugen, was zu unnötigen Trades führt.

  • Stoppverlust in der Nähe von Drehpunkten kann nach Ausbrüchen zu nahe sein.

  • Einige Parameter wie die Periode müssen möglicherweise für verschiedene Märkte angepasst werden, sonst wirkt sich dies auf die Strategieentwicklung aus.

  • Backtest stützt sich nur auf historische Daten, kann zukünftige Performance nicht garantieren.

  • Automatische Handelssysteme erfordern stabile Verbindungen, um Probleme bei der Handelsausführung zu vermeiden.

Optimierung der Strategie

  • Fügen Sie einen Trendfilter hinzu, um den Handel ohne klare Trends zu vermeiden.

  • Fügen Sie die Volumenanalyse hinzu, um falsche Ausbrüche zu erkennen und Fallen zu vermeiden.

  • Anpassen von Parametern wie STOCH-Eingängen basierend auf verschiedenen Produkten und Zeitrahmen, um die Leistung zu optimieren.

  • Betrachten Sie Algorithmen des maschinellen Lernens, um Modelle mit Big Data zu trainieren und Parameter automatisch zu optimieren.

  • Setzen Sie die Gewinnfaktorquote, um Risikokontrolle einzuführen und große Verlustgeschäfte zu vermeiden.

  • Fügen Sie mehr Filter wie Handelsbedingungen, Grundlagen hinzu, um die Gewinnrate zu verbessern.

Schlussfolgerung

Diese Strategie verwendet einen einfachen und intuitiven Trend-Folge-Ansatz, der auf dem STOCH-Indikator basiert, um überkaufte/überverkaufte Punkte zu identifizieren. Mit PIVOT-Stop-Loss, um das Risiko zu kontrollieren, und teilweisen Take-Profit, um die Kapitaleffizienz zu optimieren. Das Design umfasst Capture, Control und Optimize. Die Logik ist einfach und anpassbar. Aber sie birgt auch einige Risiken und kann weiter optimiert werden. Kontinuierliches Testen und Verbessern im Live-Handel ist entscheidend für eine stetige Rentabilität.


/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 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/
// © Peter_O

//@version=4
// strategy(title="TradingView Alerts to MT4 MT5 - Forex, indices, commodities, stocks, crypto", commission_type=strategy.commission.cash_per_contract, commission_value=0.00003, overlay=false, default_qty_value=20000, initial_capital=1000)
//
// This script was created for educational purposes only.
// It is showing how to use Alerts-Straight-From-Strategies and
// dynamic variables in TradingView alerts.
// And how to auto-execute them in Forex, indices, commodities markets
// 
// (This method will also work with stocks and crypto - anything your 
// broker is offering via their MT4/MT5 platform).
 
TakeProfitLevel=input(400)
TakePartialProfitLevel=input(150)

// **** Entries logic **** {
periodK = input(13, title="K", minval=1)
periodD = input(3, title="D", minval=1)
smoothK = input(4, title="Smooth", minval=1)
k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)
plot(k, title="%K", color=color.blue)
plot(d, title="%D", color=color.orange)
h0 = hline(80)
h1 = hline(20)
fill(h0, h1, color=color.purple, transp=75)

GoLong=crossover(k,d) and k<80 and year>2009
GoShort=crossunder(k,d) and k>20 and year>2009

AlertTest=open>close or open<close or open==close
// } End of entries logic

// **** Pivot-points and stop-loss logic **** {
piv_high = pivothigh(high,1,1)
piv_low = pivotlow(low,1,1)
var float stoploss_long=low
var float stoploss_short=high

pl=valuewhen(piv_low,piv_low,0)
ph=valuewhen(piv_high,piv_high,0)

if GoLong 
    stoploss_long := low<pl ? low : pl
if GoShort 
    stoploss_short := high>ph ? high : ph
// } End of Pivot-points and stop-loss logic

// **** Trade counter and partial closing mechanism **** {
var int trade_id=0
if GoLong or GoShort
    trade_id:=trade_id+1

TakePartialProfitLong = barssince(GoLong)<barssince(GoShort) and crossover(high,(valuewhen(GoLong,close,0)+TakePartialProfitLevel*syminfo.mintick))
TakePartialProfitShort = barssince(GoLong)>barssince(GoShort) and crossunder(low,(valuewhen(GoShort,close,0)-TakePartialProfitLevel*syminfo.mintick))
// } End of Trade counter and partial closing mechanism

strategy.entry("Long", strategy.long, when=GoLong)
strategy.exit("XPartLong", from_entry="Long", qty_percent=50, profit=TakePartialProfitLevel)
strategy.exit("XLong", from_entry="Long", stop=stoploss_long, profit=TakeProfitLevel)
strategy.entry("Short", strategy.short, when=GoShort)
strategy.exit("XPartShort", from_entry="Short", qty_percent=50, profit=TakePartialProfitLevel)
strategy.exit("XShort", from_entry="Short", stop=stoploss_short, profit=TakeProfitLevel)

if GoLong
    alertsyntax_golong='long slprice=' + tostring(stoploss_long) + ' tradeid=' + tostring(trade_id) + ' tp=' + tostring(TakeProfitLevel)
    alert(message=alertsyntax_golong, freq=alert.freq_once_per_bar_close)
if GoShort
    alertsyntax_goshort='short slprice=' + tostring(stoploss_short) + ' tradeid=' + tostring(trade_id) + ' tp=' + tostring(TakeProfitLevel)
    alert(message=alertsyntax_goshort, freq=alert.freq_once_per_bar_close)
if TakePartialProfitLong
    alertsyntax_closepartlong='closepart tradeid=' + tostring(trade_id) + ' part=0.5'
    alert(message=alertsyntax_closepartlong, freq=alert.freq_once_per_bar_close)
if TakePartialProfitShort
    alertsyntax_closepartshort='closepart tradeid=' + tostring(trade_id) + ' part=0.5'
    alert(message=alertsyntax_closepartshort, freq=alert.freq_once_per_bar_close)


Mehr