Я пытаюсь нанести точки входа в сделку на графике forex mplfinance. У меня базовая диаграмма работает нормально. Мои данные поступают из DataFrame, который заполняется из импорта CSV. Один из столбцов под названием «Golden_Cross» содержит слово «long», которое является сигналом, который я хочу отобразить с помощью стрелки.
Я пытаюсь эмулировать функцию PercentB_belowzero в документации mplfinance. Я понимаю суть того, что делает эта функция, но некоторые детали для меня утеряны. например каково значение цены[дата] и для чего используется предыдущий? Это может быть не важно. Ниже приведен код, который у меня есть на данный момент:
Код: Выделить всё
import pandas as pd
import mplfinance as mpf
import math
def go_long(df):
signal = [math.nan] * len(df)
print("len(df) = " + str(len(df)))
print("len(signal) = " + str(len(signal)))
for i in range(1, len(df)):
if df['Golden_Cross'].iloc[i] == "long":
signal.append(df['close'].iloc[i] * 0.99)
else:
signal.append(math.nan)
return signal
if __name__ == '__main__':
df = pd.read_csv('GBPUSD_MA_Crossover2.csv', index_col=0, parse_dates=True)
df.index.name = 'date'
long_signal = go_long(df)
apds = [ mpf.make_addplot(df[['fast_ma', 'slow_ma']], panel=0, title='GBPUSD'),
# mpf.make_addplot((df['dmi']),panel=1, title='DMI'),
mpf.make_addplot(long_signal, type = 'scatter', panel=0, markersize=200, marker='^')
]
mpf.plot(df, type= 'candle', tight_layout=True, datetime_format='%Y-%m-%d', volume=False, show_nontrading=False, addplot=apds)
Код: Выделить всё
> len(df) = 381 len(signal) = 381
> Traceback (most recent call last):
> File "/data/stuart/Projects/Python/BackTesting/Scratches/charting1.py",
> line 25, in
> mpf.plot(df, type= 'candle', tight_layout=True, datetime_format='%Y-%m-%d', volume=False, show_nontrading=False,
> addplot=apds)
File
> "/data/stuart/Projects/Python/Env/lib/python3.12/site-packages/mplfinance/plotting.py",
> line 808, in plot
> ax = _addplot_columns(panid,panels,ydata,apdict,xdates,config,colcount)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "/data/stuart/Projects/Python/Env/lib/python3.12/site-packages/mplfinance/plotting.py",
> line 1139, in _addplot_columns
> ax.scatter(xdates, ydata, s=size, marker=mark, color=color, alpha=alpha, edgecolors=edgecolors, linewidths=linewidths,label=label)
>
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File
> "/data/stuart/Projects/Python/Env/lib/python3.12/site-packages/matplotlib/__init__.py",
> line 1473, in inner
> return func(
> ^^^^^ File "/data/stuart/Projects/Python/Env/lib/python3.12/site-packages/matplotlib/axes/_axes.py",
> line 4787, in scatter
> raise ValueError("x and y must be the same size") ValueError: x and y must be the same size
Кто-нибудь может помочь мне правильно запустить этот код.< /p>
С уважением, СтюартМ
Подробнее здесь: https://stackoverflow.com/questions/787 ... atter-plot