재고 따기 모드의 차이에 따라 주식을 구입, 파이썬 코드를 학습

격차를 따기의 모드에 따라 # 구매 주식
'' '
-------------------------------------- ------
(1)로 돌아 가기 전에 수행하는 것의 전반적인 측정
초기화 (컨텍스트)
1.1 정책 파라미터 ----> 전역 상수 설정
1.2, 중간 변수 ----> 전역 변수
1.3 다시 설정 시험 조건 ----> 추가 JoinQuant이 필요한
2, 주식 따기 전략을 열기 전에 하루 (아래 전략, 주식은 놓칠 수없는 것을 발견)
요금 설정, 2.1
등의 여과 일간의 정학 주식 등 주식의 가능한 풀 설정, 2.2
시장에 상영, 2.3 의 주식 전부의 전체 년
2.4, 상승 격차가 상장 심사 포인트 발생
최저 가격 오늘> 어제, 최고 가격은 일일 한도의 주식을 제거 :로 정의가
> 5 % 상승
등 20~30일로, 사전 통합 단계를 선별, 2.5 최대 - / 낮음 낮음 <15 % 이하인 표준 편차
2.6 갭 일 일일> 20일 체적 평균 전에 50 %, 즉, 15 배 이상.
도 3에서, 트랜잭션 일
3.1, 분석 신호 판매 / 구매
구매 / 판매 동작 수행 3.2
, 4, 폐쇄 일
없이

--------------------------------------------
판매하는 경우에 대한?
세 가지 전략은 첫째는 이익 위치를 설정하는 것입니다있다. 즉, 우리는 가장 높은 판매 포인트를 추구 할 필요가 없습니다.
예를 들어, 판매 지점으로 최근 최고에서 3 % (자기 조정의 비율)의 감소의 위치를 설정합니다.
두 번째는 기술적 분석의 사용은, 한편으로 중요한 압력을 평균 시스템 압력이 참조하는
이전의 높은 지점, 다음에 매일, 주간, 월간, 더 큰주기, 강한 압력이며,보고 싶은
밀도 트랜잭션 영역, 홀드 업 영역의 깊이는, 일시적 이익을 취할 수있는 공간이 있습니다.
지식은 등 낙폭 과대, 정상에서 비교적 정확, KDJ을 MACD 출발을보고, 기술적 지표,이 차트입니다.
제안 된 멀티 시장을 분석하기 위해, 80 주의 %와 더 넓은 시장은 시장이 정점, 주식 일반적으로하지 훨씬 더 같은 추세를 저장합니다.
세 번째는 기초, 피어 비교 및 PE의 현재 주가의 분석뿐만 아니라 회사와보기의 산업 지점에 집중하는 것입니다
같은 처음 몇 행의 총 수익으로, 순이익의 처음 몇 행, 매출 성장, 그것은 항상 거의 1 위 시가 총액은 처음 몇 들어왔다.
기초는 업계에서 10 위를 기록하고 있지만 첫 번째 행에서 시장 가치는 과대 평가 의미합니다. 당신은 이익을 선택할 수 있습니다.

'' '


#의
수입 jqdata의
부분 방전 등의 수입 팬더
DT 등의 수입 날짜
가져 오기 시간

'' '
=============================================== =================================
전체 전에 테스트로 돌아 가기
============= ================================================== =================
''
# 초기화 기능, 기준 설정 같이
초기화 DEF (컨텍스트)
인쇄 '초기화 방법'
set_params ()을 일정하게 전략 #
set_variables ()를 # 중간 변수
set_backtest () # 감지 조건을 다시 설정
'인쇄 ------------------------------------ - '

1
제공 # 정책 파라미터
: DEF의 set_params ()
배치 전략 파라미터'인쇄 '
g.tc 전사 위치 # 1 = 십오일
각 선택된 악곡 상점의 주식 g.num_stocks = 10 # 최대 개수

# 2
# 중간 변수
DEF의 set_variables () :
인쇄 '중간 변수 배치 "
된다 레코드 # 0 = 테스트 일 다시 실행
g.if_trade = 거짓 # 여부 트랜잭션 일

# 3
# 시험 조건으로 다시 설정
DEF () set_backtest :
'시험 조건으로 다시 설정'인쇄

벤치 마크 CSI (300)로 설정 #, 벤치 마크 수익률이다
set_benchmark ( '000300.XSHG')


# 오른쪽 모드의 동적 복구 (실제 가격) 사용
Set_Option ( 'use_real_price', 참)
로그 log.info에 # 내용을 출력 ()
log.info ( '초기 함수가 실행을 시작하고 글로벌 실행 한 번만')
생성 된 시리즈 API 로그의 레벨보다 낮은 # 필터링 오류 순서
#의 log.set_level ( '주문', '오류')

### ### 주식 관련 설정
각 거래에 대한 # 주식 클래스의 비용은 다음과 같습니다위원회에 천분의 십,위원회의 수천의 천분의 십을 구매할 때 당신이 판매하는 경우 인지세의 절반은 무역 당 최소 수수료는 5 달러의 공제
set_order_cost을 (OrderCost (close_tax = 0.001, open_commission = 0.0003, close_commission = 0.0003, min_commission = 5), 유형 = '증권'의)

실행 ## 기능 (reference_security 실행 시간 참조 대상, 수신 대상은 유형을 구분, 따라서 들어오는 '000300.XSHG'또는 '510300.XSHG'하는 동일)
오프닝 # 전에 실행
run_daily (before_market_open, 시간 = reference_security = '000300.XSHG'before_open ')
# 런타임 개구
run_daily (market_open, 시간 ='every_bar 'reference_security ='000300.XSHG ')
닫기 수술후 #
run_daily (after_market_close 시간 = 'after_close'reference_security = '000300.XSHG')

log.set_level ( '주문', '오류')는 레벨 # 주어진 배치 된

''
===================을 ================================================== ===========
개막 전날
==================================== ============================================
2, 선거의 열기 전에 하루 전략 공유 (아래 전략, 주식은 놓칠 수없는 것을 발견)
요금 설정, 2.1
등의 여과 일간의 정학 주식 등 주식의 가능한 풀 설정, 2.2
2.3, 모든 주식의 시장 심사에 연간
2.4, 상장 심사 격차까지 발생합니다 포인트는
다음과 같이 정의된다 오늘날의 최저 가격>어제, 최고 가격은 일일 한도 주식 제거
> 5 % 상승
예비 압밀 단계 스크리닝 2.5, 예컨대 20-30 일까지 - 로우 / 로우 <15 %의 차이를 이하 표준
평균 매일 처음 20 일 2.6 절 결부 일 일일> 50 % 이상 15 배이다.
'' '
## 함수 전면 개구를 실행
before_market_open DEF (컨텍스트)
# 출력 런타임
log.info ( "시간 함수 (before_market_open)'+ STR ( context.current_dt.time ()))

인쇄 '---- ---- 할 일의 열기 전에 하루'

제공된 set_slip_fee (컨텍스트) # 슬립 및 수수료
#의 g.stocks 용의 get_index_stocks = ( '000300.XSHG' ) #의 CSI (300)는 초기 재고 풀이 제공
g.stocks 용의 get_index_stocks = ( '000002.XSHG') # 집합 000002.XSHG 모든 상장 주식의
#은 가능한 재고 풀 설정
g.feasible_stocks을 =의 set_feasible_stocks (g.stocks, 상황)


# 마이크로 편지 (모의 거래를 추가하고, 발효 마이크로 채널 바인딩) 메시지를 보낼 수
#의 send_message ( '좋은 하루를 ~')

주식 #이 작동하기 : 핑 은행 (. G를 전역 변수로)
# g.security = '000001.XSHE'

#
# 설정 가능한 재고 풀 : 필터 일간의 정학 주식
# 입력 : initial_stocks 유형 목록입니다, 초기 재고 풀을 나타내고 문맥 (API를 참조)
# 출력을 : unsuspened_stocks 즉 비 정지 재고 풀, 날짜를 보여주는 형식 목록입니다 : 가능한 재고 풀
DEF의 set_feasible_stocks (initial_stocks, 컨텍스트) :
#는, 초기 재고의 풀 stock 정지 여부를 결정 목록을 반환
# 인쇄 '를 실행 가능한 재고 풀을 배치 : 재고 현탁액 하루 여과', context.current_dt.day의
# 인쇄의 현재 시대의 %의 10 초를 '% (context.current_dt.strftime ( "% Y-M- %의 D %의"))
paused_info = [] 여부 스톡 현탁액 어레이에 대응하는 # 정보를 저장
liste_Date_info = [] # 축적 시간 목록에 대응하는
# 기본 주식 정보 테이블 - STK_STOCKINFO 찾을 수
= ([ '증권']) get_all_securities stock_info


현재 시간 데이터를 얻을 - # get_current_data ♠
current_data = get_current_data ()
인쇄 '인쇄 -', initial_stocks
인쇄 '재 인쇄 - 반환 현재 시간 데이터 객체가 비어 있습니다 'current_data

initial_stocks에서 I에 대한 :
# 나는 각 주식 코드는 밖으로 통과하기
# 그런 다음 주식 현탁액, 거짓이 더 서스펜션을 나타냅니다 여부를 판단하기 위해 일시 정지
paused_info.append (current_data는 [내가] .paused)

# 인쇄, stock_info [i]를 .start_date '모든 주식 데이터 취득 없다'
주식의 년을 얻는 방법에 상장 #을
#을 모든 데이터를 공유 .start_data를 취득하는
# 인쇄 ': % 10s-- 주식 시장 기간 : 현재 기간 %의 10 초'% (context.current_dt.strftime를 ( [, stock_info.at을 "% Y- % M- % D") 내가, '시작일'])
# 인쇄 '현재 기간 : % 10s-- 주식 시장 동안'% ((stock_info.at [난, '시작일'] - context.current_dt) .days)
시장 # 저장에 시간이 전체 년 경우입니다 요는 YES이다
isGoPublicOneYear = calculate_goPublick_OneYear (context.current_dt.strftime ( "% Y-M- %의 D %의"), STR (stock_info.at [I 'START_DATE']))
liste_Date_info.append (isGoPublicOneYear)
IF = isGoPublicOneYear 거짓 =
인쇄 '덜 일년 %를 10 초 이상 나열 주 : %의 10 초'% ( 전, stock_info.at [I 'DISPLAY_NAME'])


df_paused_public_info pd.DataFrame = ({ 'paused_info': paused_info 'liste_Date_info'liste_Date_info} 인덱스 = initial_stocks)
'df_paused_public_info : \ n'# 인쇄, df_paused_public_info
unsuspened_stocks = 목록 (df_paused_public_info.index [(df_paused_public_info.paused_info == 거짓) 및 (df_paused_public_info.liste_Date_info == 참)])

# 프린트 '最后获得인덱스的'unsuspened_stocks


unsuspened_stocks 반환

# 하루 거래 시간 시간이 1 년 이상 시장 여부 계산
: DEF calculate_goPublick_OneYear (currentTime을, goPublicTime)
currentTimeDate = time.strptime (currentTime을, "% Y- % M- % D")
Y-, m, D = currentTimeDate [0 3]

= time.strptime의 goPublicTimeDate (goPublicTime "% Y-M- %의 D %의")
Y2, M2, D2 = goPublicTimeDate [0 :. 3]

# 전단 (dt.datetime (Y, M, D) -dt.datetime (Y2 ., M2, D2)) 일

((dt.datetime (Y, M, D) IF -dt.datetime는 (Y2, M2, D2)) 일)> 366 :.
트루 반환
다른 :
False를 반환


# 5.
# 1 따라 슬립 포인트와 수수료를 설정 기간
# 입력 : 컨텍스트 (API를 참조)
# 출력 : 없음
DEF의 set_slip_fee (컨텍스트) :
인쇄 '설정 한 시간과 비용 슬립에 따라'
슬라이드 0 # 포인트
set_slippage ( FixedSlippage (0))
# 시간 요금의 설정 시간에 따라
'시간 요금의 설정 시간에 따라'인쇄
DT = context.current_dt
된 IF datetime.datetime> DT (2013,1 ,. 1)
set_commission (PerTrade (= buy_cost . 0.0003, sell_cost = 0.0013 (MIN_COST) = 5))

ELIF의 DT>를 datetime.datetime (2011,1 ,. 1)
set_commission (PerTrade (buy_cost = 0.001, sell_cost = 0.002, MIN_COST = 5))

ELIF DT> datetime.datetime (2009,1, 1)
set_commission (PerTrade (buy_cost = 0.002, sell_cost = 0.003, MIN_COST = 5))
다른 :
set_commission (PerTrade (buy_cost = 0.003, sell_cost = 0.004, MIN_COST = 5))


'' '
=============================================== =================================
매일 거래
============== ================================================== ================
''
시간 함수 ## 개구 실행
: DEF의 market_open (컨텍스트)
시간의 함수 (market_open) log.info를 ( ''+ STR ( context.current_dt .time ()))
보안 = g.security의
#은 주식의 종가 얻을
cLOSE_DATA = attribute_history (보안, 5, '1D') '가까운 사용']
# 지난 5 일 동안의 평균 가격을
MA5 = close_data [ '가까이' ] .mean ()
# GET 시간 가격의 점에
CURRENT_PRICE = CLOSE_DATA [ '닫기 사용'] [- 1]
# 현재 현금 얻을
현금 = context.portfolio.available_cash을

가격이 1 %의 시점 평균 가격의 오일보다 높은 경우 #을 누른 다음 전체 저장소를 구입
: CURRENT_PRICE가> 1.01 * MA5 경우
# 레코드 구매
log.info는 ( "가격이 1 %%의 평균 가격보다 높은 구매 S % "% (보안))
주식을 구입하는 모든 현금으로 #
#의 주문 금액을 (보안, 현금)
가격 5 일의 평균 가격보다 낮은 마지막 시간, 다음 매도 포지션을 판매하는 경우 #
ELIF CURRENT_PRICE <MA5와 context.portfolio.positions을 [보안] .closeable_amount> 0 :
# 기록 판매
log.info ( "가격이 평균 가격보다 낮은 판매 S의 %"% (보안))
# 모든 주식을 매각 있도록 주식 보유의 최종 금액 0
# order_target (보안, 0)

'' '
=============================================== =================================
마감 후 일
============== ================================================== ================
'' '

## 닫는 동작 기능 후
: DEF의 after_market_close (컨텍스트)
log.info (STR ( '(after_market_close) 시간의 함수'+ STR (context.current_dt.time ())))
# 트랜잭션 레코드 종일 구하는
거래 용 =의 get_trades을 ( )
trades.values에서 _trade에 대한 () :
log.info ( '거래 기록 :'+ STR (_trade))
log.info ( '하루 끝')
log.info를 ( '########### ################################################## # ')

추천

출처www.cnblogs.com/medik/p/11108627.html