m = 0
# def mm(m):
#     while True:
#         print('m=', m)
#         m = m + 1
#         if m == 10:
#             break
#     return
# print(mm(m))

import pandas as pd
import pymysql
from sqlalchemy import create_engine, text
import threading
from datetime import datetime as dt
import datetime
from jqdatasdk.technical_analysis import *
from xtquant import xtdata, xtconstant
from xtquant.xttype import StockAccount
from xtquant.xttrader import XtQuantTrader, XtQuantTraderCallback
import time
import math
import multiprocessing as mp
import os
import psutil
import traceback
from apscheduler.schedulers.blocking import BlockingScheduler
import sys

# p = xtdata.get_instrument_detail('000001.sz')
# print(p.get('UpStopPrice'))


# stock = '000001.SZ'
# engine_stock = create_engine('mysql+pymysql://root:r6kEwqWU9!v3@localhost:3307/qmt_stocks_whole?charset=utf8',
#                              pool_size=5000, pool_recycle=50, max_overflow=-1)
# df = pd.read_sql_query(text(
#                 'select close_front, high_front from `%s_1d`' % stock), engine_stock.connect())
#
# print(df['close_front'].iloc[-1])
# print(df['close_front'].iloc[-2])


def sell_trader(data):
    stock = '002645.SZ'
    # print(data[stock][0]['close'])
    print(xtdata.get_instrument_detail(stock).get('UpStopPrice'))

    current_price = data[stock]['lastPrice']
    print('aaa', current_price, data[stock]['time'])
    print(data[stock])

'''
    if stock in data and can_use_volume != 0:
        current_price = data[stock]['lastPrice']
        open_price = data[stock]['open']
        MA5 = ma(stock, 5, data)
        MA5_1 = ma_1(stock, 5)
        df = pd.read_sql_query(text(
            'select close_front, high_front from `%s_1d`' % stock), engine_stock.connect())
        print(f'{stock},持仓量为{can_use_volume}当前价:{current_price},MA5:{MA5},昨日MA5:{MA5_1},开始判断:')
        if current_price == xtdata.get_instrument_detail(stock).get('UpStopPrice') \
                or (df['close_front'].iloc[-1] == df['high_front'].iloc[-1]
                    and df['close_front'].iloc[-1] / df['close_front'].iloc[-2] > 1.08):
            continue
        elif current_price < MA5 or MA5 < MA5_1:
            print('卖出信号!!!!!!', stock, current_price)
            order_id = xt_trader.order_stock(acc, stock, xtconstant.STOCK_SELL, can_use_volume,
                                             xtconstant.LATEST_PRICE, 0, 'MA5策略', '低于MA5趋势向下')
            print('价格:', current_price, open_price, MA5, MA5_1, '低于MA5趋势向下')
            print(order_id, stock, can_use_volume)
        elif current_price > MA5 * 1.07:
            print('盈利乖离率超7%!!!!!!', stock, current_price)
            order_id = xt_trader.order_stock(acc, stock, xtconstant.STOCK_SELL, can_use_volume,
                                             xtconstant.LATEST_PRICE, 0, 'MA5策略', '盈利乖离率超7%')
            print('价格:', current_price, open_price, MA5, MA5_1, '盈利乖离率超7%')
            print(order_id, stock, can_use_volume)
    else:
        print(f'本轮没有持仓股票信息!')
'''




# xtdata.subscribe_quote('301125.SZ',callback=sell_trader)
stocks = xtdata.get_stock_list_in_sector('沪深A股')
xtdata.download_history_data2(stock_list=stocks, period='30m', start_time='', end_time='')
print(stocks)
seq = xtdata.subscribe_whole_quote(stocks, callback=sell_trader)
xtdata.run()