nitishkarvekar commited on
Commit
5e39409
·
verified ·
1 Parent(s): e4472c3

Update backtest_engine.py

Browse files
Files changed (1) hide show
  1. backtest_engine.py +29 -5
backtest_engine.py CHANGED
@@ -1,20 +1,44 @@
1
  import pandas as pd
 
2
 
3
 
4
  def backtest_strategy(df):
5
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  wins = 0
7
  trades = 0
8
 
9
- for i in range(200, len(df) - 1):
 
 
 
 
 
 
 
10
 
11
- ma20 = df["Close"].rolling(20).mean().iloc[i]
12
 
13
- price_today = df["Close"].iloc[i]
 
 
14
 
15
- price_next = df["Close"].iloc[i + 1]
 
 
16
 
17
- if price_today > ma20:
18
 
19
  trades += 1
20
 
 
1
  import pandas as pd
2
+ import ta
3
 
4
 
5
  def backtest_strategy(df):
6
 
7
+ if len(df) < 60:
8
+ return 0
9
+
10
+ df = df.copy()
11
+
12
+ close = df["Close"].squeeze()
13
+
14
+ rsi = ta.momentum.RSIIndicator(close).rsi()
15
+
16
+ ma20 = close.rolling(20).mean()
17
+ ma50 = close.rolling(50).mean()
18
+
19
  wins = 0
20
  trades = 0
21
 
22
+ for i in range(50, len(df) - 1):
23
+
24
+ rsi_val = rsi.iloc[i]
25
+ ma20_val = ma20.iloc[i]
26
+ ma50_val = ma50.iloc[i]
27
+
28
+ price_today = close.iloc[i]
29
+ price_next = close.iloc[i + 1]
30
 
31
+ signal = False
32
 
33
+ # RSI oversold bounce
34
+ if rsi_val < 35:
35
+ signal = True
36
 
37
+ # MA bullish crossover
38
+ if ma20_val > ma50_val:
39
+ signal = True
40
 
41
+ if signal:
42
 
43
  trades += 1
44