def __add_observation_specific_columns_to_data_dict__(self):
        self._entity_data_dict[POC.LIMIT_PCT] = self.__get_limit_pct__()
        self._entity_data_dict[
            POC.STOP_LOSS_PCT] = self.__get_stop_loss_pct__()
        self._entity_data_dict[POC.CURRENT_TICK_PCT] = 0
        self._entity_data_dict[POC.CURRENT_VALUE_HIGH_PCT] = 0
        self._entity_data_dict[POC.CURRENT_VALUE_LOW_PCT] = 0
        self._entity_data_dict[POC.CURRENT_VALUE_OPEN_PCT] = 0
        self._entity_data_dict[POC.CURRENT_VALUE_CLOSE_PCT] = 0
        self._entity_data_dict[POC.CURRENT_VOLUME_BUY_PCT] = 0
        self._entity_data_dict[POC.CURRENT_VOLUME_LAST_PCT] = 0
        self._entity_data_dict[
            POC.BEFORE_PATTERN_MAX_PCT] = MyMath.get_change_in_percentage(
                self.buy_price,
                self.wave_tick_list_before_pattern.df[CN.HIGH].max())
        self._entity_data_dict[
            POC.BEFORE_PATTERN_MIN_PCT] = MyMath.get_change_in_percentage(
                self.buy_price,
                self.wave_tick_list_before_pattern.df[CN.LOW].min())
        self._entity_data_dict[
            POC.PATTERN_MAX_PCT] = MyMath.get_change_in_percentage(
                self.buy_price, self.wave_tick_list_pattern.df[CN.HIGH].max())
        self._entity_data_dict[
            POC.PATTERN_MIN_PCT] = MyMath.get_change_in_percentage(
                self.buy_price, self.wave_tick_list_pattern.df[CN.LOW].min())
        self._entity_data_dict[POC.AFTER_BUY_MAX_PCT] = 0
        self._entity_data_dict[POC.AFTER_BUY_MIN_PCT] = 0

        self._entity_data_dict[
            POC.
            FC_TICKS_TO_POSITIVE_HALF_PCT] = self.__get_forecast_ticks_as_pct__(
                DC.FC_TICKS_TO_POSITIVE_HALF)
        self._entity_data_dict[
            POC.
            FC_TICKS_TO_POSITIVE_FULL_PCT] = self.__get_forecast_ticks_as_pct__(
                DC.FC_TICKS_TO_POSITIVE_FULL)
        self._entity_data_dict[
            POC.
            FC_TICKS_TO_NEGATIVE_HALF_PCT] = self.__get_forecast_ticks_as_pct__(
                DC.FC_TICKS_TO_NEGATIVE_HALF)
        self._entity_data_dict[
            POC.
            FC_TICKS_TO_NEGATIVE_FULL_PCT] = self.__get_forecast_ticks_as_pct__(
                DC.FC_TICKS_TO_NEGATIVE_FULL)
Пример #2
0
 def get_slope(self, pos_start: int, pos_end: int, df_col: str = CN.CLOSE):
     df_part = self.df.iloc[pos_start:pos_end + 1]
     # print('get_slope: pos_start={}, pos_end={}, df_col={}, df_part.shape[0]={}'.format(
     #     pos_start, pos_end, df_col, df_part.shape[0]))
     tick_first = WaveTick(df_part.iloc[0])
     tick_last = WaveTick(df_part.iloc[-1])
     stock_df = PatternDataFrame(df_part)
     func = stock_df.get_f_regression(df_col)
     offset_value = df_part[df_col].mean()
     return MyMath.get_change_in_percentage(func(tick_first.f_var), func(tick_last.f_var), offset_value=offset_value)
Пример #3
0
 def __adjust_observation_to_wave_tick__(self, obs: TradeObservation,
                                         wave_tick: WaveTick,
                                         wave_tick_previous: WaveTick):
     obs.wave_tick = wave_tick
     obs.current_value_high_pct = MyMath.get_change_in_percentage(
         self.off_set_value, wave_tick.high)
     obs.current_value_low_pct = MyMath.get_change_in_percentage(
         self.off_set_value, wave_tick.low)
     obs.current_value_open_pct = MyMath.get_change_in_percentage(
         self.off_set_value, wave_tick.open)
     obs.current_value_close_pct = MyMath.get_change_in_percentage(
         self.off_set_value, wave_tick.close)
     obs.current_volume_buy_pct = MyMath.get_change_in_percentage(
         self.off_set_volume, wave_tick.volume)
     obs.current_volume_last_pct = MyMath.get_change_in_percentage(
         wave_tick_previous.volume, wave_tick.volume)
 def __get_stop_loss_pct__(self):
     # we don't use self._entity_data_dict[DC.TRADE_BOX_STOP_LOSS_ORIG] - too narrow !!!
     stop_loss = self.buy_price - self._entity_data_dict[
         DC.TRADE_BOX_HEIGHT]
     return MyMath.get_change_in_percentage(self.buy_price, stop_loss)
 def __get_limit_pct__(self):
     limit_orig = self._entity_data_dict[DC.TRADE_BOX_LIMIT_ORIG]
     if limit_orig == math.inf:
         limit_orig = self._entity_data_dict[DC.TRADE_BOX_STOP_LOSS_ORIG] \
                      + self._entity_data_dict[DC.TRADE_BOX_HEIGHT]
     return MyMath.get_change_in_percentage(self.buy_price, limit_orig)
 def __get_slope_in_decimal_percentage__(self, func: np.poly1d):
     return MyMath.get_change_in_percentage(
         func(self._tick_first.f_var),
         func(self.tick_last.f_var),
         offset_value=self._slope_offset_value)