Die Strategie basiert auf dem Brin-Band-Breakthrough-Prinzip, bei dem ein Rückschlag ausgeführt wird, wenn der Preis vollständig über die Oberbahn oder Unterbahn geht. Sie kann die Rückkehr der Gleichgewichtsbewegung nach außergewöhnlichen Schwankungen erfassen und ist für aktive Händler geeignet, die effiziente Gewinne erzielen möchten.
Die Strategie nutzt die Bollinger Bands, um die Bandbreite des aktuellen Marktes zu definieren. Wenn die Preise eine vollständige Sonnen- oder Sonnenpfahl bilden und die Bollinger Bands vollständig durchbrechen, bedeutet dies, dass der Markt eine hohe Volatilität erreicht hat und die Preise in die Gleichgewichtsrichtung zurückkehren werden.
Konkret berechnet die Strategie mit 20 K-Linien die Schließungspreise für die Brin-Band-Mitte, die obere und die untere Bahn. Wenn der Preis unterhalb der unteren Bahn liegt und die Schließungspreise unterhalb der Eröffnungspreise sind, wird ein Mehr-Signal erzeugt. Wenn der Preis über der oberen Bahn liegt und die Schließungspreise über der Eröffnungspreise liegen, wird ein Verlustsignal erzeugt.
Die wichtigsten Vorteile der Strategie sind:
Der Brin-Band wird verwendet, um die Schwankungen des Marktes zu beurteilen und Abweichungen zu erkennen.
Der Breakpoint dient als Stop-Loss-Bereich, um das Risiko effektiv zu kontrollieren.
Die Rückkehr in den mittleren Bahnraum setzt eine vernünftige Zielposition, um eine übermäßige Verfolgung zu vermeiden.
Vollständige K-Leitung Filter falsche Durchbruch, verbessert die Signalqualität.
Einfache Parameter-Einstellung, einfache Implementierung und Optimierung
Die Logik ist klar und verständlich, der Code ist elegant.
Die Strategie birgt auch folgende Risiken:
Fehlgelegte Brin-Band-Parameter können zu einer Ausfallwahrscheinlichkeit führen.
Ein Durchbruch könnte der Beginn eines neuen Trends sein, und es besteht die Gefahr, dass es zu früh zu Ende geht.
Die Zielposition im mittleren Orbit könnte zu konservativ sein, um nachhaltig zu profitieren.
Es ist nicht möglich, die großen Durchbrüche vollständig zu füllen, und es besteht die Gefahr von Ausrutschen.
In den letzten Jahren hat sich die Entwicklung in den USA weiter verschlechtert.
Diese Strategie kann in folgenden Punkten optimiert werden:
Beurteilung der Trendstärke, Anpassung der Parameter oder Häufigkeit des Handels.
In Kombination mit anderen Indikatoren wird die optimale Einstiegszeit ermittelt.
Die Stop-Loss-Grenze wird je nach Schwankungen angepasst.
Optimierung der Zielsetzung des ersten Ziels, um einen schnellen Gewinn zu erzielen.
Die Einführung eines Wiedereintrittsmechanismus zur Optimierung des Gewinns.
Es ist wichtig, die Glaubwürdigkeit zu bewerten und Fehlverhandlungen zu vermeiden.
Die Strategie basiert auf dem Brin-Band-Breakthrough-Prinzip und eignet sich für aktive Händler, die kurzfristige Gewinne anstreben. Der Vorteil ist die Klarheit der Risikokontrolle, der Nachteil ist die Möglichkeit eines vorzeitigen Ausstiegs und der Begrenzung des Gewinnraums. Die Wirksamkeit kann durch Parameteroptimierung, Hilfsindikatoren usw. verbessert werden.
/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 3h
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/
// © Bishnu103
//@version=4
strategy(title="Full Candle Outside BB [v1.0][Bishnu103]",shorttitle="OUTSIDE BB",overlay=true,calc_on_every_tick=true,backtest_fill_limits_assumption=2)
// ***********************************************************************************************************************
// input variables
buy_session = input(title="Buy Session", type=input.session, defval="0915-1430")
exit_inraday = input(title="Exit Intraday?", type=input.bool, defval=true)
entry_distance = input(title="Entry distance from alert", minval=1, maxval=10, defval=3)
show_bb_switch = input(title="Show BB", type=input.bool, defval=true)
//
bbLength = input(title="BB Length", minval=1, defval=20)
bbStdDev = input(title="BB StdDev", minval=1, defval=2)
// ***********************************************************************************************************************
// global variables
long_entry = false
short_entry = false
long_exit = false
short_exit = false
// variable values available across candles
var entry_price = 0.0
var sl_price = 0.0
var exit_price = 0.0
var candle_count = 0
// ***********************************************************************************************************************
// function to return bollinger band values based on candle poition passed
getBB(pos) => [mBB, uBB, lBB] = bb(close[pos], bbLength, bbStdDev)
// function returns true if current time is within intraday byuing session set in input
BarInSession(sess) => time(timeframe.period, sess) != 0
// ***********************************************************************************************************************
// strategy
//
// get current bb value
[mBB_0,uBB_0,lBB_0] = getBB(0)
// check if full candle outside upper BB
outside_uBB = low > uBB_0 and close <= open
outside_lBB = high < lBB_0 and close >= open
// ***********************************************************************************************************************
// entry conditions
long_entry := outside_lBB
short_entry := outside_uBB
// keep candle count since the alert generated so that order can be cancelled after N number of candle calling it out as invalid alert
candle_count := candle_count + 1
if long_entry or short_entry
candle_count := 0
// ***********************************************************************************************************************
// risk management
//
// decide entry and sl price
if long_entry
entry_price := high
if short_entry
entry_price := low
if long_entry
sl_price := low
if short_entry
sl_price := high
// first exit is when price hits middle BB, gets updated for each candle based on it's middle BB value
exit_price := mBB_0
// ***********************************************************************************************************************
// position sizing
price = if close[0] > 25000
25000
else
price = close[0]
qty = 25000/price
// ***********************************************************************************************************************
// entry
//if long_entry and strategy.position_size == 0
// strategy.entry("BUY", strategy.long, qty, stop=entry_price, comment="BUY @ "+ tostring(entry_price))
if long_entry and strategy.position_size == 0
strategy.order("BUY", strategy.long, qty, stop=entry_price, comment="BUY @ "+ tostring(entry_price))
//if short_entry and strategy.position_size == 0
// strategy.entry("SELL", strategy.short, qty, stop=entry_price, comment="SELL @ "+ tostring(entry_price))
if short_entry and strategy.position_size == 0
strategy.order("SELL", strategy.short, qty, stop=entry_price, comment="SELL @ "+ tostring(entry_price))
// cancel an order if N number of candles are completed after alert candle
strategy.cancel_all(candle_count > entry_distance)
// if current time is outside byuing session then do not enter intraday trade
strategy.cancel_all(timeframe.isintraday and not BarInSession(buy_session))
// ***********************************************************************************************************************
// exit
if strategy.position_size > 0
strategy.cancel("EXIT at MBB", true)
strategy.cancel("EXIT at SL", true)
strategy.order("EXIT at MBB", strategy.short, abs(strategy.position_size), limit=exit_price, comment="EXIT TG @ "+ tostring(exit_price))
strategy.order("EXIT at SL", strategy.short, abs(strategy.position_size), stop=sl_price, comment="EXIT SL @ "+ tostring(sl_price))
if strategy.position_size < 0
strategy.cancel("EXIT at MBB", true)
strategy.cancel("EXIT at SL", true)
strategy.order("EXIT at MBB", strategy.long, abs(strategy.position_size), limit=exit_price, comment="EXIT TG @ "+ tostring(exit_price))
strategy.order("EXIT at SL", strategy.long, abs(strategy.position_size), stop=sl_price, comment="EXIT SL @ "+ tostring(sl_price))
// if intraday trade, close the trade at open of 15:15 candle //!!!!!!!!!!!!!!!!!!!!! TO BE CORRECTED !!!!!!!!!!!!!!!!!!!!!!!
if timeframe.isintraday and exit_inraday and hour == 15 and minute == 00
strategy.close("BUY", when=strategy.position_size > 0, qty=strategy.position_size, comment="EXIT @ "+ tostring(close))
strategy.close("SELL", when=strategy.position_size < 0, qty=strategy.position_size, comment="EXIT @ "+ tostring(close))
// ***********************************************************************************************************************
// plots
//
// plot BB
[mBBp,uBBp,lBBp] = getBB(0)
p_mBB = plot(show_bb_switch ? mBBp : na, color=color.teal)
p_uBB = plot(show_bb_switch ? uBBp : na, color=color.teal)
p_lBB = plot(show_bb_switch ? lBBp : na, color=color.teal)
fill(p_uBB,p_lBB,color=color.teal,transp=95)