Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pattern rec functions return all zeros #665

Open
blexo opened this issue Jul 17, 2024 · 3 comments
Open

Pattern rec functions return all zeros #665

blexo opened this issue Jul 17, 2024 · 3 comments

Comments

@blexo
Copy link

blexo commented Jul 17, 2024

Not sure if I am misunderstanding something... but I am getting all zeros for many pattern rec functions...

numpy v1.26.4
pandas v2.2.2
TA-Lib v0.4.28

example code:

import numpy as np
import pandas as pd
import talib

# Create a sample DataFrame with OHLC data
data = {
    'Open': [22, 21, 20, 18, 16, 16, 18, 19, 20, 21, 22, 23, 24],
    'High': [23, 22, 21, 19, 17, 17, 19, 20, 21, 22, 23, 24, 25],
    'Low': [21, 20, 19, 17, 15, 15, 17, 18, 19, 20, 21, 22, 23],
    'Close': [21, 20, 18, 16, 16, 18, 19, 20, 21, 22, 23, 24, 25]
}
df = pd.DataFrame(data)

# Convert the DataFrame columns to NumPy arrays with type float64
open_prices = np.array(df['Open'], dtype='float64')
high_prices = np.array(df['High'], dtype='float64')
low_prices = np.array(df['Low'], dtype='float64')
close_prices = np.array(df['Close'], dtype='float64')

# Apply the CDLMORNINGSTAR function
morning_star = talib.CDLMORNINGSTAR(open_prices, high_prices, low_prices, close_prices)

# Print the input data and the result
print("Open Prices: ", open_prices)
print("High Prices: ", high_prices)
print("Low Prices: ", low_prices)
print("Close Prices: ", close_prices)
print("Morning Star Pattern: ", morning_star)

Results:
Open Prices: [22. 21. 20. 18. 16. 16. 18. 19. 20. 21. 22. 23. 24.]
High Prices: [23. 22. 21. 19. 17. 17. 19. 20. 21. 22. 23. 24. 25.]
Low Prices: [21. 20. 19. 17. 15. 15. 17. 18. 19. 20. 21. 22. 23.]
Close Prices: [21. 20. 18. 16. 16. 18. 19. 20. 21. 22. 23. 24. 25.]
Morning Star Pattern: [0 0 0 0 0 0 0 0 0 0 0 0 0]

@mrjbq7
Copy link
Collaborator

mrjbq7 commented Jul 17, 2024

I mean, returning zeros isn't unusual.

Do you think that test case should return non-zero?

@blexo
Copy link
Author

blexo commented Jul 17, 2024

Here is a more extreme example... and it could just be that the code algo is different than what I was using as a learning example: https://commodity.com/technical-analysis/morning-star/

Day 4, sharply down (27 to 20)
Day 5, slightly down (20 to 18)
Day 6, sharply up (18 to 30)

data = {
'Open': [30, 29, 28, 27, 20, 18, 26, 28, 29, 30, 31, 32, 33],
'High': [31, 30, 29, 28, 26, 25, 27, 29, 30, 31, 32, 33, 34],
'Low': [29, 28, 27, 26, 24, 23, 25, 27, 28, 29, 30, 31, 32],
'Close': [29, 28, 27, 20, 18, 30, 28, 29, 30, 31, 32, 33, 34]
}

I've tried various penetration values... from .1 to .3

Am I misunderstanding how it should work?

@Dilibra
Copy link

Dilibra commented Jul 19, 2024

It seems that the issue arises because some fixed rules, such as criteria for determining whether a candlestick is a long, medium, or short bearish one, are hardcoded in the pattern recognition function. Is it possible to modify these hardcoded criteria into parameters that everyone can adjust according to their needs?

update:
Sorry, I found a solution in a previous issue. I hope it can help you. #624

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants