strategies.py 文件源码

python
阅读 49 收藏 0 点赞 0 评论 0

项目:marketcrush 作者: basaks 项目源码 文件源码
def exit_trades(self, signals, price_df):
        """
        This function applies the exit criteria.
        :param signals: ndarray
            the signals array
        :param price_df:
            ohlc dataframe
        :return:
        """
        atr = talib.ATR(np.array(price_df['high']), np.array(price_df['low']),
                        np.array(price_df['close']),
                        timeperiod=self.atr_stops_period)
        log.info('Starting to calculate profit/loss')
        price_df['atr'] = atr
        price = price_df['close'].values
        entries = np.zeros_like(atr)
        exits = np.zeros_like(atr)
        profits = np.zeros_like(atr)
        units = np.zeros_like(atr)
        commission = np.zeros_like(atr)
        _exit = 0

        # Calculate profit, entry/exit (hold time) based on atr criteria
        # In this loop we make sure there are no overlapping trades

        for i, s in enumerate(signals):
            if np.isnan(price_df.ix[i, ['atr']].values[0]):
                signals[i] = 0
                continue
            if s and _exit <= i:
                _exit, profit, unit = self._exit_trailing_atr(price_df, i, s)
                entries[i] = i
                exits[i] = _exit
                # subtract commision from profit
                profits[i] = profit
                commission[i] = (unit * (price[i] +
                                         price[_exit])) * self.commission
                units[i] = unit
            else:
                signals[i] = 0

        exits_df = pd.DataFrame({'entries': entries,
                                 'exits': exits,
                                 'profits': profits,
                                 'commission': commission,
                                 'units': units,
                                 'signal': signals},
                                index=price_df.index)
        price_df = price_df.join(exits_df)
        return price_df
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号