def post(self): """ 发单 """ info = request.values.to_dict() local_symbol = info.get("local_symbol") direction = info.get("direction") offset = info.get("offset") type = info.get("type") price = info.get("price") volume = info.get("volume") exchange = info.get("exchange") if local_symbol and direction and offset and type and price and volume and exchange: req = helper.generate_order_req_by_str(symbol=local_symbol, exchange=exchange, direction=direction, offset=offset, volume=int(volume), price=float(price), type=type) try: req_id = bee_current_app.send_order(req) sleep(0.2) order = bee_current_app.recorder.get_order(req_id) if order.status.value == "拒单": return false_response(msg=bee_current_app.recorder. get_new_error()['data']['ErrorMsg']) return true_response(msg="成功下单") except Exception as e: return false_response(msg="下单失败") return false_response(msg='参数含空')
def post(self): """ 发单 """ info = request.values.to_dict() try: local_symbol = info["local_symbol"] direction = info["direction"] offset = info["offset"] type = info["type"] price = info["price"] volume = info["volume"] exchange = info["exchange"] except KeyError: return false_response(msg='参数含空') req = helper.generate_order_req_by_str(symbol=local_symbol, exchange=exchange, direction=direction, offset=offset, volume=int(volume), price=float(price), type=type) try: req_id = bee_current_app.send_order(req) sleep(0.2) order = bee_current_app.recorder.get_order(req_id) if order.status.value == "拒单": return false_response(msg=bee_current_app.recorder.get_new_error()['data']['ErrorMsg']) return true_response(msg="成功下单") except Exception: return false_response(msg="下单失败")
def post(self): """Run pylint on code and get output :return: JSON object of pylint errors { { "code":..., "error": ..., "message": ..., "line": ..., "error_info": ..., } ... } For more customization, please look at Pylint's library code: https://github.com/PyCQA/pylint/blob/master/pylint/lint.py """ # Session to handle multiple users at one time and to get textarea from AJAX call se = G.session[session['token']] se["code"] = request.form['text'] text = se["code"] output = evaluate_pylint(text) print(output) # MANAGER.astroid_cache.clear() return true_response(data=output)
def post(self): if slow(): return false_response( msg="Running code too much within a short time period. " "Please wait a few seconds Run .") se = G.session[session['token']] se["time_now"] = datetime.now() se["code"] = request.form['text'] text = se['code'] try: se["file_name"] f = open(se["file_name"], "w") for t in text: f.write(t) f.flush() except Exception as e: with tempfile.NamedTemporaryFile(delete=False) as temp: se["file_name"] = temp.name for t in text: temp.write(t.encode("utf-8")) temp.flush() output = None cmd = 'python ' + se["file_name"] p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True) output = p.stdout.read() return true_response(data=output.decode('utf-8'))
def post(self): symbol = request.values.get("symbol") try: bee_current_app.subscribe(symbol) return true_response(msg=f"订阅{symbol}成功") except Exception: return false_response(msg=f"订阅{symbol}失败")
def put(self): password = request.values.get('password') code = request.values.get('authorization', "") if password == bee_current_app.trader.password and len(code) >= 6: G.authorization = code return true_response(msg='修改成功') return false_response(msg='修改失败')
def post(self): """ bee_app: token if check userid,password else false_response not bee_app: token if td_login_status else false_response :return: """ info = dict(request.values) authorization = info.pop('authorization', None) if not authorization or not G.check_authorization(authorization): return false_response(msg='授权码错误') userid = info.get('userid') password = info.get('password') # bee_current_app存在 if bee_current_app and \ bee_current_app.trader and \ bee_current_app.td_login_status: if userid == bee_current_app.trader.userid and password == bee_current_app.trader.password: token = Auth.authenticate(info) return true_response(data=token, msg='登录成功') return false_response(msg='Refuse!') else: # bee_current_app 不不存在 bee_app = CtpBee(name=info.get("username"), import_name=__name__, refresh=True, logger_class=VLog) login_info = { "CONNECT_INFO": info, "INTERFACE": info.get('interface'), "TD_FUNC": True, "MD_FUNC": True, } bee_app.config.from_mapping(login_info) default = DefaultSettings("default_settings", bee_app, io) load_strategy(bee_app) # 加载策略 bee_app.start() sleep(1) if bee_current_app and \ bee_current_app.trader and \ bee_current_app.td_login_status: token = Auth.authenticate(info) return true_response(data=token, msg='重新登录成功') else: del_app(__name__) return false_response(msg="重新登录出现错误")
def put(self): """ 更新contract""" try: contracts = [contract.local_symbol for contract in bee_current_app.recorder.get_all_contracts()] contracts.sort(key=lambda v: v.upper()) io.emit("contract", contracts) except Exception: return false_response(msg="更新合约失败", ) return true_response(msg="更新合约列表完成")
def get(self): name = request.values.get('name') if name and name != 'default_settings': text = get_strategy(name) if text: return true_response(data=text) else: return false_response(msg='unknown name') return false_response(msg='name is none')
def post(self): auth_code = request.values.get('authorization', "") if auth_code and len(auth_code) >= 6 and G.check_authorization(auth_code): del_app(__name__) G.current_user.clear() print("bee_app: ", bee_current_app) return true_response(msg='服务器已安全退出') else: return false_response(msg='授权码错误')
def get(self): position_list = bee_current_app.recorder.get_all_positions() active_order_list = [active_order._to_dict() for active_order in bee_current_app.recorder.get_all_active_orders()] trade_list = [trade._to_dict() for trade in bee_current_app.recorder.get_all_trades()] order_list = [order._to_dict() for order in bee_current_app.recorder.get_all_orders()] result = dict(position_list=position_list, active_order_list=active_order_list, trade_list=trade_list, order_list=order_list, log_history=G.log_history) return true_response(data=result)
def get(self): G.session = dict(token=session['token'], data=dict(count=0, time_now=datetime.now())) result = [] for k, v in bee_current_app.extensions.items(): temp = {} temp['name'] = k temp['status'] = "停止" if v.frozen else "运行中" result.append(temp) return true_response(data=result)
def get(self): try: name = request.values['name'] except KeyError: return false_response(msg='参数为空') if name != 'default_settings': text = get_strategy(name) if text: return true_response(data=text) else: return false_response(msg='unknown name') return false_response(msg='name is none')
def put(self): operation = request.values.get('operation') name = request.values.get('name') if name in bee_current_app.extensions: if operation == "开启": res = bee_current_app.enable_extension(name) elif operation == "关闭": res = bee_current_app.suspend_extension(name) else: res = 'unknown' res = '成功' if res is True else '失败' return true_response(msg=f'{operation} {name} {res}') return false_response(msg=f"{name} not found!")
def delete(self): """ 撤单 """ info = request.values local_symbol = info.get("local_symbol") order_id = info.get("order_id") exchange = info.get("exchange") req = helper.generate_cancel_req_by_str(symbol=local_symbol, exchange=exchange, order_id=order_id) try: bee_current_app.cancel_order(req) return true_response(msg="成功撤单") except Exception: return false_response(msg="撤单失败")
def post(self): pattern = r"ext\s*=\s*\w*[(][\"\'](.*)[\"\'][)]" se = G.session[session['token']] text = request.values.get('text') name = re.findall(pattern, text) # 检测 name ,ext if not name or not text: return false_response(msg='name,text为空 or 未定义ext变量 ') name = name[-1] res = add_strategy(name, text) if res is True: return true_response(msg='添加成功') else: return false_response(msg='添加失败:' + res)
def post(self): pattern = r"ext\s*=\s*\w*[(][\"\'](.*)[\"\'][)]" try: text = request.values['text'] except KeyError: return false_response(msg='参数为空') name = re.findall(pattern, text) # 检测 name ,ext if not name or not text: return false_response(msg='name,text为空 or 未定义ext变量 ') name = name[-1] res = add_strategy(name, text) if res is True: return true_response(msg='添加成功') else: return false_response(msg='添加失败:' + res)
def post(self): symbol = request.values.get('local_symbol') if not symbol: return false_response(msg='symbol 为空') timeArray = datetime.now() - timedelta(days=G.g['BAR_TIME']) # 转换成时间戳 timestamp = round(timeArray.timestamp() * 1000) results = db[symbol].find({'timestamp': {"$gte": timestamp}}) data = [] for bar in results: temp = [ bar['timestamp'], bar['open_price'], bar['high_price'], bar['low_price'], bar['close_price'], bar['volume'] ] data.append(temp) return true_response(data=data)
def put(self): data = request.values.to_dict() print(data) if not data: return false_response(msg='含空项') for k in data.keys(): if k in self.keys: if data[k].isdigit() or re.compile( r'^[-+]?[0-9]+\.[0-9]+$').match(data[k]): bee_current_app.config[k] = float(data[k]) elif data[k] == 'true': bee_current_app.config[k] = True elif data[k] == 'false': bee_current_app.config[k] = False else: bee_current_app.config[k] = data[k] return true_response(msg='修改成功')
def put(self): try: operation = request.values['operation'] name = request.values['name'] except KeyError: return false_response(msg='参数为空') if name in bee_current_app.extensions: if operation == "开启": res = bee_current_app.enable_extension(name) G.frozen_strategy.remove(name + '.py') elif operation == "关闭": res = bee_current_app.suspend_extension(name) G.frozen_strategy.append(name + '.py') else: res = 'unknown' res = '成功' if res is True else '失败' return true_response(msg=f'{operation} {name} {res}') return false_response(msg=f"{name} not found!")
def post(self): req_info = request.values.to_dict() local_symbol = req_info.get("local_symbol") volume = int(req_info.get("volume")) direction = req_info.get("direction") exchange = req_info.get("exchange") symbol = req_info.get("symbol") tick = TickData(symbol=symbol, exchange=self.exchange_map[exchange]) price = bee_current_app.recorder.get_tick(local_symbol).last_price try: if direction == "long": bee_current_app.action.cover(price=price, volume=volume, origin=tick) if direction == "short": bee_current_app.action.sell(price=price, volume=volume, origin=tick) return true_response(msg="平仓请求发送成功") except Exception: return false_response(msg="平仓请求发送失败")
def post(self): try: text = request.values['text'] except KeyError: return false_response(msg='参数为空') with tempfile.NamedTemporaryFile(delete=False) as temp: file_name = temp.name for t in text: temp.write(t.encode("utf-8")) temp.flush() output = None cmd = 'python ' + file_name p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True) output = p.stdout.read() return true_response(data=output.decode('utf-8'))
def get(self): result = [] for k, v in bee_current_app.extensions.items(): temp = {'name': k, 'status': "停止" if v.frozen else "运行中"} result.append(temp) return true_response(data=result)
def delete(self): name = request.values.get('name') if delete_strategy(name): G.frozen_strategy.append(name + '.py') return true_response(msg=f'删除{name}成功') return false_response(msg=f'删除{name}失败')
def delete(self): name = request.values.get('name') if delete_strategy(name): return true_response(msg=f'删除{name}成功') return false_response(msg=f'删除{name}失败')
def get(self): data = {} for key in self.keys: data[key] = bee_current_app.config[key] return true_response(data=data)