Strategies
PlanB-Quant-Investing-101-v2
Zer3192 · PineScript · Mean Reversion · 2023-12-02 17:49:46
Trigger
—
Sizing
—
Risk control
Exit
—
Code summary Auto-extracted · not described by the author
Trading code: 0 functions, 0 classes; detected Entry, Exit, Stop-loss, Take-profit, Sizing.
Trading codeEntryExitStop-lossTake-profitSizing
Detected terms
Relative Strength Index
Operation terms
Stop LossTake Profit
Code comments
- L18 SELL CONDITION
- L19 RSI was above 90% last six months AND drops below 65%
- L21 RSI above 90% last six month
- L29 RSIdrops below 65%
- L34 sellsignal
75 code lines · 0 functions · 0 classes · 6 parameters
Parameters
| Parameters | Default | Description |
|---|---|---|
| v_input_1 | 90 | selllevel |
| v_input_2 | 65 | drop |
| v_input_3 | 50 | buylevel |
| v_input_4 | false | ----- Use Stop Loss / Take profit ----- |
| v_input_5 | 100 | Stop Loss % |
| v_input_6 | 1.5 | Take Profit % |
Source code (75 lines)
/*backtest
start: 2021-05-08 00:00:00
end: 2022-05-07 23:59:00
period: 4h
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/
// © fillippone
//@version=4
strategy("PlanB Quant Investing 101", shorttitle="PlanB RSI Strategy", overlay=true,calc_on_every_tick=false,pyramiding=0, default_qty_type=strategy.cash,default_qty_value=1000, currency=currency.USD, initial_capital=1000,commission_type=strategy.commission.percent, commission_value=0.0)
r=rsi(close,14)
//SELL CONDITION
//RSI was above 90% last six months AND drops below 65%
//RSI above 90% last six month
selllevel = input(90)
maxrsi = highest(rsi(close,14),6)[1]
rsisell = maxrsi > selllevel
//RSIdrops below 65%
drop = input(65)
rsidrop= r < drop
//sellsignal
sellsignal = rsisell and rsidrop
//BUY CONDITION
//IF (RSI was below 50% last six months AND jumps +2% from the low) THEN buy, ELSE hold.
//RSI was below 50% last six months
buylevel = input(50)
minrsi = lowest(rsi(close,14),6)[1]
rsibuy = minrsi < buylevel
//IF (RSI jumps +2% from the low) THEN buy, ELSE hold.
rsibounce= r > (minrsi + 2)
//buysignal=buyrsi AND rsidrop
//buysignal
buysignal = rsibuy and rsibounce
//Strategy
strategy.entry("Buy Signal",strategy.long, when = buysignal)
strategy.entry("Sell Signal",strategy.short, when = sellsignal)
// === Stop LOSS ===
useStopLoss = input(false, title='----- Use Stop Loss / Take profit -----', type=bool)
sl_inp = input(100, title='Stop Loss %', type=float, step=0.25)/100
tp_inp = input(1.5, title='Take Profit %', type=float, step=0.25)/100
stop_level = strategy.position_avg_price * (1 - sl_inp)
take_level = strategy.position_avg_price * (1 + tp_inp)
stop_level_short = strategy.position_avg_price * (1 + sl_inp)
take_level_short = strategy.position_avg_price * (1 - tp_inp)
// === Stop LOSS ===
if useStopLoss
strategy.exit("Stop Loss/Profit Long","Buy Signal", stop=stop_level, limit=take_level)
strategy.exit("Stop Loss/Profit Short","Sell Signal", stop=stop_level_short, limit=take_level_short)