From 70425b9e6db56a669e1d2505f4e811b3d41792a2 Mon Sep 17 00:00:00 2001 From: moshferatu Date: Fri, 15 Nov 2024 06:04:00 -0800 Subject: [PATCH] Add script for generating swing trading signals based on advances --- strategies/advances.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 strategies/advances.py diff --git a/strategies/advances.py b/strategies/advances.py new file mode 100644 index 0000000..ca68a8d --- /dev/null +++ b/strategies/advances.py @@ -0,0 +1,22 @@ +from pandas import DataFrame, Series +from daily_data import get_daily_data + +def signals(data: DataFrame) -> Series: + """ + Generate long signals based on the Advance / Decline Ratio strategy. + + Returns a Series with 'L' for long signals and 'N' for no signal. + """ + above_200_ma = data['Close'] > data['Close'].rolling(window = 200).mean() + + start_date = data['Date'].min() + end_date = data['Date'].max() + advances = get_daily_data(symbol = 'IINA.Z', start_date = start_date, end_date = end_date) + declines = get_daily_data(symbol = 'IIND.Z', start_date = start_date, end_date = end_date) + + ratio = advances['Close'] / declines['Close'] + ratio_greater_than_2 = ratio >= 2 + + signals = Series('N', index = data.index) + signals[above_200_ma & ratio_greater_than_2] = 'L' + return signals \ No newline at end of file