Exemplo n.º 1
0
    def __init__(
        self,
        cta_engine: Any,
        strategy_name: str,
        vt_symbol: str,
        setting: dict,
    ):

        super().__init__(cta_engine, strategy_name, vt_symbol, setting)
        self.bg = BarGenerator(self.on_bar)
        self.am = ArrayManager()
Exemplo n.º 2
0
    def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
        """"""
        super().__init__(cta_engine, strategy_name, vt_symbol, setting)

        self.bg = BarGenerator(self.on_bar)
        self.am = ArrayManager()

        self.buy_vt_orderids = []
        self.sell_vt_orderids = []
        self.short_vt_orderids = []
        self.cover_vt_orderids = []
Exemplo n.º 3
0
    def __init__(self, cci_window: int, cci_level: float):
        """"""
        super().__init__()

        self.cci_window = cci_window
        self.cci_level = cci_level
        self.cci_long = self.cci_level
        self.cci_short = -self.cci_level

        self.bg = BarGenerator(self.on_bar)
        self.am = ArrayManager()
Exemplo n.º 4
0
    def __init__(self, rsi_window: int, rsi_level: float):
        """Constructor"""
        super().__init__()

        self.rsi_window = rsi_window
        self.rsi_level = rsi_level
        self.rsi_long = 50 + self.rsi_level
        self.rsi_short = 50 - self.rsi_level

        self.bg = BarGenerator(self.on_bar)
        self.am = ArrayManager()
Exemplo n.º 5
0
    def __init__(self, cta_engine, strategy_name, vt_symbol, setting):

        # 初始化父类
        super().__init__(cta_engine, strategy_name, vt_symbol, setting)

        self.bg_x = BarGenerator(lambda x: None, self.x_min, self.on_x_bar,
                                 Interval.MINUTE)
        self.am_x = ArrayManager(size=self.slow_window_5 + 1)

        self.bg_15 = BarGenerator(lambda x: None, 15, self.on_15_bar,
                                  Interval.MINUTE)  # 传入参数的含义、有没有顺序?
        self.am_15 = ArrayManager(size=self.slow_window_15 + 1)

        self.bg_30 = BarGenerator(lambda x: None, 30, self.on_30_bar,
                                  Interval.MINUTE)
        self.am_30 = ArrayManager(size=self.slow_window_30 + 1)

        self.bg_60 = BarGenerator(lambda x: None, 60, self.on_60_bar,
                                  Interval.MINUTE)
        self.am_60 = ArrayManager(size=self.slow_window_60 + 1)
Exemplo n.º 6
0
    def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
        """"""
        super().__init__(cta_engine, strategy_name, vt_symbol, setting)

        self.bg5 = BarGenerator(self.on_bar, 5, self.on_5min_bar)
        self.am5 = ArrayManager(size=20)

        self.daily_atr = self.load_daily_art()

        print("params:", self.atr_range, self.hedge_multiple_percent,
              self.is_log)
Exemplo n.º 7
0
    def __init__(self, ctaEngine, strategy_name, vt_symbol, setting):
        """Constructor"""
        #super(MyBollingerBotStrategy, self).__init__(ctaEngine, setting)
        super().__init__(ctaEngine, strategy_name, vt_symbol, setting)

        self.bm5 = BarGenerator(self.on_bar, 5, self.on_5Min_bar)
        self.am5 = ArrayManager(80)

        self.bm15 = BarGenerator(self.on_bar, 15, self.on_15Min_bar)
        self.am15 = ArrayManager(80)

        self.bm30 = BarGenerator(self.on_bar, 30, self.on_30Min_bar)
        self.am30 = ArrayManager(80)

        #self.bmDay = BarGenerator(self.on_bar, 9, self.onDayBar,Interval.HOUR)
        self.bmDay = BarGenerator(self.on_bar, 1, self.onDayBar,
                                  Interval.DAILY)
        self.amDay = ArrayManager(30)

        head = [
            "datetime", "BollStatus", "open", "close", "high", "low", "pos",
            "pDown", "pMiddle", "pUp", "dealOpen"
        ]
        current_path = os.getcwd()  # os.path.abspath(__file__)
        write_csv_file(current_path + "\\datasig5.csv", head, None, "w")
        write_csv_file(current_path + "\\datasig15.csv", head, None, "w")
        write_csv_file(current_path + "\\datasig30.csv", head, None, "w")
        write_csv_file(current_path + "\\datasigDay.csv", head, None, "w")

        head = [
            "datetime", "orderid", "tradeid", "direction", "offset", "price",
            "volume"
        ]
        write_csv_file("datasigTrade.csv", head, None, "w")
        head = [
            "datetime", "orderid", "tradeid", "direction", "offset", "price",
            "volume", "baoben"
        ]
        write_csv_file("datasigPos.csv", head, None, "w")

        print("self.cta_engine.capital %d", self.cta_engine.capital)
Exemplo n.º 8
0
    def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
        """"""
        super().__init__(cta_engine, strategy_name, vt_symbol, setting)

        self.bg_open = BarGenerator(self.on_bar, self.open_window,
                                    self.on_open_bar)
        self.am_open = ArrayManager()

        self.bg_minute = BarGenerator(self.on_bar, self.xminute_window,
                                      self.on_mintue_bar)
        self.am_minute = ArrayManager()

        self.bg_xhour = BarGenerator(self.on_bar, self.xhour_window,
                                     self.on_xhour_bar, Interval.HOUR)
        self.am_xhour = ArrayManager()

        # 计算每次使用资金量
        self.cumulative_usdt_volume = 0
        self.grid_usdt_volume = 0
        self.amplitude = 0
        self.tick_price = 0
Exemplo n.º 9
0
    def __init__(
        self,
        cta_engine,
        strategy_name: str,
        vt_symbol: str,
        setting: dict,
    ):
        """"""
        super(CincoJD2001Strategy, self).__init__(cta_engine, strategy_name, vt_symbol, setting)

        self.bg = BarGenerator(self.on_bar, 13, self.on_15min_bar)
        self.am = ArrayManager()
Exemplo n.º 10
0
    def __init__(
        self,
        cta_engine: Any,
        strategy_name: str,
        vt_symbol: str,
        setting: dict,
    ):
        """"""
        super().__init__(cta_engine, strategy_name, vt_symbol, setting)

        self.atr_stop_array = np.zeros(10)

        self.bg_xminute = NewBarGenerator(on_bar=self.on_bar,
                                          window=self.min_window,
                                          on_window_bar=self.on_xminute_bar)
        self.am_xminute = ArrayManager(self.boll_length + 100)

        self.bg_open = NewBarGenerator(on_bar=self.on_bar,
                                       window=self.open_window,
                                       on_window_bar=self.on_5min_bar)
        self.am_open = ArrayManager()
Exemplo n.º 11
0
    def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
        """"""
        super().__init__(cta_engine, strategy_name, vt_symbol, setting)
        self.bg = NewBarGenerator(self.on_bar, self.open_window,
                                  self.on_15min_bar)
        self.am = ArrayManager(self.rsi_window * 2)

        self.count: int = 0
        self.size: int = 4
        self.rsi_inited: bool = False
        self.rsi_up_array: np.ndarray = np.zeros(self.size)
        self.rsi_down_array: np.ndarray = np.zeros(self.size)
Exemplo n.º 12
0
	def __init__(
			self,
			cta_engine: Any,
			strategy_name: str,
			vt_symbol: str,
			setting: dict,
	):
		""""""
		super().__init__(cta_engine, strategy_name, vt_symbol, setting)

		self.atr_stop_array = np.zeros(10)

		self.bg_xmin = NewBarGenerator(
			self.on_bar,
			window=self.atrstop_window,
			on_window_bar=self.on_xmin_bar,
			interval=Interval.MINUTE
		)
		self.am_xmin = ArrayManager()

		self.bg_5min = BarGenerator(
			self.on_bar,
			window=self.open_window,
			on_window_bar=self.on_5min_bar
		)
		self.am_5min = ArrayManager(self.exit_dc_length * int(self.atr_length / self.open_window) + 10)

		self.inited_atr_stop = False

		# 状态控制初始化
		self.chase_long_trigger = False
		self.chase_sell_trigger = False
		self.chase_short_trigger = False
		self.chase_cover_trigger = False
		self.cancel_status = False
		self.long_trade_volume = 0
		self.short_trade_volume = 0
		self.sell_trade_volume = 0
		self.cover_trade_volume = 0
		self.chase_interval = 10  # 拆单间隔:秒
Exemplo n.º 13
0
    def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
        """"""
        super().__init__(cta_engine, strategy_name, vt_symbol, setting)

        self.rsi_long_l = self.long_threshold_l_window
        self.rsi_long_s = self.long_threshold_s_window
        self.rsi_short_l = 100 - self.long_threshold_l_window
        self.rsi_short_s = 100 - self.long_threshold_s_window

        self.bg5 = BarGenerator(self.on_bar, self.s_window, self.on_5min_bar)
        self.am5 = ArrayManager()

        self.bg15 = BarGenerator(self.on_bar, self.l_window, self.on_15min_bar)
        self.am15 = ArrayManager()
        self.long_order_record = []
        self.short_order_record = []
        # 指标计算容器
        self.rsi_value_recorder_l_window = []
        self.rsi_time_recorder_l_window = []
        self.rsi_value_recorder_s_window = []
        self.rsi_time_recorder_s_window = []
        self.atr_time_recorder = []
        self.atr_value_recorder = []
        self.obv_time_recorder = []
        self.obv_value_recorder = []
        self.minus_dm_time_recorder = []
        self.minus_dm_value_recorder = []
        self.mfi_time_recorder = []
        self.mfi_value_recorder = []
        self.ad_time_recorder = []
        self.ad_value_recorder = []
        self.adosc_time_recorder = []
        self.adosc_value_recorder = []
        self.plus_dm_time_recorder = []
        self.plus_dm_value_recorder = []
        self.dx_time_recorder = []
        self.dx_value_recorder = []
        self.adx_time_recorder = []
        self.adx_value_recorder = []
Exemplo n.º 14
0
 def __init__(
     self,
     cta_engine: Any,
     strategy_name: str,
     vt_symbol: str,
     setting: dict,
 ):
     super().__init__(cta_engine, strategy_name, vt_symbol, setting)
     self.bg = NewBarGenerator(self.on_bar,
                               window=7,
                               on_window_bar=self.on_7min_bar,
                               interval=Interval.MINUTE)
     self.am = ArrayManager()
Exemplo n.º 15
0
    def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
        """"""
        super().__init__(cta_engine, strategy_name, vt_symbol, setting)

        self.bg = BarGenerator(self.on_bar)
        self.am = ArrayManager(size=300)

        self.long_order_record_m = []
        self.short_order_record_m = []
        self.long_order_record_a = []
        self.short_order_record_a = []
        self.pct_array_m = []
        self.pct_array_a = []
Exemplo n.º 16
0
 def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
     """"""
     super().__init__(cta_engine, strategy_name, vt_symbol, setting)
     self.bg = BarGenerator(self.on_bar)
     self.am = ArrayManager()
     self.price = setting["grid_price"]
     self.step_price = setting["grid_step"]
     self.step_volume = setting["Lot"]
     self.pos = 0
     self.ask_price = 0.0  # 买入价
     self.bid_price = 0.0  # 卖出价
     self.vt_orderid = ""
     self.last_tick: TickData = None
Exemplo n.º 17
0
    def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
        """"""
        super().__init__(cta_engine, strategy_name, vt_symbol, setting)

        self.bg = BarGenerator(self.on_bar)
        self.am = ArrayManager(size=500)
        self.lst_turnover_rate_f = list()  # 保存zz500的历史流通盘换手率
        self.deque_quantile_20 = deque()
        self.pct_cnt_score_pre = 0  # 保存前一天的上涨股占比得分
        self.cnt_8ma_score_pre = 0  # 保存前一天的8ma得分
        self.ma_bull_score_pre = 0  # 保存前一天的均线多空得分
        self.rsi_score_pre = 0  # 保存前一天的rsi得分
        self.turnover_rate_f_score_pre = 0  # 保存前一天的流通盘换手率得分
    def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
        """"""
        super().__init__(cta_engine, strategy_name, vt_symbol, setting)
        self.write_log(f"setting={setting}")
        self.am = ArrayManager(size=max(self.fast_window_1, self.slow_window_1,
                                        self.signal_period_1) + 50)
        self.macd_signal = MACDSignal(self.fast_window_n, self.slow_window_n,
                                      self.signal_period_n, self.period_n)

        self.signal_pos = {
            "macd_1": 0,
            "macd_n": 0,
        }
Exemplo n.º 19
0
    def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
        """"""
        super().__init__(cta_engine, strategy_name, vt_symbol, setting)

        self.bg = XminBarGenerator(self.on_bar, self.interval,
                                   self.on_xmin_bar)
        self.am = ArrayManager()

        self.pricetick = self.get_pricetick()

        self.buy_vt_orderids = []
        self.sell_vt_orderids = []
        self.short_vt_orderids = []
        self.cover_vt_orderids = []
Exemplo n.º 20
0
    def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
        """"""
        super(PatternScoreStrategy, self).__init__(cta_engine, strategy_name,
                                                   vt_symbol, setting)
        self.bg = BarGenerator(self.on_bar)
        self.am = ArrayManager(400)
        self.am3 = ArrayManager(150)
        self.bg3 = BarGenerator(self.on_bar, 3, self.on_3min_bar)
        self.am5 = ArrayManager(120)
        self.bg5 = BarGenerator(self.on_bar, 5, self.on_5min_bar)
        self.order_data = None
        self.positions = Position(self)
        self.std_range = IntervalGen(np.std, 5)
        self.std_range3 = IntervalGen(np.std, 5)
        self.std_range5 = IntervalGen(np.std, 5)
        self.pattern_record = PatternRecord()
        # self.pattern_record.set_expiry([KlinePattern.CDLEVENINGSTAR], 3)
        self.pattern_record.set_expiry(list(KlinePattern), 1)

        self.open_strategy = [self.open_kline1]
        self.offset = 40
        self.min = 0
        self.max = 0
Exemplo n.º 21
0
    def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
        """"""
        super().__init__(cta_engine, strategy_name, vt_symbol, setting)

        self.bg5 = BarGenerator(self.on_bar, 5, self.on_5min_bar)
        self.am5 = ArrayManager(size=20)

        self.hedge_range = self.hedge_range_param / 1000
        self.hedge_multiple = self.hedge_multiple_param / 100

        self.hedge_size = round(self.hedge_range / 0.1 * 30)
        setting['hedge_size'] = self.hedge_size
        print("params:", self.hedge_range, self.hedge_multiple,
              self.hedge_size, self.strategy_name)
Exemplo n.º 22
0
    def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
        """"""
        super().__init__(cta_engine, strategy_name, vt_symbol, setting)

        self.pricetick = self.get_pricetick()

        self.bg1 = XminBarGenerator(self.on_bar, self.bar_window1,
                                    self.on_Xmin1_bar)
        self.am1 = ArrayManager()

        self.bg2 = XminBarGenerator(self.on_bar, self.bar_window2,
                                    self.on_Xmin2_bar)
        self.am2 = ArrayManager()

        self.buy_vt_orderids = []
        self.sell_vt_orderids = []
        self.short_vt_orderids = []
        self.cover_vt_orderids = []

        self.buy_price = 0
        self.sell_price = 0
        self.short_price = 0
        self.cover_price = 0
Exemplo n.º 23
0
    def __init__(self, rsi_fast_window: int, rsi_middle_window: int, rsi_slow_window: int, rsi_level: float):
        """Constructor"""
        super().__init__()

        self.rsi_fast_window = rsi_fast_window
        self.rsi_middle_window = rsi_middle_window
        self.rsi_slow_window = rsi_slow_window

        self.rsi_level = rsi_level
        self.rsi_long = 50 + self.rsi_level
        self.rsi_short = 50 - self.rsi_level

        self.bg5 = BarGenerator(on_bar=self.on_bar, window=self.minute_5_window, on_window_bar=self.on_5minute_bar)
        self.am5 = ArrayManager()
        self.bg15 = BarGenerator(on_bar=self.on_bar, window=self.minute_15_window, on_window_bar=self.on_15minute_bar)
        self.am15 = ArrayManager()
        self.bg30 = BarGenerator(on_bar=self.on_bar, window=self.minute_30_window, on_window_bar=self.on_15minute_bar)
        self.am30 = ArrayManager()
        self.bg60 = BarGenerator(on_bar=self.on_bar,
                                 window=self.hour_1_window,
                                 on_window_bar=self.on_hour_bar,
                                 interval=Interval.HOUR)
        self.am60 = ArrayManager()
    def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
        """"""
        super().__init__(cta_engine, strategy_name, vt_symbol, setting)

        self.bg = BarGenerator(self.on_bar)
        self.am = ArrayManager(size=80)

        self.local_stop = True
        self.limit_up = 1.04
        self.limit_down = 0.96

        self.watch_long = False
        self.watch_short = False
        self.boll_up = 0
        self.boll_down = 0
    def __init__(
        self,
        cta_engine: Any,
        strategy_name: str,
        vt_symbol: str,
        setting: dict,
    ):
        # 调用父类的初始化函数传进去,帮助策略模板实现初始化
        super().__init__(cta_engine, strategy_name, vt_symbol, setting)

        def on_empty(bar: BarData):
            pass

        self.bg = BarGenerator(on_empty, 5, on_empty)
        self.am = ArrayManager()
Exemplo n.º 26
0
    def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
        """"""
        super().__init__(cta_engine, strategy_name, vt_symbol, setting)

        self.bg = BarGenerator(self.on_bar, self.open_window, self.on_xmin_bar)
        self.am = ArrayManager(self.boll_window * 3 + 50)

        self.count: int = 0
        self.count_boll: int = 0
        self.indicator_inited: bool = False
        self.boll_inited: bool = False
        self.mtm_size: int = self.slow_length

        self.indicator_np_array: np.ndarray = np.zeros(self.boll_window * 3 +
                                                       5)
Exemplo n.º 27
0
    def __init__(
        self,
        cta_engine,
        strategy_name: str,
        vt_symbol: str,
        setting: dict,
    ):
        """"""
        print(self.bar_window)
        super(CincoP2005Strategy, self).__init__(cta_engine, strategy_name,
                                                 vt_symbol, setting)
        print(self.bar_window)

        self.bg = BarGenerator(self.on_bar, self.bar_window, self.on_15min_bar)
        self.am = ArrayManager()
Exemplo n.º 28
0
    def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
        """"""
        super().__init__(cta_engine, strategy_name, vt_symbol, setting)

        self.interval = {
            "minute": Interval.MINUTE,
            "hour": Interval.HOUR
        }.get(self.inside_bar_unit)
        self.bgw = BarGenerator(self.on_bar, self.inside_bar_length,
                                self.on_window_bar, self.interval)
        self.am = ArrayManager(
            100)  # 取决于历史数据准备多长 x * inside_bar_length,参考进阶开仓条件
        print(self.cta_engine.vt_symbol, self.cta_engine.exchange)
        a_stop_levels = pd.read_csv(self.config_file_path +
                                    "a_stop_levels.csv",
                                    index_col=0)
        b_stop_levels = pd.read_csv(self.config_file_path +
                                    "b_stop_levels.csv",
                                    index_col=0)
        stop_levels = {
            "a": a_stop_levels,
            "b": b_stop_levels,
            "b_top": {
                "delta_loss_ratio": self.delta_loss_ratio,
                "delta_profit_ratio": self.delta_profit_ratio
            }
        }

        self.pos_man = PosManager(symbol=self.cta_engine.symbol,
                                  exchange=self.cta_engine.exchange,
                                  tgt_amt=self.open_amount,
                                  stop_levels=stop_levels,
                                  names=[
                                      (str(i) + j)
                                      for i in range(self.inside_bar_pos_num)
                                      for j in ("a", "b")
                                  ])
        self.pos_man.set_enabled("0a", True)
        self.pos_man.set_enabled("0b", True)
        self.engine_params = {"size": self.cta_engine.size}
        self.stop_loss_values = dict([
            (i.split("^")[0], float(i.split("^")[1]))
            for i in self.stop_loss_values_str.split("_")
        ])
        self.continuous_signal_operations = pd.read_csv(
            self.config_file_path + "continuous_signal_operations.csv",
            index_col=0).on_trade_op.to_dict()
Exemplo n.º 29
0
    def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
        """"""
        super(Ma2Strategy, self).__init__(cta_engine, strategy_name, vt_symbol,
                                          setting)

        self.bg = BarGenerator(self.on_bar)
        self.am = ArrayManager(self.init)

        self.min_diff = 0.001
        self.entrust = 0
        self.count = 0

        self.short_pos = 0
        self.long_pos = 0

        self.cross_over = False
        self.cross_below = False
Exemplo n.º 30
0
    def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
        """"""
        super().__init__(cta_engine, strategy_name, vt_symbol, setting)

        self.bg = NewBarGenerator(self.on_bar, self.open_window, self.on_minute_bar, interval=Interval.MINUTE)
        self.am = ArrayManager(self.boll_window * 2)

        self.up_array: np.ndarray = np.zeros(5)
        self.down_array: np.ndarray = np.zeros(5)
        self.boll_inited = False
        self.boll_count = 0

        self.engine_type = self.get_engine_type()
        self.vt_orderids = []
        self.order_price = 0

        self.pos_inited = 0