# 涨停后,各个场景买入后,第二天开盘卖出的成功率
import pandas as pd
import pymysql
from sqlalchemy import create_engine
import matplotlib . pyplot as plt
import os
# 计算盈亏, -6以上,-6,-3,0,3,6,6以上
def count_profit ( diff , loss_over_6 , loss_6_to_3 , loss_3_to_0 , profit_0_to_3 , profit_3_to_6 , profit_over_6 ) :
if diff < = - 6 :
loss_over_6 + = 1
elif diff > - 6 and diff < = - 3 :
loss_6_to_3 + = 1
elif diff > - 3 and diff < = 0 :
loss_3_to_0 + = 1
elif diff > 0 and diff < = 3 :
profit_0_to_3 + = 1
elif diff > 3 and diff < = 6 :
profit_3_to_6 + = 1
else :
profit_over_6 + = 1
return loss_over_6 , loss_6_to_3 , loss_3_to_0 , profit_0_to_3 , profit_3_to_6 , profit_over_6
# 创建数据库连接
engine = create_engine ( ' mysql+pymysql://root:1qazse42W3@192.168.0.222:3306/ry ' )
# 执行SQL查询来获取日期列表
# 假设你的数据表中有一个date字段表示日期
date_df = pd . read_sql_query ( ' select date from trade_dates where trade = " trading " and date between " 2023-01-01 " and " 2023-06-01 " order by date ' , engine )
# 将date字段转换为日期类型
date_df [ ' date ' ] = pd . to_datetime ( date_df [ ' date ' ] )
# 获取日期列表
date_list = date_df [ ' date ' ] . tolist ( )
counters = {
' total ' : 0 ,
# 买入日的开盘价分布
' open ' : { ' low_over_6 ' : 0 , ' low_6_to_3 ' : 0 , ' low_3_to_0 ' : 0 , ' high_0_to_3 ' : 0 , ' high_3_to_6 ' : 0 , ' high_over_6 ' : 0 } ,
# 买入日的收盘价分布
' close ' : { ' low_over_6 ' : 0 , ' low_6_to_3 ' : 0 , ' low_3_to_0 ' : 0 , ' high_0_to_3 ' : 0 , ' high_3_to_6 ' : 0 , ' high_over_6 ' : 0 } ,
# 清仓日的开盘价分布
' sale_open ' : { ' low_over_6 ' : 0 , ' low_6_to_3 ' : 0 , ' low_3_to_0 ' : 0 , ' high_0_to_3 ' : 0 , ' high_3_to_6 ' : 0 , ' high_over_6 ' : 0 } ,
# 清仓日的收盘价分布
' sale_close ' : { ' low_over_6 ' : 0 , ' low_6_to_3 ' : 0 , ' low_3_to_0 ' : 0 , ' high_0_to_3 ' : 0 , ' high_3_to_6 ' : 0 , ' high_over_6 ' : 0 } ,
# 清仓日开盘清仓盈亏分布
' profit_sale_open ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
# 清仓日收盘清仓盈亏分布
' profit_sale_close ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
# 不同场景的统计
' scenarios ' : {
' low_over_6_open_low_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_open_low_6_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_open_low_3_to_0_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_open_high_0_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_open_high_3_to_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_open_high_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_open_low_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_open_low_6_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_open_low_3_to_0_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_open_high_0_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_open_high_3_to_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_open_high_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_open_low_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_open_low_6_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_open_low_3_to_0_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_open_high_0_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_open_high_3_to_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_open_high_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_open_low_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_open_low_6_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_open_low_3_to_0_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_open_high_0_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_open_high_3_to_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_open_high_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_open_low_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_open_low_6_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_open_low_3_to_0_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_open_high_0_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_open_high_3_to_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_open_high_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_open_low_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_open_low_6_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_open_low_3_to_0_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_open_high_0_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_open_high_3_to_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_open_high_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_open_low_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_open_low_6_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_open_low_3_to_0_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_open_high_0_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_open_high_3_to_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_open_high_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_open_low_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_open_low_6_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_open_low_3_to_0_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_open_high_0_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_open_high_3_to_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_open_high_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_open_low_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_open_low_6_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_open_low_3_to_0_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_open_high_0_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_open_high_3_to_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_open_high_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_open_low_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_open_low_6_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_open_low_3_to_0_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_open_high_0_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_open_high_3_to_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_open_high_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_open_low_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_open_low_6_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_open_low_3_to_0_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_open_high_0_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_open_high_3_to_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_open_high_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_open_low_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_open_low_6_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_open_low_3_to_0_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_open_high_0_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_open_high_3_to_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_open_high_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_close_low_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_close_low_6_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_close_low_3_to_0_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_close_high_0_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_close_high_3_to_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_close_high_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_close_low_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_close_low_6_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_close_low_3_to_0_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_close_high_0_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_close_high_3_to_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_close_high_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_close_low_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_close_low_6_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_close_low_3_to_0_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_close_high_0_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_close_high_3_to_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_close_high_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_close_low_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_close_low_6_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_close_low_3_to_0_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_close_high_0_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_close_high_3_to_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_close_high_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_close_low_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_close_low_6_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_close_low_3_to_0_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_close_high_0_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_close_high_3_to_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_close_high_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_close_low_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_close_low_6_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_close_low_3_to_0_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_close_high_0_to_3_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_close_high_3_to_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_close_high_over_6_open_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_close_low_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_close_low_6_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_close_low_3_to_0_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_close_high_0_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_close_high_3_to_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_over_6_close_high_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_close_low_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_close_low_6_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_close_low_3_to_0_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_close_high_0_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_close_high_3_to_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_6_to_3_close_high_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_close_low_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_close_low_6_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_close_low_3_to_0_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_close_high_0_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_close_high_3_to_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' low_3_to_0_close_high_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_close_low_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_close_low_6_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_close_low_3_to_0_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_close_high_0_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_close_high_3_to_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_0_to_3_close_high_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_close_low_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_close_low_6_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_close_low_3_to_0_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_close_high_0_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_close_high_3_to_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_3_to_6_close_high_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_close_low_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_close_low_6_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_close_low_3_to_0_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_close_high_0_to_3_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_close_high_3_to_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 } ,
' high_over_6_close_high_over_6_close_sale ' : { ' loss_over_6 ' : 0 , ' loss_6_to_3 ' : 0 , ' loss_3_to_0 ' : 0 , ' profit_0_to_3 ' : 0 , ' profit_3_to_6 ' : 0 , ' profit_over_6 ' : 0 }
}
}
total_count = 0
# 低于-3%的开盘价计数
low_open_count = 0
# 正常开盘,介于-3%和3%之间的计数
normal_open_count = 0
# 高于3%的开盘价计数
high_open_count = 0
# 低于-3%的收盘价计数
low_close_count = 0
# 正常收盘,介于-3%和3%之间的计数
normal_close_count = 0
# 高于3%的收盘价计数
high_close_count = 0
# 开盘清仓, 低于3%的清仓计数
low_sale_open_count = 0
# 开盘清仓, 高于3%的清仓计数
high_sale_open_count = 0
# 开盘清仓,正常清仓计数
normal_sale_open_count = 0
# 收盘清仓, 低于3%的清仓计数
low_sale_close_count = 0
# 收盘清仓, 高于3%的清仓计数
high_sale_close_count = 0
# 收盘清仓,正常清仓计数
normal_sale_close_count = 0
##########基于开盘、收盘买入的整体盈亏分布############
# 盈利高于5%的清仓开盘价计数
high_profit_sale_open_count = 0
# 盈利低于5%的清仓开盘价计数
low_profit_sale_open_count = 0
# 亏损低于5%的清仓开盘价计数
low_loss_sale_open_count = 0
# 亏损高于5%的清仓开盘价计数
high_loss_sale_open_count = 0
# 盈利高于5%的清仓收盘价计数
high_profit_sale_close_count = 0
# 盈利低于5%的清仓收盘价计数
low_profit_sale_close_count = 0
# 亏损低于5%的清仓收盘价计数
low_loss_sale_close_count = 0
# 亏损高于5%的清仓收盘价计数
high_loss_sale_close_count = 0
#####################################
# 组合场景 低开盘-低清仓 低开盘-高清仓 低开盘-正常清仓 正常开盘-低清仓 正常开盘-高清仓 正常开盘-正常清仓 高开盘-低清仓 高开盘-高清仓 高开盘-正常清仓
low_open_low_sale_count = 0
low_open_high_sale_count = 0
low_open_normal_sale_count = 0
normal_open_low_sale_count = 0
normal_open_high_sale_count = 0
normal_open_normal_sale_count = 0
high_open_low_sale_count = 0
high_open_high_sale_count = 0
high_open_normal_sale_count = 0
# 各组合场景的收益情况 如 低开盘-高清仓: 盈利高于5%的清仓收盘价计数 盈利低于5%的清仓收盘价计数 亏损低于5%的清仓收盘价计数 亏损高于5%的清仓收盘价计数
low_open_low_sale_high_profit_count = 0
low_open_low_sale_low_profit_count = 0
low_open_low_sale_low_loss_count = 0
low_open_low_sale_high_loss_count = 0
low_open_high_sale_high_profit_count = 0
low_open_high_sale_low_profit_count = 0
low_open_high_sale_low_loss_count = 0
low_open_high_sale_high_loss_count = 0
low_open_normal_sale_high_profit_count = 0
low_open_normal_sale_low_profit_count = 0
low_open_normal_sale_low_loss_count = 0
low_open_normal_sale_high_loss_count = 0
normal_open_low_sale_high_profit_count = 0
normal_open_low_sale_low_profit_count = 0
normal_open_low_sale_low_loss_count = 0
normal_open_low_sale_high_loss_count = 0
normal_open_high_sale_high_profit_count = 0
normal_open_high_sale_low_profit_count = 0
normal_open_high_sale_low_loss_count = 0
normal_open_high_sale_high_loss_count = 0
normal_open_normal_sale_high_profit_count = 0
normal_open_normal_sale_low_profit_count = 0
normal_open_normal_sale_low_loss_count = 0
normal_open_normal_sale_high_loss_count = 0
high_open_low_sale_high_profit_count = 0
high_open_low_sale_low_profit_count = 0
high_open_low_sale_low_loss_count = 0
high_open_low_sale_high_loss_count = 0
high_open_high_sale_high_profit_count = 0
high_open_high_sale_low_profit_count = 0
high_open_high_sale_low_loss_count = 0
high_open_high_sale_high_loss_count = 0
high_open_normal_sale_high_profit_count = 0
high_open_normal_sale_low_profit_count = 0
high_open_normal_sale_low_loss_count = 0
high_open_normal_sale_high_loss_count = 0
# 组合场景 低收盘-低清仓 低收盘-高清仓 低收盘-正常清仓 正常收盘-低清仓 正常收盘-高清仓 正常收盘-正常清仓 高收盘-低清仓 高收盘-高清仓 高收盘-正常清仓
low_close_low_sale_count = 0
low_close_high_sale_count = 0
low_close_normal_sale_count = 0
normal_close_low_sale_count = 0
normal_close_high_sale_count = 0
normal_close_normal_sale_count = 0
high_close_low_sale_count = 0
high_close_high_sale_count = 0
high_close_normal_sale_count = 0
# 各组合场景的收益情况 如 低收盘-高清仓: 盈利高于5%的清仓收盘价计数 盈利低于5%的清仓收盘价计数 亏损低于5%的清仓收盘价计数 亏损高于5%的清仓收盘价计数
low_close_low_sale_high_profit_count = 0
low_close_low_sale_low_profit_count = 0
low_close_low_sale_low_loss_count = 0
low_close_low_sale_high_loss_count = 0
low_close_high_sale_high_profit_count = 0
low_close_high_sale_low_profit_count = 0
low_close_high_sale_low_loss_count = 0
low_close_high_sale_high_loss_count = 0
low_close_normal_sale_high_profit_count = 0
low_close_normal_sale_low_profit_count = 0
low_close_normal_sale_low_loss_count = 0
low_close_normal_sale_high_loss_count = 0
normal_close_low_sale_high_profit_count = 0
normal_close_low_sale_low_profit_count = 0
normal_close_low_sale_low_loss_count = 0
normal_close_low_sale_high_loss_count = 0
normal_close_high_sale_high_profit_count = 0
normal_close_high_sale_low_profit_count = 0
normal_close_high_sale_low_loss_count = 0
normal_close_high_sale_high_loss_count = 0
normal_close_normal_sale_high_profit_count = 0
normal_close_normal_sale_low_profit_count = 0
normal_close_normal_sale_low_loss_count = 0
normal_close_normal_sale_high_loss_count = 0
high_close_low_sale_high_profit_count = 0
high_close_low_sale_low_profit_count = 0
high_close_low_sale_low_loss_count = 0
high_close_low_sale_high_loss_count = 0
high_close_high_sale_high_profit_count = 0
high_close_high_sale_low_profit_count = 0
high_close_high_sale_low_loss_count = 0
high_close_high_sale_high_loss_count = 0
high_close_normal_sale_high_profit_count = 0
high_close_normal_sale_low_profit_count = 0
high_close_normal_sale_low_loss_count = 0
high_close_normal_sale_high_loss_count = 0
# 遍历日期列表
for i , date in enumerate ( date_list ) :
if i + 2 < len ( date_list ) :
# 将日期转换为字符串格式, 以便在SQL查询中使用
date_str = date . strftime ( ' % Y- % m- %d ' )
if os . path . exists ( f ' D:/calculate_data/ { date_str } _stock.csv ' ) :
df = pd . read_csv ( f ' D:/calculate_data/ { date_str } _stock.csv ' )
limit_list = df [ ' code ' ] . tolist ( )
for code in limit_list :
# 总统计数
total_count + = 1
print ( f ' 正在处理 { date_str } - { code } 的数据-从文件获取 ' )
saleopen = df . loc [ df [ ' code ' ] == code , ' saleprice_open ' ]
saleclose = df . loc [ df [ ' code ' ] == code , ' saleprice_close ' ]
nextclose = df . loc [ df [ ' code ' ] == code , ' next_close ' ]
# 计算清仓日开盘收盘价
saleprice_open_differrange = 100 * ( saleopen - df . loc [ df [ ' code ' ] == code , ' next_open ' ] ) / df . loc [ df [ ' code ' ] == code , ' next_open ' ]
saleprice_close_differrange = 100 * ( saleclose - nextclose ) / nextclose
# 第二日开盘价分布
next_open_diff = df . loc [ df [ ' code ' ] == code , ' next_open_diff ' ] . values [ 0 ]
if next_open_diff < - 3 :
low_open_count + = 1
elif next_open_diff > 3 :
high_open_count + = 1
else :
normal_open_count + = 1
# 第二日收盘价分布
next_close_differrange = df . loc [ df [ ' code ' ] == code , ' next_close_differrange ' ] . values [ 0 ]
if next_close_differrange < - 3 :
low_close_count + = 1
elif next_close_differrange > 3 :
high_close_count + = 1
else :
normal_close_count + = 1
# 清仓盈亏分布-开盘清仓
saleprice_open_differrange = df . loc [ df [ ' code ' ] == code , ' saleprice_open_differrange ' ] . values [ 0 ]
if saleprice_open_differrange < - 5 :
high_loss_sale_open_count + = 1
elif saleprice_open_differrange > - 5 and saleprice_open_differrange < 0 :
low_loss_sale_open_count + = 1
elif saleprice_open_differrange > 0 and saleprice_open_differrange < 5 :
low_profit_sale_open_count + = 1
else :
high_profit_sale_open_count + = 1
# 清仓盈亏分布-收盘清仓
saleprice_close_differrange = df . loc [ df [ ' code ' ] == code , ' saleprice_close_differrange ' ] . values [ 0 ]
if saleprice_close_differrange < - 5 :
high_loss_sale_close_count + = 1
elif saleprice_close_differrange > - 5 and saleprice_close_differrange < 0 :
low_loss_sale_close_count + = 1
elif saleprice_close_differrange > 0 and saleprice_close_differrange < 5 :
low_profit_sale_close_count + = 1
else :
high_profit_sale_close_count + = 1
# 组合场景 低开盘-低清仓 低开盘-高清仓 低开盘-正常清仓 正常开盘-低清仓 正常开盘-高清仓 正常开盘-正常清仓 高开盘-低清仓 高开盘-高清仓 高开盘-正常清仓
# 组合之类再进行计算盈亏分布
if next_open_diff < - 3 :
if saleprice_open_differrange < - 3 :
low_open_low_sale_count + = 1
elif saleprice_open_differrange > 3 :
low_open_high_sale_count + = 1
else :
low_open_normal_sale_count + = 1
if saleprice_open_differrange < - 3 :
if saleprice_open_differrange < - 5 :
low_open_low_sale_high_loss_count + = 1
elif saleprice_open_differrange > - 5 and saleprice_open_differrange < 0 :
low_open_low_sale_low_loss_count + = 1
elif saleprice_open_differrange > 0 and saleprice_open_differrange < 5 :
low_open_low_sale_low_profit_count + = 1
else :
low_open_low_sale_high_profit_count + = 1
elif saleprice_open_differrange > 3 :
if saleprice_open_differrange < - 5 :
low_open_high_sale_high_loss_count + = 1
elif saleprice_open_differrange > - 5 and saleprice_open_differrange < 0 :
low_open_high_sale_low_loss_count + = 1
elif saleprice_open_differrange > 0 and saleprice_open_differrange < 5 :
low_open_high_sale_low_profit_count + = 1
else :
low_open_high_sale_high_profit_count + = 1
else :
if saleprice_open_differrange < - 5 :
low_open_normal_sale_high_loss_count + = 1
elif saleprice_open_differrange > - 5 and saleprice_open_differrange < 0 :
low_open_normal_sale_low_loss_count + = 1
elif saleprice_open_differrange > 0 and saleprice_open_differrange < 5 :
low_open_normal_sale_low_profit_count + = 1
else :
low_open_normal_sale_high_profit_count + = 1
elif next_open_diff > 3 :
if saleprice_open_differrange < - 3 :
high_open_low_sale_count + = 1
elif saleprice_open_differrange > 3 :
high_open_high_sale_count + = 1
else :
high_open_normal_sale_count + = 1
if saleprice_open_differrange < - 3 :
if saleprice_open_differrange < - 5 :
high_open_low_sale_high_loss_count + = 1
elif saleprice_open_differrange > - 5 and saleprice_open_differrange < 0 :
high_open_low_sale_low_loss_count + = 1
elif saleprice_open_differrange > 0 and saleprice_open_differrange < 5 :
high_open_low_sale_low_profit_count + = 1
else :
high_open_low_sale_high_profit_count + = 1
elif saleprice_open_differrange > 3 :
if saleprice_open_differrange < - 5 :
high_open_high_sale_high_loss_count + = 1
elif saleprice_open_differrange > - 5 and saleprice_open_differrange < 0 :
high_open_high_sale_low_loss_count + = 1
elif saleprice_open_differrange > 0 and saleprice_open_differrange < 5 :
high_open_high_sale_low_profit_count + = 1
else :
high_open_high_sale_high_profit_count + = 1
else :
if saleprice_open_differrange < - 5 :
high_open_normal_sale_high_loss_count + = 1
elif saleprice_open_differrange > - 5 and saleprice_open_differrange < 0 :
high_open_normal_sale_low_loss_count + = 1
elif saleprice_open_differrange > 0 and saleprice_open_differrange < 5 :
high_open_normal_sale_low_profit_count + = 1
else :
high_open_normal_sale_high_profit_count + = 1
else :
if saleprice_open_differrange < - 3 :
normal_open_low_sale_count + = 1
elif saleprice_open_differrange > 3 :
normal_open_high_sale_count + = 1
else :
normal_open_normal_sale_count + = 1
if saleprice_open_differrange < - 3 :
if saleprice_open_differrange < - 5 :
normal_open_low_sale_high_loss_count + = 1
elif saleprice_open_differrange > - 5 and saleprice_open_differrange < 0 :
normal_open_low_sale_low_loss_count + = 1
elif saleprice_open_differrange > 0 and saleprice_open_differrange < 5 :
normal_open_low_sale_low_profit_count + = 1
else :
normal_open_low_sale_high_profit_count + = 1
elif saleprice_open_differrange > 3 :
if saleprice_open_differrange < - 5 :
normal_open_high_sale_high_loss_count + = 1
elif saleprice_open_differrange > - 5 and saleprice_open_differrange < 0 :
normal_open_high_sale_low_loss_count + = 1
elif saleprice_open_differrange > 0 and saleprice_open_differrange < 5 :
normal_open_high_sale_low_profit_count + = 1
else :
normal_open_high_sale_high_profit_count + = 1
else :
if saleprice_open_differrange < - 5 :
normal_open_normal_sale_high_loss_count + = 1
elif saleprice_open_differrange > - 5 and saleprice_open_differrange < 0 :
normal_open_normal_sale_low_loss_count + = 1
elif saleprice_open_differrange > 0 and saleprice_open_differrange < 5 :
normal_open_normal_sale_low_profit_count + = 1
else :
normal_open_normal_sale_high_profit_count + = 1
# 组合场景 低收盘-低清仓 低收盘-高清仓 低收盘-正常清仓 正常收盘-低清仓 正常收盘-高清仓 正常收盘-正常清仓 高收盘-低清仓 高收盘-高清仓 高收盘-正常清仓
if next_close_differrange < - 3 :
if saleprice_close_differrange < - 3 :
low_close_low_sale_count + = 1
elif saleprice_close_differrange > 3 :
low_close_high_sale_count + = 1
else :
low_close_normal_sale_count + = 1
if saleprice_close_differrange < - 3 :
if saleprice_close_differrange < - 5 :
low_close_low_sale_high_loss_count + = 1
elif saleprice_close_differrange > - 5 and saleprice_close_differrange < 0 :
low_close_low_sale_low_loss_count + = 1
elif saleprice_close_differrange > 0 and saleprice_close_differrange < 5 :
low_close_low_sale_low_profit_count + = 1
else :
low_close_low_sale_high_profit_count + = 1
elif saleprice_close_differrange > 3 :
if saleprice_close_differrange < - 5 :
low_close_high_sale_high_loss_count + = 1
elif saleprice_close_differrange > - 5 and saleprice_close_differrange < 0 :
low_close_high_sale_low_loss_count + = 1
elif saleprice_close_differrange > 0 and saleprice_close_differrange < 5 :
low_close_high_sale_low_profit_count + = 1
else :
low_close_high_sale_high_profit_count + = 1
else :
if saleprice_close_differrange < - 5 :
low_close_normal_sale_high_loss_count + = 1
elif saleprice_close_differrange > - 5 and saleprice_close_differrange < 0 :
low_close_normal_sale_low_loss_count + = 1
elif saleprice_close_differrange > 0 and saleprice_close_differrange < 5 :
low_close_normal_sale_low_profit_count + = 1
else :
low_close_normal_sale_high_profit_count + = 1
elif next_close_differrange > 3 :
if saleprice_close_differrange < - 3 :
high_close_low_sale_count + = 1
elif saleprice_close_differrange > 3 :
high_close_high_sale_count + = 1
else :
high_close_normal_sale_count + = 1
if saleprice_close_differrange < - 3 :
if saleprice_close_differrange < - 5 :
high_close_low_sale_high_loss_count + = 1
elif saleprice_close_differrange > - 5 and saleprice_close_differrange < 0 :
high_close_low_sale_low_loss_count + = 1
elif saleprice_close_differrange > 0 and saleprice_close_differrange < 5 :
high_close_low_sale_low_profit_count + = 1
else :
high_close_low_sale_high_profit_count + = 1
elif saleprice_close_differrange > 3 :
if saleprice_close_differrange < - 5 :
high_close_high_sale_high_loss_count + = 1
elif saleprice_close_differrange > - 5 and saleprice_close_differrange < 0 :
high_close_high_sale_low_loss_count + = 1
elif saleprice_close_differrange > 0 and saleprice_close_differrange < 5 :
high_close_high_sale_low_profit_count + = 1
else :
high_close_high_sale_high_profit_count + = 1
else :
if saleprice_close_differrange < - 5 :
high_close_normal_sale_high_loss_count + = 1
elif saleprice_close_differrange > - 5 and saleprice_close_differrange < 0 :
high_close_normal_sale_low_loss_count + = 1
elif saleprice_close_differrange > 0 and saleprice_close_differrange < 5 :
high_close_normal_sale_low_profit_count + = 1
else :
high_close_normal_sale_high_profit_count + = 1
else :
if saleprice_close_differrange < - 3 :
normal_close_low_sale_count + = 1
elif saleprice_close_differrange > 3 :
normal_close_high_sale_count + = 1
else :
normal_close_normal_sale_count + = 1
if saleprice_close_differrange < - 3 :
if saleprice_close_differrange < - 5 :
normal_close_low_sale_high_loss_count + = 1
elif saleprice_close_differrange > - 5 and saleprice_close_differrange < 0 :
normal_close_low_sale_low_loss_count + = 1
elif saleprice_close_differrange > 0 and saleprice_close_differrange < 5 :
normal_close_low_sale_low_profit_count + = 1
else :
normal_close_low_sale_high_profit_count + = 1
elif saleprice_close_differrange > 3 :
if saleprice_close_differrange < - 5 :
normal_close_high_sale_high_loss_count + = 1
elif saleprice_close_differrange > - 5 and saleprice_close_differrange < 0 :
normal_close_high_sale_low_loss_count + = 1
elif saleprice_close_differrange > 0 and saleprice_close_differrange < 5 :
normal_close_high_sale_low_profit_count + = 1
else :
normal_close_high_sale_high_profit_count + = 1
else :
if saleprice_close_differrange < - 5 :
normal_close_normal_sale_high_loss_count + = 1
elif saleprice_close_differrange > - 5 and saleprice_close_differrange < 0 :
normal_close_normal_sale_low_loss_count + = 1
elif saleprice_close_differrange > 0 and saleprice_close_differrange < 5 :
normal_close_normal_sale_low_profit_count + = 1
else :
normal_close_normal_sale_high_profit_count + = 1
else :
nextdate_str = date_list [ i + 1 ] . strftime ( ' % Y- % m- %d ' ) #买入日
saledate_str = date_list [ i + 2 ] . strftime ( ' % Y- % m- %d ' ) #卖出日
print ( f ' 正在处理 { date_str } 的数据 ' )
# 执行SQL查询( 这只是一个示例, 你需要根据你的实际需求和数据库结构进行修改)
query = f ' select code,open,close,high,low, volumn,amount,differrange10,differrange20,differrange60 from stocks where islimit = " 是 " and trade_day = " { date_str } " '
df = pd . read_sql_query ( query , engine )
limit_list = df [ ' code ' ] . tolist ( )
for code in limit_list :
# 总统计数
total_count + = 1
print ( f ' 正在处理 { date_str } - { code } 的数据 ' )
query = f ' select code,open,close,differrange from stocks where trade_day = " { nextdate_str } " and code = " { code } " '
dfnext = pd . read_sql_query ( query , engine )
if dfnext . size < = 0 :
total_count - = 1
continue
# 处理数据...
open = df . loc [ df [ ' code ' ] == code , ' open ' ] . values [ 0 ]
nextopen = dfnext . loc [ dfnext [ ' code ' ] == code , ' open ' ] . values [ 0 ]
nextclose = dfnext . loc [ dfnext [ ' code ' ] == code , ' close ' ] . values [ 0 ]
nextdifferrange = dfnext . loc [ dfnext [ ' code ' ] == code , ' differrange ' ] . values [ 0 ]
df . loc [ df [ ' code ' ] == code , ' next_open ' ] = nextopen
df . loc [ df [ ' code ' ] == code , ' next_open_diff ' ] = 100 * ( nextopen - open ) / open
df . loc [ df [ ' code ' ] == code , ' next_close ' ] = nextclose
df . loc [ df [ ' code ' ] == code , ' next_close_differrange ' ] = nextdifferrange
query = f ' select code,open,close,differrange from stocks where trade_day = " { saledate_str } " and code = " { code } " '
dfsale = pd . read_sql_query ( query , engine )
if dfsale . size < = 0 :
total_count - = 1
continue
saleopen = dfsale . loc [ dfsale [ ' code ' ] == code , ' open ' ] . values [ 0 ]
saleclose = dfsale . loc [ dfsale [ ' code ' ] == code , ' close ' ] . values [ 0 ]
df . loc [ df [ ' code ' ] == code , ' saleprice_open ' ] = saleopen
df . loc [ df [ ' code ' ] == code , ' saleprice_close ' ] = saleclose
# 清仓盈亏
df . loc [ df [ ' code ' ] == code , ' saleprice_open_differrange ' ] = 100 * ( saleopen - nextopen ) / nextopen
df . loc [ df [ ' code ' ] == code , ' saleprice_close_differrange ' ] = 100 * ( saleclose - nextclose ) / nextclose
# 第二日开盘价分布
next_open_diff = df . loc [ df [ ' code ' ] == code , ' next_open_diff ' ] . values [ 0 ]
if next_open_diff < - 3 :
low_open_count + = 1
elif next_open_diff > 3 :
high_open_count + = 1
else :
normal_open_count + = 1
# 第二日收盘价分布
next_close_differrange = df . loc [ df [ ' code ' ] == code , ' next_close_differrange ' ] . values [ 0 ]
if next_close_differrange < - 3 :
low_close_count + = 1
elif next_close_differrange > 3 :
high_close_count + = 1
else :
normal_close_count + = 1
# 清仓盈亏分布-开盘清仓
saleprice_open_differrange = df . loc [ df [ ' code ' ] == code , ' saleprice_open_differrange ' ] . values [ 0 ]
if saleprice_open_differrange < - 3 : # 亏损大于-3
low_sale_open_count + = 1
elif saleprice_open_differrange > 0 : # 盈利大于0
high_sale_open_count + = 1
else :
normal_sale_open_count + = 1 # 亏损小于-3
# 清仓盈亏分布-收盘清仓
saleprice_close_differrange = df . loc [ df [ ' code ' ] == code , ' saleprice_close_differrange ' ] . values [ 0 ]
if saleprice_close_differrange < - 3 :
low_sale_close_count + = 1
elif saleprice_close_differrange > 3 :
high_sale_close_count + = 1
else :
normal_sale_close_count + = 1
# 组合场景 低开盘-低清仓 低开盘-高清仓 低开盘-正常清仓 正常开盘-低清仓 正常开盘-高清仓 正常开盘-正常清仓 高开盘-低清仓 高开盘-高清仓 高开盘-正常清仓
if next_open_diff < - 3 :
if saleprice_open_differrange < - 3 :
low_open_low_sale_count + = 1
elif saleprice_open_differrange > 3 :
low_open_high_sale_count + = 1
else :
low_open_normal_sale_count + = 1
elif next_open_diff > 3 :
if saleprice_open_differrange < - 3 :
high_open_low_sale_count + = 1
elif saleprice_open_differrange > 3 :
high_open_high_sale_count + = 1
else :
high_open_normal_sale_count + = 1
else :
if saleprice_open_differrange < - 3 :
normal_open_low_sale_count + = 1
elif saleprice_open_differrange > 3 :
normal_open_high_sale_count + = 1
else :
normal_open_normal_sale_count + = 1
# 组合场景 低收盘-低清仓 低收盘-高清仓 低收盘-正常清仓 正常收盘-低清仓 正常收盘-高清仓 正常收盘-正常清仓 高收盘-低清仓 高收盘-高清仓 高收盘-正常清仓
if next_close_differrange < - 3 :
if saleprice_close_differrange < - 3 :
low_close_low_sale_count + = 1
elif saleprice_close_differrange > 3 :
low_close_high_sale_count + = 1
else :
low_close_normal_sale_count + = 1
elif next_close_differrange > 3 :
if saleprice_close_differrange < - 3 :
high_close_low_sale_count + = 1
elif saleprice_close_differrange > 3 :
high_close_high_sale_count + = 1
else :
high_close_normal_sale_count + = 1
else :
if saleprice_close_differrange < - 3 :
normal_close_low_sale_count + = 1
elif saleprice_close_differrange > 3 :
normal_close_high_sale_count + = 1
else :
normal_close_normal_sale_count + = 1
# 将数据框保存到磁盘
df . to_csv ( f ' D:/calculate_data/ { date_str } _stock.csv ' , index = False )
# # 从磁盘加载数据框
# df = pd.read_csv('df_distribution.csv')
print ( f ' 总统计数: { total_count } ' )
print ( f ' 低于-3%的开盘价计数: { low_open_count } ' )
print ( f ' 正常开盘,介于-3%和3%之间的计数: { normal_open_count } ' )
print ( f ' 高于3%的开盘价计数: { high_open_count } ' )
print ( f ' 低于-3%的收盘价计数: { low_close_count } ' )
print ( f ' 正常收盘,介于-3%和3%之间的计数: { normal_close_count } ' )
print ( f ' 高于3%的收盘价计数: { high_close_count } ' )
print ( f ' 低开盘-低清仓: { low_open_low_sale_count } ' )
print ( f ' 低开盘-高清仓: { low_open_high_sale_count } ' )
print ( f ' 低开盘-正常清仓: { low_open_normal_sale_count } ' )
print ( f ' 正常开盘-低清仓: { normal_open_low_sale_count } ' )
print ( f ' 正常开盘-高清仓: { normal_open_high_sale_count } ' )
print ( f ' 正常开盘-正常清仓: { normal_open_normal_sale_count } ' )
print ( f ' 高开盘-低清仓: { high_open_low_sale_count } ' )
print ( f ' 高开盘-高清仓: { high_open_high_sale_count } ' )
print ( f ' 高开盘-正常清仓: { high_open_normal_sale_count } ' )
print ( f ' 低收盘-低清仓: { low_close_low_sale_count } ' )
print ( f ' 低收盘-高清仓: { low_close_high_sale_count } ' )
print ( f ' 低收盘-正常清仓: { low_close_normal_sale_count } ' )
print ( f ' 正常收盘-低清仓: { normal_close_low_sale_count } ' )
print ( f ' 正常收盘-高清仓: { normal_close_high_sale_count } ' )
print ( f ' 正常收盘-正常清仓: { normal_close_normal_sale_count } ' )
print ( f ' 高收盘-低清仓: { high_close_low_sale_count } ' )
print ( f ' 高收盘-高清仓: { high_close_high_sale_count } ' )
print ( f ' 高收盘-正常清仓: { high_close_normal_sale_count } ' )
print ( f ' 低开盘-低清仓-盈利高于5%: { low_open_low_sale_high_profit_count } ' )
print ( f ' 低开盘-低清仓-盈利低于5%: { low_open_low_sale_low_profit_count } ' )
print ( f ' 低开盘-低清仓-亏损低于5%: { low_open_low_sale_low_loss_count } ' )
print ( f ' 低开盘-低清仓-亏损高于5%: { low_open_low_sale_high_loss_count } ' )
print ( f ' 低开盘-高清仓-盈利高于5%: { low_open_high_sale_high_profit_count } ' )
print ( f ' 低开盘-高清仓-盈利低于5%: { low_open_high_sale_low_profit_count } ' )
print ( f ' 低开盘-高清仓-亏损低于5%: { low_open_high_sale_low_loss_count } ' )
print ( f ' 低开盘-高清仓-亏损高于5%: { low_open_high_sale_high_loss_count } ' )
print ( f ' 低开盘-正常清仓-盈利高于5%: { low_open_normal_sale_high_profit_count } ' )
print ( f ' 低开盘-正常清仓-盈利低于5%: { low_open_normal_sale_low_profit_count } ' )
print ( f ' 低开盘-正常清仓-亏损低于5%: { low_open_normal_sale_low_loss_count } ' )
print ( f ' 低开盘-正常清仓-亏损高于5%: { low_open_normal_sale_high_loss_count } ' )
print ( f ' 正常开盘-低清仓-盈利高于5%: { normal_open_low_sale_high_profit_count } ' )
print ( f ' 正常开盘-低清仓-盈利低于5%: { normal_open_low_sale_low_profit_count } ' )
print ( f ' 正常开盘-低清仓-亏损低于5%: { normal_open_low_sale_low_loss_count } ' )
print ( f ' 正常开盘-低清仓-亏损高于5%: { normal_open_low_sale_high_loss_count } ' )
print ( f ' 正常开盘-高清仓-盈利高于5%: { normal_open_high_sale_high_profit_count } ' )
print ( f ' 正常开盘-高清仓-盈利低于5%: { normal_open_high_sale_low_profit_count } ' )
print ( f ' 正常开盘-高清仓-亏损低于5%: { normal_open_high_sale_low_loss_count } ' )
print ( f ' 正常开盘-高清仓-亏损高于5%: { normal_open_high_sale_high_loss_count } ' )
print ( f ' 正常开盘-正常清仓-盈利高于5%: { normal_open_normal_sale_high_profit_count } ' )
print ( f ' 正常开盘-正常清仓-盈利低于5%: { normal_open_normal_sale_low_profit_count } ' )
print ( f ' 正常开盘-正常清仓-亏损低于5%: { normal_open_normal_sale_low_loss_count } ' )
print ( f ' 正常开盘-正常清仓-亏损高于5%: { normal_open_normal_sale_high_loss_count } ' )
print ( f ' 高开盘-低清仓-盈利高于5%: { high_open_low_sale_high_profit_count } ' )
print ( f ' 高开盘-低清仓-盈利低于5%: { high_open_low_sale_low_profit_count } ' )
print ( f ' 高开盘-低清仓-亏损低于5%: { high_open_low_sale_low_loss_count } ' )
print ( f ' 高开盘-低清仓-亏损高于5%: { high_open_low_sale_high_loss_count } ' )
print ( f ' 高开盘-高清仓-盈利高于5%: { high_open_high_sale_high_profit_count } ' )
print ( f ' 高开盘-高清仓-盈利低于5%: { high_open_high_sale_low_profit_count } ' )
print ( f ' 高开盘-高清仓-亏损低于5%: { high_open_high_sale_low_loss_count } ' )
print ( f ' 高开盘-高清仓-亏损高于5%: { high_open_high_sale_high_loss_count } ' )
print ( f ' 高开盘-正常清仓-盈利高于5%: { high_open_normal_sale_high_profit_count } ' )
print ( f ' 高开盘-正常清仓-盈利低于5%: { high_open_normal_sale_low_profit_count } ' )
print ( f ' 高开盘-正常清仓-亏损低于5%: { high_open_normal_sale_low_loss_count } ' )
print ( f ' 高开盘-正常清仓-亏损高于5%: { high_open_normal_sale_high_loss_count } ' )
print ( f ' 低收盘-低清仓-盈利高于5%: { low_close_low_sale_high_profit_count } ' )
print ( f ' 低收盘-低清仓-盈利低于5%: { low_close_low_sale_low_profit_count } ' )
print ( f ' 低收盘-低清仓-亏损低于5%: { low_close_low_sale_low_loss_count } ' )
print ( f ' 低收盘-低清仓-亏损高于5%: { low_close_low_sale_high_loss_count } ' )
print ( f ' 低收盘-高清仓-盈利高于5%: { low_close_high_sale_high_profit_count } ' )
print ( f ' 低收盘-高清仓-盈利低于5%: { low_close_high_sale_low_profit_count } ' )
print ( f ' 低收盘-高清仓-亏损低于5%: { low_close_high_sale_low_loss_count } ' )
print ( f ' 低收盘-高清仓-亏损高于5%: { low_close_high_sale_high_loss_count } ' )
print ( f ' 低收盘-正常清仓-盈利高于5%: { low_close_normal_sale_high_profit_count } ' )
print ( f ' 低收盘-正常清仓-盈利低于5%: { low_close_normal_sale_low_profit_count } ' )
print ( f ' 低收盘-正常清仓-亏损低于5%: { low_close_normal_sale_low_loss_count } ' )
print ( f ' 低收盘-正常清仓-亏损高于5%: { low_close_normal_sale_high_loss_count } ' )
print ( f ' 正常收盘-低清仓-盈利高于5%: { normal_close_low_sale_high_profit_count } ' )
print ( f ' 正常收盘-低清仓-盈利低于5%: { normal_close_low_sale_low_profit_count } ' )
print ( f ' 正常收盘-低清仓-亏损低于5%: { normal_close_low_sale_low_loss_count } ' )
print ( f ' 正常收盘-低清仓-亏损高于5%: { normal_close_low_sale_high_loss_count } ' )
print ( f ' 正常收盘-高清仓-盈利高于5%: { normal_close_high_sale_high_profit_count } ' )
print ( f ' 正常收盘-高清仓-盈利低于5%: { normal_close_high_sale_low_profit_count } ' )
print ( f ' 正常收盘-高清仓-亏损低于5%: { normal_close_high_sale_low_loss_count } ' )
print ( f ' 正常收盘-高清仓-亏损高于5%: { normal_close_high_sale_high_loss_count } ' )
print ( f ' 正常收盘-正常清仓-盈利高于5%: { normal_close_normal_sale_high_profit_count } ' )
print ( f ' 正常收盘-正常清仓-盈利低于5%: { normal_close_normal_sale_low_profit_count } ' )
print ( f ' 正常收盘-正常清仓-亏损低于5%: { normal_close_normal_sale_low_loss_count } ' )
print ( f ' 正常收盘-正常清仓-亏损高于5%: { normal_close_normal_sale_high_loss_count } ' )
print ( f ' 高收盘-低清仓-盈利高于5%: { high_close_low_sale_high_profit_count } ' )
print ( f ' 高收盘-低清仓-盈利低于5%: { high_close_low_sale_low_profit_count } ' )
print ( f ' 高收盘-低清仓-亏损低于5%: { high_close_low_sale_low_loss_count } ' )
print ( f ' 高收盘-低清仓-亏损高于5%: { high_close_low_sale_high_loss_count } ' )
print ( f ' 高收盘-高清仓-盈利高于5%: { high_close_high_sale_high_profit_count } ' )
print ( f ' 高收盘-高清仓-盈利低于5%: { high_close_high_sale_low_profit_count } ' )
print ( f ' 高收盘-高清仓-亏损低于5%: { high_close_high_sale_low_loss_count } ' )
print ( f ' 高收盘-高清仓-亏损高于5%: { high_close_high_sale_high_loss_count } ' )
print ( f ' 高收盘-正常清仓-盈利高于5%: { high_close_normal_sale_high_profit_count } ' )
print ( f ' 高收盘-正常清仓-盈利低于5%: { high_close_normal_sale_low_profit_count } ' )
print ( f ' 高收盘-正常清仓-亏损低于5%: { high_close_normal_sale_low_loss_count } ' )
print ( f ' 高收盘-正常清仓-亏损高于5%: { high_close_normal_sale_high_loss_count } ' )
df_distribution = pd . DataFrame ( { ' test ' : [ 1 ] } )
df_distribution [ ' total_count ' ] = total_count
df_distribution [ ' low_open_count ' ] = low_open_count
df_distribution [ ' normal_open_count ' ] = normal_open_count
df_distribution [ ' high_open_count ' ] = high_open_count
df_distribution [ ' low_close_count ' ] = low_close_count
df_distribution [ ' normal_close_count ' ] = normal_close_count
df_distribution [ ' high_close_count ' ] = high_close_count
df_distribution [ ' low_open_low_sale_count ' ] = low_open_low_sale_count
df_distribution [ ' low_open_high_sale_count ' ] = low_open_high_sale_count
df_distribution [ ' low_open_normal_sale_count ' ] = low_open_normal_sale_count
df_distribution [ ' normal_open_low_sale_count ' ] = normal_open_low_sale_count
df_distribution [ ' normal_open_high_sale_count ' ] = normal_open_high_sale_count
df_distribution [ ' normal_open_normal_sale_count ' ] = normal_open_normal_sale_count
df_distribution [ ' high_open_low_sale_count ' ] = high_open_low_sale_count
df_distribution [ ' high_open_high_sale_count ' ] = high_open_high_sale_count
df_distribution [ ' high_open_normal_sale_count ' ] = high_open_normal_sale_count
df_distribution [ ' low_close_low_sale_count ' ] = low_close_low_sale_count
df_distribution [ ' low_close_high_sale_count ' ] = low_close_high_sale_count
df_distribution [ ' low_close_normal_sale_count ' ] = low_close_normal_sale_count
df_distribution [ ' normal_close_low_sale_count ' ] = normal_close_low_sale_count
df_distribution [ ' normal_close_high_sale_count ' ] = normal_close_high_sale_count
df_distribution [ ' normal_close_normal_sale_count ' ] = normal_close_normal_sale_count
df_distribution [ ' high_close_low_sale_count ' ] = high_close_low_sale_count
df_distribution [ ' high_close_high_sale_count ' ] = high_close_high_sale_count
df_distribution [ ' high_close_normal_sale_count ' ] = high_close_normal_sale_count
df_distribution [ ' low_open_low_sale_high_profit_count ' ] = low_open_low_sale_high_profit_count
df_distribution [ ' low_open_low_sale_low_profit_count ' ] = low_open_low_sale_low_profit_count
df_distribution [ ' low_open_low_sale_low_loss_count ' ] = low_open_low_sale_low_loss_count
df_distribution [ ' low_open_low_sale_high_loss_count ' ] = low_open_low_sale_high_loss_count
df_distribution [ ' low_open_high_sale_high_profit_count ' ] = low_open_high_sale_high_profit_count
df_distribution [ ' low_open_high_sale_low_profit_count ' ] = low_open_high_sale_low_profit_count
df_distribution [ ' low_open_high_sale_low_loss_count ' ] = low_open_high_sale_low_loss_count
df_distribution [ ' low_open_high_sale_high_loss_count ' ] = low_open_high_sale_high_loss_count
df_distribution [ ' low_open_normal_sale_high_profit_count ' ] = low_open_normal_sale_high_profit_count
df_distribution [ ' low_open_normal_sale_low_profit_count ' ] = low_open_normal_sale_low_profit_count
df_distribution [ ' low_open_normal_sale_low_loss_count ' ] = low_open_normal_sale_low_loss_count
df_distribution [ ' low_open_normal_sale_high_loss_count ' ] = low_open_normal_sale_high_loss_count
df_distribution [ ' normal_open_low_sale_high_profit_count ' ] = normal_open_low_sale_high_profit_count
df_distribution [ ' normal_open_low_sale_low_profit_count ' ] = normal_open_low_sale_low_profit_count
df_distribution [ ' normal_open_low_sale_low_loss_count ' ] = normal_open_low_sale_low_loss_count
df_distribution [ ' normal_open_low_sale_high_loss_count ' ] = normal_open_low_sale_high_loss_count
df_distribution [ ' normal_open_high_sale_high_profit_count ' ] = normal_open_high_sale_high_profit_count
df_distribution [ ' normal_open_high_sale_low_profit_count ' ] = normal_open_high_sale_low_profit_count
df_distribution [ ' normal_open_high_sale_low_loss_count ' ] = normal_open_high_sale_low_loss_count
df_distribution [ ' normal_open_high_sale_high_loss_count ' ] = normal_open_high_sale_high_loss_count
df_distribution [ ' normal_open_normal_sale_high_profit_count ' ] = normal_open_normal_sale_high_profit_count
df_distribution [ ' normal_open_normal_sale_low_profit_count ' ] = normal_open_normal_sale_low_profit_count
df_distribution [ ' normal_open_normal_sale_low_loss_count ' ] = normal_open_normal_sale_low_loss_count
df_distribution [ ' normal_open_normal_sale_high_loss_count ' ] = normal_open_normal_sale_high_loss_count
df_distribution [ ' high_open_low_sale_high_profit_count ' ] = high_open_low_sale_high_profit_count
df_distribution [ ' high_open_low_sale_low_profit_count ' ] = high_open_low_sale_low_profit_count
df_distribution [ ' high_open_low_sale_low_loss_count ' ] = high_open_low_sale_low_loss_count
df_distribution [ ' high_open_low_sale_high_loss_count ' ] = high_open_low_sale_high_loss_count
df_distribution [ ' high_open_high_sale_high_profit_count ' ] = high_open_high_sale_high_profit_count
df_distribution [ ' high_open_high_sale_low_profit_count ' ] = high_open_high_sale_low_profit_count
df_distribution [ ' high_open_high_sale_low_loss_count ' ] = high_open_high_sale_low_loss_count
df_distribution [ ' high_open_high_sale_high_loss_count ' ] = high_open_high_sale_high_loss_count
df_distribution [ ' high_open_normal_sale_high_profit_count ' ] = high_open_normal_sale_high_profit_count
df_distribution [ ' high_open_normal_sale_low_profit_count ' ] = high_open_normal_sale_low_profit_count
df_distribution [ ' high_open_normal_sale_low_loss_count ' ] = high_open_normal_sale_low_loss_count
df_distribution [ ' high_open_normal_sale_high_loss_count ' ] = high_open_normal_sale_high_loss_count
df_distribution [ ' low_close_low_sale_high_profit_count ' ] = low_close_low_sale_high_profit_count
df_distribution [ ' low_close_low_sale_low_profit_count ' ] = low_close_low_sale_low_profit_count
df_distribution [ ' low_close_low_sale_low_loss_count ' ] = low_close_low_sale_low_loss_count
df_distribution [ ' low_close_low_sale_high_loss_count ' ] = low_close_low_sale_high_loss_count
df_distribution [ ' low_close_high_sale_high_profit_count ' ] = low_close_high_sale_high_profit_count
df_distribution [ ' low_close_high_sale_low_profit_count ' ] = low_close_high_sale_low_profit_count
df_distribution [ ' low_close_high_sale_low_loss_count ' ] = low_close_high_sale_low_loss_count
df_distribution [ ' low_close_high_sale_high_loss_count ' ] = low_close_high_sale_high_loss_count
df_distribution [ ' low_close_normal_sale_high_profit_count ' ] = low_close_normal_sale_high_profit_count
df_distribution [ ' low_close_normal_sale_low_profit_count ' ] = low_close_normal_sale_low_profit_count
df_distribution [ ' low_close_normal_sale_low_loss_count ' ] = low_close_normal_sale_low_loss_count
df_distribution [ ' low_close_normal_sale_high_loss_count ' ] = low_close_normal_sale_high_loss_count
df_distribution [ ' normal_close_low_sale_high_profit_count ' ] = normal_close_low_sale_high_profit_count
df_distribution [ ' normal_close_low_sale_low_profit_count ' ] = normal_close_low_sale_low_profit_count
df_distribution [ ' normal_close_low_sale_low_loss_count ' ] = normal_close_low_sale_low_loss_count
df_distribution [ ' normal_close_low_sale_high_loss_count ' ] = normal_close_low_sale_high_loss_count
df_distribution [ ' normal_close_high_sale_high_profit_count ' ] = normal_close_high_sale_high_profit_count
df_distribution [ ' normal_close_high_sale_low_profit_count ' ] = normal_close_high_sale_low_profit_count
df_distribution [ ' normal_close_high_sale_low_loss_count ' ] = normal_close_high_sale_low_loss_count
df_distribution [ ' normal_close_high_sale_high_loss_count ' ] = normal_close_high_sale_high_loss_count
df_distribution [ ' normal_close_normal_sale_high_profit_count ' ] = normal_close_normal_sale_high_profit_count
df_distribution [ ' normal_close_normal_sale_low_profit_count ' ] = normal_close_normal_sale_low_profit_count
df_distribution [ ' normal_close_normal_sale_low_loss_count ' ] = normal_close_normal_sale_low_loss_count
df_distribution [ ' normal_close_normal_sale_high_loss_count ' ] = normal_close_normal_sale_high_loss_count
df_distribution [ ' high_close_low_sale_high_profit_count ' ] = high_close_low_sale_high_profit_count
df_distribution [ ' high_close_low_sale_low_profit_count ' ] = high_close_low_sale_low_profit_count
df_distribution [ ' high_close_low_sale_low_loss_count ' ] = high_close_low_sale_low_loss_count
df_distribution [ ' high_close_low_sale_high_loss_count ' ] = high_close_low_sale_high_loss_count
df_distribution [ ' high_close_high_sale_high_profit_count ' ] = high_close_high_sale_high_profit_count
df_distribution [ ' high_close_high_sale_low_profit_count ' ] = high_close_high_sale_low_profit_count
df_distribution [ ' high_close_high_sale_low_loss_count ' ] = high_close_high_sale_low_loss_count
df_distribution [ ' high_close_high_sale_high_loss_count ' ] = high_close_high_sale_high_loss_count
df_distribution [ ' high_close_normal_sale_high_profit_count ' ] = high_close_normal_sale_high_profit_count
df_distribution [ ' high_close_normal_sale_low_profit_count ' ] = high_close_normal_sale_low_profit_count
df_distribution [ ' high_close_normal_sale_low_loss_count ' ] = high_close_normal_sale_low_loss_count
df_distribution [ ' high_close_normal_sale_high_loss_count ' ] = high_close_normal_sale_high_loss_count
# 删除'test'列
df_distribution = df_distribution . drop ( columns = [ ' test ' ] )
# 创建一个新的图形
fig , ax = plt . subplots ( )
# 创建一个条形图
df_distribution . plot ( kind = ' bar ' , ax = ax )
# 设置图形的标题和轴标签
ax . set_title ( ' Distribution ' )
ax . set_xlabel ( ' Category ' )
ax . set_ylabel ( ' Count ' )
# 显示图形
plt . show ( )