用matplotlib绘制每次交易的盈亏三角形

Posted duanqs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用matplotlib绘制每次交易的盈亏三角形相关的知识,希望对你有一定的参考价值。

用matplotlib绘制每次交易的盈亏三角形

结果:

代码:

python

def plot_trade_triangle(self):        
    # plot each trade as a trade-triangle, and annotate pnl
    trade = self.trade
    equity = self.equity.equity
    fig,ax=plt.subplots()
    for dt, row in trade.iterrows():
        bars = row.buybar, row[\'sellbar\']
        pnl = 0 , row[\'pnl\']
        colors = \'r\' if row.pnl>0 else \'g\'
        
        ax.plot( bars, pnl, color=colors)
        arrowprops = dict(facecolor=\'black\', 
                          edgecolor=colors,
                          #shrink=0.05,
                          arrowstyle=\'->\',)
        y_factor = 1.2 if abs(row.pnl) > 10. else 1.6
        colors = \'yellow\' if row.pnl>0 else \'cyan\'
        valignment = \'bottom\' if row[\'pnl\']>0 else \'top\'
        note= \'hld:%s\\npnl:%s\'% (bars[1]-bars[0], str(row[\'pnl\']))
        ax.annotate(note, xy=(row.sellbar, row.pnl), 
                    xytext=(row.sellbar, row.pnl*y_factor), 
                    va=valignment,
                    arrowprops=arrowprops,)   
        ax.fill_between(bars, pnl, color=colors)
        
        # 画: 持股期间的浮动盈亏:
        float_pnl=(roc1[row.buybar+1:row.sellbar+1]+1).cumprod()
        iloc =  [equity.index.get_loc(key) for key in float_pnl.index]
        float_pnl = pd.Series( (float_pnl.values-1)*100., index=iloc)
        ax.plot(float_pnl, color=\'b\')
        ax.set_ylabel(\'float_pnl(%)\')

以上是关于用matplotlib绘制每次交易的盈亏三角形的主要内容,如果未能解决你的问题,请参考以下文章

python怎么画三角形

如何在 matplotlib 中绘制斜率三角形?

在 Matplotlib 中重置颜色循环

在 Matplotlib 中重置颜色循环

用matplotlib和pandas绘制股票MACD指标图,并验证化交易策略

如何修改此代码,以便我不会每次都重新绘制图表,matplotlib