
Cette stratégie utilise le pourcentage de variation du prix pour définir les lignes d’achat et de vente, pour construire des positions en fonction du prix de rupture des lignes d’achat et de vente en dessous des lignes de vente. Sa principale caractéristique est d’assumer un seul unité de risque, c’est-à-dire qu’une position précédente n’est mise en position que lorsque le profit prévu est atteint.
La stratégie commence par définir un prix de référence, avec 10% de ce prix comme une fourchette de prix, avec une marge supérieure comme ligne de vente et une marge inférieure comme ligne de vente. Lorsque le prix franchit la ligne de vente, acheter en quantité fixe.
Un autre point clé de cette stratégie est de ne prendre que le risque d’une unité. C’est-à-dire qu’une nouvelle position n’est mise en place que lorsque la position actuelle a atteint son objectif de profit. La nouvelle position est également configurée selon les nouvelles lignes d’achat et de stop-loss. Cela limite le risque.
Cette stratégie combine les avantages du suivi des pertes et de la gestion des stocks, permettant de contrôler efficacement le risque tout en profitant.
Cette stratégie comporte aussi des risques:
Ces risques peuvent être contournés par des ajustements de paramètres, tels que la taille de la fourchette de pourcentage, la modification des conditions de mise en position, etc.
Il y a encore de la place pour optimiser cette stratégie:
Il s’agit d’une stratégie de négociation utilisant des intervalles de pourcentage. Elle est simple, pratique et maîtrise efficacement le risque. Grâce à l’ajustement des paramètres et à l’optimisation des modèles, la stratégie peut devenir un système fiable de suivi des tendances, générant des gains supplémentaires stables pour les investisseurs.
/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HermanBrummer 4 April 2021
strategy ("The Box Percent Strat", shorttitle="The Box", overlay = true)
/// Designed for LONG only on Daily, 2D or 3D Charts
/// Uses fixed investment risk amount, meaning you're willing to lose that amount per trade
/// Limit buy to not overpay
RiskPerTrade = input(10000, "Risk losing this much per trade", tooltip="This calculates how much you will lose based on difference between the entry price and stop loss price")
TradeAboveMAFilterPer = input(50, "The System won't trade if price is below this MA")
UpBoxSize = (input(10, "Box size in %") * 0.01)+1 // 1.1 == 10% up
DnBoxSize = 1-(input(10, "Box size in %") * 0.01) // 0.9 == 10% dn
var FirstBar = close > 0 ? close : na
var FirstTop = FirstBar * UpBoxSize
var FirstBot = FirstBar * DnBoxSize
var top = sma(FirstTop, 1)
var bot = sma(FirstBot, 1)
/// The Box Calcs
if high[2] > top
top := top * UpBoxSize
bot := bot * UpBoxSize
if low[1] < bot
top := top * DnBoxSize
bot := bot * DnBoxSize
plot(bot, "Bot", #ff0000) // Green
plot(top, "Top", #00ff00) // Red
mid = ((top-bot)/2)+bot
plot(mid, "Mid", color.gray)
TradeAboveMAFilter = sma(close, TradeAboveMAFilterPer)
plot(TradeAboveMAFilter, "Trade AboveMAF Filter", color.yellow, 3, style=plot.style_circles)
// col = high[1] < top and high >= top ? color.white : na
// bgcolor(col)
/// Shares
RiskRange = close * abs(DnBoxSize - 1) // 0.9 - 1 == 1.10 // 10% abs so you don't get a neg number NB NB
Shares = RiskPerTrade / RiskRange
//plot(close-RiskRange, "RiskRange", color.fuchsia)
Enter = high >= top
and close[1] > TradeAboveMAFilter
and strategy.opentrades[0] == strategy.opentrades[1]
and strategy.opentrades[1] == strategy.opentrades[2]
and strategy.opentrades[2] == strategy.opentrades[3]
and strategy.opentrades[3] == strategy.opentrades[4]
and strategy.opentrades[4] == strategy.opentrades[5]
and strategy.opentrades[5] == strategy.opentrades[6]
// won't enter if new positon was taken in the last 6 bars
// need better code for this.
/// Buy & Sell
// (new highs) and (Close above moving average filter) and (No new trades were taken receently)
if Enter //(high >= top) and (close[1] > TradeAboveMAFilter) and strategy.opentrades[0] == strategy.opentrades[1]
strategy.order("En", strategy.long, qty=Shares, limit=top)//, stop=top)
//barcolor(strategy.position_size != 0 ? #00ff00 : color.gray)
// /// If ONE Position THEN this Stop Because:
// if strategy.position_size == 1
// strategy.exit("Ex", "En", stop=bot)
/// If it has more than one trad OPEN
if strategy.position_size > 0
strategy.exit("Ex", "En", stop=bot[2] ) // puts stop on old bot
//plot(strategy.position_avg_price, "Avg Price", color.yellow)