From 52d651209b4c5b8d78c956084a37e19dca2462c6 Mon Sep 17 00:00:00 2001 From: moshferatu Date: Fri, 15 Nov 2024 06:04:20 -0800 Subject: [PATCH] Add script for generating swing trading signals based on declines --- strategies/declines.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 strategies/declines.py diff --git a/strategies/declines.py b/strategies/declines.py new file mode 100644 index 0000000..6cd4b64 --- /dev/null +++ b/strategies/declines.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 Decline / Advance 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 = declines['Close'] / advances['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