
Die Strategie beurteilt, ob ein unerwarteter einseitiger Kurswechsel auf dem aktuellen Markt vorliegt, indem sie K-Linien mit außergewöhnlichem Anstieg identifiziert. Wenn eine außergewöhnlich hohe K-Line identifiziert wird, wird ein Kauf-Stop-Order in der Nähe des Höchstpunkts dieser K-Line eingerichtet, während ein Stop-Loss-Order in der Nähe des Tiefpunkts der vorherigen K-Line eingerichtet wird.
Diese Strategie beurteilt hauptsächlich die Bildung von K-Linien mit außergewöhnlichem Anstieg, wenn close>open und highlow[1] bei der K-Linie wird angenommen, dass es einen ungewöhnlichen Anstieg des aktuellen Zyklus gibt. Es wird ein langes Eintrittssignal eingestellt, bei dem der Eintrittspreis in der Nähe des höchsten Preises der aktuellen K-Linie liegt. Gleichzeitig wird ein Stop-Loss-Preis in der Nähe des niedrigsten Preises der vorherigen K-Linie eingestellt, um ein hochgeführtes Risikokontrollmodell zu bilden.
Der größte Vorteil dieser Strategie ist die Fähigkeit, kurze Linien von außergewöhnlichen Ausfällen zu erfassen, um einen hochfrequenten Handel zu ermöglichen. Gleichzeitig können Risikokontrolle mit hohem Leverage durchgeführt werden, indem eine größere Stop-Loss-Marge festgelegt wird, wodurch ein höherer Gewinn erzielt wird. Darüber hinaus ermöglicht die Strategie die automatische Überwachung der Stop-Loss-Linie, um das Handelsrisiko schnell und effektiv zu kontrollieren, wenn der Preis die Stop-Loss-Linie nach unten durchbricht.
Das Hauptrisiko dieser Strategie besteht darin, dass die ungenaue Beurteilung von außergewöhnlichen Zuwächsen und die unzureichende Fähigkeit, unerwartete Ereignisse zu erfassen, eine große Wahrscheinlichkeit für die Fehleinschätzung von Handelssignalen darstellt. Darüber hinaus hat die Einstellung der Stop-Loss-Position einen großen Einfluss auf das Handelsrisiko und die Gewinne.
Diese Strategie kann in folgenden Bereichen optimiert werden:
Die abnormalen Anstiegsurteile können durch die Einführung von mehr Indikatoren oder Deep-Learning-Modellen unterstützt werden, um die Genauigkeit der strategischen Handelssignalurteile zu verbessern.
Die Einstellung der Stop-Loss-Position ermöglicht eine umfangreiche statistische und optimierende Analyse, um die optimale Stop-Loss-Position zu finden, um das Risiko und das Ertragsniveau des Handels auszugleichen.
Es könnten mehr Hochfrequenz-Transaction Control-Mechanismen eingeführt werden, wie z. B. die Filterung der Transaktionsmenge und die Bestätigung der Durchbruchsplätze, um die Wahrscheinlichkeit einer Gefangenschaft zu vermeiden.
Die Strategie-Eintrittskriterien können angepasst werden und müssen sich nicht auf die außergewöhnlich hohen K-Linien beschränken, sondern können in Verbindung mit mehreren Indikatoren und Modellen beurteilt werden, um eine Mehrfachprüfung zu bilden.
Die Strategie als Ganzes ist eine typische Hochfrequenz-Handelsstrategie und gehört zu den Short-Line-Breakout-Strategien. Sie ermöglicht den Hochfrequenz-Handel durch die Erfassung von plötzlichen, außergewöhnlichen Schwankungen in den Märkten. Die Strategie hat einen großen Optimierungsraum und kann aus mehreren Blickwinkeln angepasst und optimiert werden.
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 08:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// LOVE JOY PEACE PATIENCE KINDNESS GOODNESS FAITHFULNESS GENTLENESS SELF-CONTROL
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © JoshuaMcGowan
// I needed to test/verify the functionality for canceling an open limit order in a strategy and also work thru the pieces needed to set the position sizing so each loss is a set amount.
// This is not meant to be dropped into a chart but rather gives the code/logic in order to use in your own script w/alerts or strategy. Hope it helps.
//@version=4
strategy("Strategy Test - Cancel Limit Order and Position Sizing", overlay=true, precision=4)
/////////////////
// Backtest Period Selection
testStartYear = input(2020, "Backtest Start Year",minval=1980)
testStartMonth = input(2, "Backtest Start Month",minval=1,maxval=12)
testStartDay = input(1, "Backtest Start Day",minval=1,maxval=31)
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2020, "Backtest Stop Year",minval=1980)
testStopMonth = input(12, "Backtest Stop Month",minval=1,maxval=12)
testStopDay = input(31, "Backtest Stop Day",minval=1,maxval=31)
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriod() => time >= true
//////////////
// Inside Bar
bull_inside_bar = close>open and high<high[1] and low>low[1]
// Set Levels
bull_inside_bar_sl = valuewhen(bull_inside_bar, low[1], 0) - (1*syminfo.mintick)
bull_breakout_price = valuewhen(bull_inside_bar, high, 0) + (1*syminfo.mintick)
entry_buy = high
inside_bar_dist = entry_buy - bull_inside_bar_sl
inside_bar_be = entry_buy + (inside_bar_dist * 1)
inside_bar_tgt = entry_buy + (inside_bar_dist * 2)
///////////////////
// Position Sizing
//////////////////
// For each trade setup that fires in this scenario we want to set our total loss amount in USD, so every trade that loses is lets say $1 and the 2:1 target would be $2 in this example.
// The math logic for this take the risk amount and divide by the stop percentage, take that number and divide by leverage amount chosen. Stop percentage is a variable below if questions on that.
//
// Taken from @JoshuaMorris (shout out to the UK peeps) position sizing google doc so thank you sir.
// Would be used if risking based on percentage of a portfolio. Leaving code snippets here in case that's the direction someone wants to go.
// xbt_price = security("BITMEX:XBTUSD", "D", close)
// account_size_xbt = input(1, "Account Size (XBT)", type=input.float)
// account_size_usd = (account_size_xbt * xbt_price)
// percentage_risk = input(0.01, "Personal Risk Percent - Default is 1%", type=input.float)
// personal_risk = (account_size_usd * percentage_risk)
// position_size_usd = (personal_risk) / risk_percent
// leverage_req = position_size_usd / account_size_usd
// Will want to hard code leverage as 1x, 5x, 10x etc and dont need it to automagically be set as is above. If you're doing 100x you are gnarly haha.
leverage_amount = input(title="Leverage Amount Desired", type=input.integer, defval=10, options=[1, 2, 3, 5, 10, 25, 50, 100])
risk_amount = input(title="Risk Total Per Trade in USD", type=input.integer, defval=1, minval=1, step=1)
// Reminder this is for Longs. Math needs to be changed a bit for Shorts. This is the information using the long/short tool would give us if doing manually.
stop_percent = inside_bar_dist / (entry_buy)
pos_size_no_lev = risk_amount / stop_percent
pos_size_with_lev = pos_size_no_lev / leverage_amount
//////////////
// Strategy Section
if testPeriod()
strategy.entry(id="Long", long=true, qty=1, limit=9320.00, when=bull_inside_bar)
strategy.cancel(id="Long", when = low < 9310)
// as a test swap the price to be above the limit or below to see the cancel in play.
//////////////
// Plot Section
plotchar(bull_inside_bar, title="bull_inside_bar", char="🐂", location=location.belowbar, offset=-0, color=color.green, transp=25)
plot(bull_inside_bar_sl, title="bull_inside_bar_sl", transp=100)
plot(entry_buy, title="entry_buy", transp=100)
plot(inside_bar_dist, title="inside_bar_dist", transp=100)
plot(stop_percent, title="stop_percent", transp=100)
plot(pos_size_no_lev, title="pos_size_no_lev", transp=100)
plot(pos_size_with_lev, title="pos_size_with_lev", transp=100)
// Hidden Plots // For Data Window Eyes Only //
// plot(longCondition==true?1:0, title="Long Condition", transp=100)
// plot(xbt_price, title="XBT Price", transp=100)
// plot(account_size_usd, title="Account Size USD", transp=100)
// plot(risk_percent, title="risk_percent", transp=100)
// plot(position_size_usd, title="position_size_usd", transp=100)
// plot(leverage_req, title="leverage_req", transp=100)
// END //