見出し画像

Tradeクラスの実装例 ⑥RSI

バックテストで使用するTradeクラスの実装例として、RSIを使用した例を挙げておきます。

from output.trade.trade_base import TradeBase, Reason
from signals.indicator import Indicator as Ind
from signals.price_util import PriceUtil as PUtil


class Trade(TradeBase):
    # 計算日数
    RSI_DAYS = 14
    BUY_THRESHOLD = 30
    SELL_THRESHOLD = 70

    def __init__(self, price_row, price_values, trade_values, investment):
        super().__init__(price_row, price_values, trade_values, investment)

    # 買い可能判定(売買)
    def is_buy_signal(self):
        can_buy = False
        if not self.trade.is_hold:
            # RSI
            close_list = self.price.close_list
            price_days = self.price.days
            period = self.RSI_DAYS
            back_days = 0
            rsi = Ind.rsi(close_list, price_days, period, back_days)
            if rsi is None:
                return False
            # 判定
            if rsi < self.BUY_THRESHOLD:
                can_buy = True
        return can_buy

    # 売り可能判定(売買)
    def is_sell_signal(self):
        can_sell = False
        if self.trade.is_hold:
            # RSI
            close_list = self.price.close_list
            price_days = self.price.days
            period = self.RSI_DAYS
            back_days = 0
            rsi = Ind.rsi(close_list, price_days, period, back_days)
            if rsi is None:
                return False
            # 判定
            if rsi > self.SELL_THRESHOLD:
                can_sell = True
        return can_sell

RSIについて

RSIについては以下のサイトを参考にしてください。

プロフィールアイコンを若いころの写真に変えてみました。身バレを防ぐためにStable Diffusionで加工しています。思っていたより綺麗になってしまってなんか嬉しいです。

綺麗になった私をもっと見てキャンペーンでもやろうかな。


いいなと思ったら応援しよう!