Giter VIP home page Giter VIP logo

harmonicpatterns's Introduction

Harmonic Pattern Detector

In short, this project filters ZIGZAG patterns that fit-in Harmonic Patterns.

Search these patterns in ZIG-ZAG(parameters are configurable) patterns:

Harmonic Trading reference

  • ABCD

  • Gartley

  • Bat

  • AltBat

  • ButterFly

  • Crab

  • DeepCrab

  • Shark

  • Cypper

  • all supports predict and deepsearch

patterns found

plot_0

patterns predict

predict_0

Reqirements

  • TA-Lib
Setup

cd <project_dir>
pip install -r requirements.txt
pip install -e . # or python setup.py install

Features

Visualize

  • Draw Harmonic Patterns in the graph using mplfinance + ipympl

Predict

  • Predict harmonic patterns according to current kline

Else:

harmonicpatterns's People

Contributors

djoffrey avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

harmonicpatterns's Issues

Division by zero warnings

@djoffrey Hey, I'm also getting this:

:823: RuntimeWarning: invalid value encountered in double_scalars
XAD = abs(A-D) / abs(X-A)
:946: RuntimeWarning: invalid value encountered in double_scalars
XAD = abs(A-D) / abs(X-A)
:1055: RuntimeWarning: invalid value encountered in double_scalars
XAD = abs(A-D) / abs(X-A)
:1177: RuntimeWarning: invalid value encountered in double_scalars
XAD = abs(A-D) / abs(X-A)
:123: RuntimeWarning: invalid value encountered in double_scalars
XAD = abs(A-D) / abs(X-A)
:1180: RuntimeWarning: invalid value encountered in double_scalars
XCD = abs(D-C) / abs(X-C)

From what I was able to check, it's not compromising my patterns validation. But I would like to hear from you too.

src下面有2个文件是一样的

Djoffrey 你好,这是个非常棒的库。

我看了src下面有2个文件,貌似都一样的 harmonic_patterns.py和harmonic_functions.py,以哪个为准

Difficulty in pattern recognition

Hello, good time...I changed the exchange, but with this change, no pattern is detected :( Considering that the data is processed well, what is the problem?

Cant add timestamp on my points that form a pattern

@djoffrey can you help me out? I think discord would be better. But here it is:

def fetch_usdt_pairs():
exclude_symbols = ["SRMUSDT", "HNTUSDT", "CVCUSDT", "BTSUSDT", "BTCSTUSDT", "SCUSDT", "TLMUSDT", "RAYUSDT", "FTTUSDT", "1000SHIBUSDT", "BTCDOMUSDT", "1000LUNCUSDT", "BLUEBIRDUSDT", "1000XECUSDT", "FOOTBALLUSDT", "ETHUSDT_230630", "LUNA2USDT", "DEFIUSDT"]
futures_pairs = client.futures_exchange_info()["symbols"]
return [pair["symbol"] for pair in futures_pairs if pair["quoteAsset"] == "USDT" and pair["symbol"] not in exclude_symbols]

def fetch_historical_data(symbol, interval, limit=500, start_time=None, end_time=None):
try:
klines = client.get_klines(symbol=symbol, interval=interval, limit=limit, startTime=start_time, endTime=end_time)
data = pd.DataFrame(klines, columns=["open_time", "open", "high", "low", "close", "volume", "close_time", "quote_asset_volume", "number_of_trades", "taker_buy_base_asset_volume", "taker_buy_quote_asset_volume", "ignore"])
data = data.astype({"open": "float64", "high": "float64", "low": "float64", "close": "float64"})
return data
except BinanceAPIException as e:
print(f"Error fetching historical data for {symbol}: {e}")
return pd.DataFrame()

def analyze_patterns(interval):
usdt_pairs = fetch_usdt_pairs()

bullish_patterns = []
bearish_patterns = []

for symbol in usdt_pairs:
    data = fetch_historical_data(symbol, interval)
    if not data.empty:
        if data.shape[0] < 500:
            print(f"Symbol: {symbol}")
            print("Insufficient data\n")

        harmonic_detector = HarmonicDetector()
        patterns, _ = harmonic_detector.search_patterns(data)  # Extract only the found patterns list
        if len(patterns) > 0:
            latest_pattern = patterns[-1]
            if "bullish" in latest_pattern[2]:
                bullish_patterns.append((symbol, latest_pattern))
            elif "bearish" in latest_pattern[2]:
                bearish_patterns.append((symbol, latest_pattern))
    else:
        print(f"Symbol: {symbol}")
        print("No data available\n")

    time.sleep(1)  # Add sleep to avoid hitting rate limits


print(f"\nInterval: {interval}")

# Print bullish patterns
print(f"Bullish patterns:")
for symbol, pattern in bullish_patterns:
    print(f"Symbol: {symbol}")
    print(f"Pattern: {pattern[2]}")
    print("Prices:", [point[1] for point in pattern[0]])
    print("\n")

print("\n")

# Print bearish patterns
print(f"Bearish patterns:")
for symbol, pattern in bearish_patterns:
    print(f"Symbol: {symbol}")
    print(f"Pattern: {pattern[2]}")
    print("Prices:", [point[1] for point in pattern[0]])
    print("\n")

if name == "main":
intervals = [
Client.KLINE_INTERVAL_2HOUR,
Client.KLINE_INTERVAL_4HOUR,
Client.KLINE_INTERVAL_12HOUR,
Client.KLINE_INTERVAL_1DAY,
Client.KLINE_INTERVAL_3DAY,
]

for interval in intervals:
    analyze_patterns(interval)

I get the price and the timeframe, but every time I try to add timestamp I get lots of errors. Timestamp for each point of the pattern is very important, otherwise I'll get lost. Cant validate etc. I have all the functions built in this example here inside my code: https://github.com/djoffrey/HarmonicPatterns/blob/main/src/harmonic_patterns.py

Please help.

NetworkError: binance GET https://api.binance.com/api/v3/exchangeInfo

Hello,
It gives the following error when running following code:

binance = getattr(ccxt, 'binance')(ccxt_options)
markerts = binance.load_markets()
symbol = 'BTC/USDT'
period = '4h'

ProxyError: HTTPSConnectionPool(host='api.binance.com', port=443): Max retries exceeded with url: /api/v3/exchangeInfo (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fcdac308490>: Failed to establish a new connection: [Errno 111] Connection refused')))

Can you please help with this?

Use in dataframe

Hello.. Very glad when I found this repository "Harmanic patterns". I have one question (perhaps a stupid question):
How can i use this on dataframe??

Can you add HH- HL-LL-LH ?

Man im appreciated for your hard work. Do you have chance to HH- HL-LL-LH like Tradingview script.

Thank you.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.