This strategy aims to solve the problem that Pine Script cannot set leverage during backtesting to achieve compound interest with leverage. The strategy dynamically calculates the position size based on the strategy equity, set leverage ratio and closing price.
Lev = math.max(math.round(strategy.equity * leverage / close), 0)
, make it proportional to equity and leverageThis strategy implements leverage setting in Pine Script, solving the problem that backtesting cannot simulate leverage, calculates position size linked to equity to achieve compound interest with leverage. The strategy is simple and effective, can be further optimized, and worth learning.
/*backtest start: 2022-12-22 00:00:00 end: 2023-12-28 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/ // © RingsCherrY //@version=5 strategy("How to use Leverage in PineScript", overlay=true, pyramiding=1, initial_capital=1000000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.04) ////////////////////////////////////////// ////////////////Indicators//////////////// ////////////////////////////////////////// length = input( 14 ) overSold = input( 30 ) overBought = input( 70 ) price = close vrsi = ta.rsi(price, length) co = ta.crossover(vrsi, overSold) cu = ta.crossunder(vrsi, overBought) ////////////////////////////////////////// /////////////////Leverage///////////////// ////////////////////////////////////////// //The number of decimal places for each position opening, i.e., the accuracy precision = input.int(1,title='Precision') //Leverage, the default is 1, here is not recommended to open a high leverage leverage = input.int(1,title='Leverage',minval = 1, maxval = 100 ,step = 1) //Calculate the number of open contracts, here using equity for calculation, considering that everyone compound interest is used for trading equity Lev = math.max(math.round(strategy.equity * leverage / close , precision), 0) if (not na(vrsi)) if (co) strategy.entry("RsiLE", strategy.long,qty = Lev, comment="RsiLE") if (cu) strategy.entry("RsiSE", strategy.short,qty = Lev, comment="RsiSE") //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)