matplotlib / matplotlib/mplfinance

Plotting a Swing chart over the generic OHLC chart

Aperta
#541 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

question
Lingua principale
Python
Stelle
4.4k
Fork
678
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

I'm want to visualize a swings/price movement chart over a normal OHLC chart, e.g., like the attachment below.

image

I have written the following code:

def get_swing_dataframe(daily: DataFrame):
    last_high = -999999999
    last_low = abs(last_high)
    raw_dftb = []
    dip = True

    for row in daily.iterrows():
        close = row[1]["Close"]
        mark = False

        if dip:
            if close > last_high:
                dip = False
                mark = True
                last_high = close
        else:
            if close < last_low:
                dip = True
                mark = True
                last_low = close

        if mark:
            raw_dftb.append(row[1])

    df = pd.DataFrame(raw_dftb)
    df.index.name = "Date"
    return df


def main():
    daily = pd.read_csv("ES___CCB.csv", index_col=0, parse_dates=True)
    daily.index.name = "Date"
    swing = get_swing_dataframe(daily)
    mpf.plot(
        daily,
        style="binance",
        type="ohlc",
        addplot=[mpf.make_addplot(swing, type="line", color="g", panel=1)],
    )


if __name__ == "__main__":
    main()

The issue here is that the "Swing" dataframe does not have a data entry for every single date, it only marks where and when the price changes, spitting out the following error:

  File "D:\Andaconda3\lib\site-packages\matplotlib\axes\_axes.py", line 1605, in plot
    lines = [*self._get_lines(*args, data=data, **kwargs)]
  File "D:\Andaconda3\lib\site-packages\matplotlib\axes\_base.py", line 315, in __call__
    yield from self._plot_args(this, kwargs)
  File "D:\Andaconda3\lib\site-packages\matplotlib\axes\_base.py", line 501, in _plot_args
    raise ValueError(f"x and y must have same first dimension, but "
ValueError: x and y must have same first dimension, but have shapes (6232,) and (23,)

How can I achieve this?
Recap: I want to visualize a swings/price movement chart over a normal OHLC chart, e.g., like the attachment below.

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia con le chiamate a mpf.plot e mpf.make_addplot nell’esempio, quindi riproduci la discrepanza usando i DataFrames daily e swing descritti. Traccia il modo in cui i dati di addplot vengono allineati all’asse x OHLC; il lavoro è completato quando una serie swing sparsa può essere sovrapposta al grafico OHLC normale senza l’errore di dimensione x/y e corrisponde alla visualizzazione swing richiesta.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
data-visualization
Tipo di issue
Funzionalità
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.