
Cette stratégie permet de gérer les risques de prévention de l’augmentation de la garantie en mettant en place des conditions de marge élevée et de garantie additionnelle, et de réduire les positions en temps opportun en cas de forte volatilité du marché.
Grâce à ces réglages, il est possible d’arrêter les pertes en temps opportun lorsque des fluctuations importantes du marché entraînent une baisse rapide des droits et intérêts, ce qui évite le risque de garantie supplémentaire.
Il est possible de réduire le risque en ajustant le ratio de levier de manière appropriée, en configurant des lignes de garantie supplémentaires pour correspondre aux lignes de stop-loss et en optimisant les stratégies de stop-loss.
Cette stratégie permet de gérer le risque en utilisant un niveau élevé de levier et des montants de garantie supplémentaires, ce qui permet d’éviter l’explosion de la position du compte. Cependant, un niveau élevé de levier augmente également le risque, ce qui nécessite une réduction supplémentaire du risque par des méthodes telles que le jugement de la tendance, l’optimisation des arrêts de perte et le contrôle du temps de négociation.
/*backtest
start: 2023-11-25 00:00:00
end: 2023-12-25 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/
//@version=4
//@author=Daveatt
// Breakout on 2H high/low break Strategy
SystemName = "Leverage Strategy"
TradeId = "🙏"
InitCapital = 100000
InitPosition = 1
UseMarginCall = input(true, title="Use Margin Call?")
MarginValue = input(25000, title="Margin Value", type=input.float)
// use 1 for no leverage
// use 0.1 for be underleveraged and bet 1/10th of a pip value
// use any value > 1 for full-degen mode
UseLeverage = input(true, title="Use Leverage")
LeverageValue = input(4, title="Leverage mult (1 for no leverage)", minval=0.1, type=input.float)
// Risk Management
UseRiskManagement = input(true, title="Use Risk Management?")
// ticks = 1/10th of a pip value
StopLoss = input(5, title="Stop Loss in ticks value", type=input.float)
TakeProfit = input(500, title="Take Profit in ticks value", type=input.float)
InitCommission = 0.075
InitPyramidMax = 1
CalcOnorderFills = false
CalcOnTick = true
DefaultQtyType = strategy.cash
DefaultQtyValue = strategy.cash
Currency = currency.USD
Precision = 2
Overlay=false
MaxBarsBack=3000
strategy
(
title=SystemName,
shorttitle=SystemName,
overlay=Overlay
)
//////////////////////////// UTILITIES ///////////////////////////
f_print(_txt, _condition) =>
var _lbl = label(na)
label.delete(_lbl)
if _condition
// saving the candle where we got rekt :(
_index = barssince(_condition)
_lbl := label.new(bar_index - _index, highest(100), _txt, xloc.bar_index, yloc.price, size = size.normal, style=label.style_labeldown)
//////////////////////////// STRATEGY LOGIC ///////////////////////////
// Date filterigng
_Date = input(true, title="[LABEL] DATE")
FromYear = input(2019, "From Year", minval=1900), FromMonth = input(12, "From Month", minval=1, maxval=12), FromDay = input(1, "From Day", minval=1, maxval=31)
ToYear = input(2019, "To Year", minval=1900), ToMonth = input(12, "To Month", minval=1, maxval=12), ToDay = input(9, "To Day", minval=1, maxval=31)
FromDate = timestamp(FromYear, FromMonth, FromDay, 00, 00)
ToDate = timestamp(ToYear, ToMonth, ToDay, 23, 59)
TradeDateIsAllowed = true
// non-repainting security version
four_hours_H = security(syminfo.tickerid, '240', high[1], lookahead=true)
four_hours_L = security(syminfo.tickerid, '240', low[1], lookahead=true)
buy_trigger = crossover(close, four_hours_H)
sell_trigger = crossunder(close, four_hours_L)
// trend states
since_buy = barssince(buy_trigger)
since_sell = barssince(sell_trigger)
buy_trend = since_sell > since_buy
sell_trend = since_sell < since_buy
change_trend = (buy_trend and sell_trend[1]) or (sell_trend and buy_trend[1])
// plot(four_hours_H, title="4H High", linewidth=2, color=#3c91c2, style=plot.style_linebr, transp=0,
// show_last=1, trackprice=true)
// plot(four_hours_L, title="4H Low", linewidth=2, color=#3c91c2, style=plot.style_linebr, transp=0,
// show_last=1, trackprice=true)
plot(strategy.equity, color=color.blue, linewidth=3, title="Strategy Equity")
// get the entry price
entry_price = valuewhen(buy_trigger or sell_trigger, close, 0)
// SL and TP
SL_price = buy_trend ? entry_price - StopLoss : entry_price + StopLoss
is_SL_hit = buy_trend ? crossunder(low, SL_price) : crossover(high, SL_price)
TP_price = buy_trend ? entry_price + TakeProfit : entry_price - TakeProfit
is_TP_hit = buy_trend ? crossover(high, TP_price) : crossunder(low, TP_price)
// Account Margin Management:
f_account_margin_call_cross(_amount)=>
_return = crossunder(strategy.equity, _amount)
f_account_margin_call(_amount)=>
_return = strategy.equity <= _amount
is_margin_call_cross = f_account_margin_call_cross(MarginValue)
is_margin_call = f_account_margin_call(MarginValue)
plot(strategy.equity, title='strategy.equity', transp=0, linewidth=4)
//plot(barssince(is_margin_call ), title='barssince(is_margin_call)', transp=100)
can_trade = iff(UseMarginCall, not is_margin_call, true)
trade_size = InitPosition * (not UseLeverage ? 1 : LeverageValue)
// We can take the trade if not liquidated/margined called/rekt
buy_final = can_trade and buy_trigger and TradeDateIsAllowed
sell_final = can_trade and sell_trigger and TradeDateIsAllowed
close_long = buy_trend and
(UseRiskManagement and (is_SL_hit or is_TP_hit)) or sell_trigger
close_short = sell_trend and
(UseRiskManagement and (is_SL_hit or is_TP_hit)) or buy_trigger
strategy.entry(TradeId + ' B', long=true, qty=trade_size, when=buy_final)
strategy.entry(TradeId + ' S', long=false, qty=trade_size, when=sell_final)
strategy.close(TradeId + ' B', when=close_long)
strategy.close(TradeId + ' S', when=close_short)
// FULL DEGEN MODE ACTIVATED
// Margin called - Broker closing your account
strategy.close_all(when=is_margin_call)
if UseMarginCall and is_margin_call_cross
f_print("☠️REKT☠️", is_margin_call_cross)