ptrade查看日志报错:远程服务器返回错误: (502) 错误的网关

Ptrade李魔佛 发表了文章 • 0 个评论 • 44 次浏览 • 2025-06-30 18:59 • 来自相关话题

目前在国盛的ptrade上屡次出现的错误,因为ptrade服务器的资源已经不够了。
访问这个API的时候就已经报错。
 
502异常代码,是服务器端的报错。和本地无关。
 
有时候能够正常查询到日志,但大部分时候查询日志的时候就出现上面的502异常。
 





 
揪心,就不能买多几台服务器么.....
 
  查看全部
目前在国盛的ptrade上屡次出现的错误,因为ptrade服务器的资源已经不够了。
访问这个API的时候就已经报错。
 
502异常代码,是服务器端的报错。和本地无关。
 
有时候能够正常查询到日志,但大部分时候查询日志的时候就出现上面的502异常。
 

20250630185908.png

 
揪心,就不能买多几台服务器么.....
 
 

谁说ptrade代码不安全容易泄露的?

Ptrade李魔佛 发表了文章 • 0 个评论 • 45 次浏览 • 2025-07-03 11:52 • 来自相关话题

以前有人说ptrade代码是部署到券商机房,怕自己的代码泄露,或者怕被券商看到了,拿去白嫖了。
 
实际上现在的ptrade可以对策略进行加密





 
可以对你的策略进行加密下载,然后把策略删除了,然后在选择上传策略。
 
然后策略上传之后,你是无法看到具体代码的了,只能选择启动,删除策略。
 
连日志里面的打印数据也不会输出。
 
只会显示买入 卖出 的信息。
 
大大的提高了策略的安全性。

 
需要开通ptrade的读者朋友,可以关注公众号联系:
 
低佣 - 低门槛,提供 技术支持
  查看全部
以前有人说ptrade代码是部署到券商机房,怕自己的代码泄露,或者怕被券商看到了,拿去白嫖了。
 
实际上现在的ptrade可以对策略进行加密

20250703114717.png

 
可以对你的策略进行加密下载,然后把策略删除了,然后在选择上传策略。
 
然后策略上传之后,你是无法看到具体代码的了,只能选择启动,删除策略。
 
连日志里面的打印数据也不会输出。
 
只会显示买入 卖出 的信息。
 
大大的提高了策略的安全性。

 
需要开通ptrade的读者朋友,可以关注公众号联系:
 
低佣 - 低门槛,提供 技术支持
 

国盛Ptrade get_Ashare函数返回为空

Ptrade李魔佛 发表了文章 • 0 个评论 • 22 次浏览 • 2025-07-04 12:22 • 来自相关话题

难绷。国盛感觉数据质量比较堪忧。
 
在实盘中,运行下面代码:
# author: 公众号:可转债量化分析
import datetime


def initialize(context):
# 初始化策略
pass

def before_trading_start(context, data):
log.info('盘前函数运行')
previous_tradeing_func(context) # 执行盘前函数


def previous_tradeing_func(context):
all_stock_set = get_Ashares(date=None)
print(all_stock_set)

def handle_data(context, data):
pass
运行结果:
2025-07-04 12:18:10 - INFO - 盘前函数运行
2025-07-04 12:18:10 - INFO - []
数据的是一个空的list.......
 
一个十分基础的数据。
 
反馈了几年,依然如是。。
 
还是多开几家,多对比。各有各的优势。 查看全部
难绷。国盛感觉数据质量比较堪忧。
 
在实盘中,运行下面代码:
# author: 公众号:可转债量化分析
import datetime


def initialize(context):
# 初始化策略
pass

def before_trading_start(context, data):
log.info('盘前函数运行')
previous_tradeing_func(context) # 执行盘前函数


def previous_tradeing_func(context):
all_stock_set = get_Ashares(date=None)
print(all_stock_set)

def handle_data(context, data):
pass

运行结果:
2025-07-04 12:18:10 - INFO - 盘前函数运行
2025-07-04 12:18:10 - INFO - []

数据的是一个空的list.......
 
一个十分基础的数据。
 
反馈了几年,依然如是。。
 
还是多开几家,多对比。各有各的优势。

聚宽小市值策略代码转Ptrade实盘代码

Ptrade李魔佛 发表了文章 • 0 个评论 • 8 次浏览 • 2025-07-05 22:35 • 来自相关话题

最近好几个策略需要转换的。
 
Mark一下,写完之后分享一下。
 
聚宽的也不是完全的按照市值,也会根据换手率,涨停,跌停来判断是否卖出。
 
聚宽源码(部分)
#导入函数库
from jqdata import *
from jqfactor import *
import numpy as np
import pandas as pd
from datetime import time, datetime, timedelta

#初始化函数
def initialize(context):
# 策略参数配置
g.signal = ''
# 开启防未来函数
set_option('avoid_future_data', True)
# 设定基准
set_benchmark('000300.XSHG')
# 交易设置
set_option('use_real_price', True)
set_slippage(FixedSlippage(3/10000))
set_order_cost(OrderCost(open_tax=0, close_tax=0.001, open_commission=2.5/10000, close_commission=2.5/10000, close_today_commission=0, min_commission=5), type='stock')
# 日志设置
log.set_level('order', 'error')
log.set_level('system', 'error')
log.set_level('strategy', 'debug')

# 策略控制参数
g.no_trading_today_signal = False # 是否为可交易日
g.pass_april = True # 是否四月空仓
g.run_stoploss = True # 是否进行止损
g.HV_control = False # 是否进行放量控制
g.HV_duration = 120 # 放量判断周期
g.HV_ratio = 0.9 # 放量判断比例
g.no_trading_hold_signal = False # 是否持有非交易期股票

# 持仓管理参数
g.hold_list = [] # 当前持仓的全部股票
g.yesterday_HL_list = [] # 记录持仓中昨日涨停的股票
g.target_list = [] # 目标买入列表
g.not_buy_again = [] # 不再买入的股票列表

# 交易参数
g.stock_num = 3 # 持仓数量
g.up_price = 100 # 最高买入价格
g.reason_to_sell = '' # 卖出原因
g.stoploss_strategy = 3 # 止损策略:1为止损线止损,2为市场趋势止损,3为联合策略
g.stoploss_limit = 0.91 # 个股止损线
g.stoploss_market = 0.95 # 市场趋势止损参数
g.no_trading_buy = ['600036.XSHG', '518880.XSHG', '600900.XSHG'] # 空仓月份持有

# 设置交易运行时间
run_daily(prepare_stock_list, '9:05')
run_weekly(weekly_adjustment, 2, '10:30')
run_daily(sell_stocks, time='10:00') # 止损函数
run_daily(trade_afternoon, time='14:25') # 检查持仓中的涨停股是否需要卖出
run_daily(trade_afternoon, time='14:55') # 检查持仓中的涨停股是否需要卖出
run_daily(close_account, '14:50')
  
转换后的Ptrade实盘源码(部分)
 
def before_trading_start(context, data):
log.info('================= 盘前运行开始:{} '.format(str(context.blotter.current_dt)))
g.__portfolio = PositionManager()
g.order_set = set()
# g.__lock = threading.Lock()


def remove_st_stock(all_stock_list):
st_dict = get_stock_status(all_stock_list, query_type='ST', query_date=None)
st_list = []
for k, v in st_dict.items():
if v:
st_list.append(k)
return st_list


def remove_halt_stock(all_stock_list):
halt_dict = get_stock_status(all_stock_list, query_type='HALT', query_date=None)
halt_list = []
for k, v in halt_dict.items():
if v:
halt_list.append(k)
return halt_list


def all_codes_in_market():
all_stock_set = set(get_Ashares(date=None))
for ignore_code in IGNORE_MARKET:
market = MARKET_DICT.get(ignore_code)
if market == '科创板':
all_stock_set = all_stock_set - set(filter(lambda x: x.startswith('68'), all_stock_set))
if market == '创业板':
all_stock_set = all_stock_set - set(filter(lambda x: x.startswith('3'), all_stock_set))

return all_stock_set 
待续 查看全部
最近好几个策略需要转换的。
 
Mark一下,写完之后分享一下。
 
聚宽的也不是完全的按照市值,也会根据换手率,涨停,跌停来判断是否卖出。
 
聚宽源码(部分)
#导入函数库
from jqdata import *
from jqfactor import *
import numpy as np
import pandas as pd
from datetime import time, datetime, timedelta

#初始化函数
def initialize(context):
# 策略参数配置
g.signal = ''
# 开启防未来函数
set_option('avoid_future_data', True)
# 设定基准
set_benchmark('000300.XSHG')
# 交易设置
set_option('use_real_price', True)
set_slippage(FixedSlippage(3/10000))
set_order_cost(OrderCost(open_tax=0, close_tax=0.001, open_commission=2.5/10000, close_commission=2.5/10000, close_today_commission=0, min_commission=5), type='stock')
# 日志设置
log.set_level('order', 'error')
log.set_level('system', 'error')
log.set_level('strategy', 'debug')

# 策略控制参数
g.no_trading_today_signal = False # 是否为可交易日
g.pass_april = True # 是否四月空仓
g.run_stoploss = True # 是否进行止损
g.HV_control = False # 是否进行放量控制
g.HV_duration = 120 # 放量判断周期
g.HV_ratio = 0.9 # 放量判断比例
g.no_trading_hold_signal = False # 是否持有非交易期股票

# 持仓管理参数
g.hold_list = [] # 当前持仓的全部股票
g.yesterday_HL_list = [] # 记录持仓中昨日涨停的股票
g.target_list = [] # 目标买入列表
g.not_buy_again = [] # 不再买入的股票列表

# 交易参数
g.stock_num = 3 # 持仓数量
g.up_price = 100 # 最高买入价格
g.reason_to_sell = '' # 卖出原因
g.stoploss_strategy = 3 # 止损策略:1为止损线止损,2为市场趋势止损,3为联合策略
g.stoploss_limit = 0.91 # 个股止损线
g.stoploss_market = 0.95 # 市场趋势止损参数
g.no_trading_buy = ['600036.XSHG', '518880.XSHG', '600900.XSHG'] # 空仓月份持有

# 设置交易运行时间
run_daily(prepare_stock_list, '9:05')
run_weekly(weekly_adjustment, 2, '10:30')
run_daily(sell_stocks, time='10:00') # 止损函数
run_daily(trade_afternoon, time='14:25') # 检查持仓中的涨停股是否需要卖出
run_daily(trade_afternoon, time='14:55') # 检查持仓中的涨停股是否需要卖出
run_daily(close_account, '14:50')

  
转换后的Ptrade实盘源码(部分)
 
def before_trading_start(context, data):
log.info('================= 盘前运行开始:{} '.format(str(context.blotter.current_dt)))
g.__portfolio = PositionManager()
g.order_set = set()
# g.__lock = threading.Lock()


def remove_st_stock(all_stock_list):
st_dict = get_stock_status(all_stock_list, query_type='ST', query_date=None)
st_list = []
for k, v in st_dict.items():
if v:
st_list.append(k)
return st_list


def remove_halt_stock(all_stock_list):
halt_dict = get_stock_status(all_stock_list, query_type='HALT', query_date=None)
halt_list = []
for k, v in halt_dict.items():
if v:
halt_list.append(k)
return halt_list


def all_codes_in_market():
all_stock_set = set(get_Ashares(date=None))
for ignore_code in IGNORE_MARKET:
market = MARKET_DICT.get(ignore_code)
if market == '科创板':
all_stock_set = all_stock_set - set(filter(lambda x: x.startswith('68'), all_stock_set))
if market == '创业板':
all_stock_set = all_stock_set - set(filter(lambda x: x.startswith('3'), all_stock_set))

return all_stock_set
 
待续