十九、区块量化 形态策略
1、形态指常用的K线形态
如:早晨之星、黄昏十字星、乌云盖顶、三只乌鸦、白三兵、刺透形态等常用的几个主要形态
下面看代码:
新增 cross_modal_order.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import talib
import cross_order as order
import time
def main():
print("任务开始时间:", time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
for symbol in order.symbol_pool:
# 设置杠杆倍数
order.set_leverage(symbol=symbol, leverage='18')
# 获取标的的最新价
df = order.get_candlesticks(symbol=symbol, interval='1D', limit=str(100))
# 早晨之星
# 早晨之星为三日K线模式,定义为下跌趋势,第一日为阴线,第二日价格振幅较小,第三天阳线,预示着底部可能会有反转。
CDLMORNINGSTAR = talib.CDLMORNINGSTAR(df['open'].values, df['high'].values, df['low'].values,
df['close'].values)
# 三只乌鸦
# 我们的K线图的乌鸦并不只有两只,还有三只的。三只乌鸦(Three Black Crows)的定义,也是看三日的K线,
# 也就是连续三根阴线,而且每日收盘价都下跌且接近最低价
CDL3BLACKCROWS = talib.CDL3BLACKCROWS(df['open'].values, df['high'].values, df['low'].values,
df['close'].values)
# 白三兵
# 简介:三日K线模式,三日K线皆阳,每日收盘价变高且接近最高价,开盘价在前一日实体上半部,预示股价上升。
CDL3WHITESOLDIERS = talib.CDL3WHITESOLDIERS(df['open'].values, df['high'].values, df['low'].values,
df['close'].values)
# 刺透形态
# 简介:两日K线模式,下跌趋势中,第一日阴线,第二日收盘价低于前一日最低价,收盘价处在第一日实体上部,预示着底部反转。
CDLPIERCING = talib.CDLPIERCING(df['open'].values, df['high'].values, df['low'].values, df['close'].values)
# 黄昏十字星
# 简介:三日K线模式,基本模式为暮星,第二日收盘价和开盘价相同,预示顶部反转。
CDLEVENINGDOJISTAR = talib.CDLEVENINGDOJISTAR(df['open'].values, df['high'].values, df['low'].values,
df['close'].values)
# 乌云盖顶
# 简介:二日K线模式,第一日长阳,第二日开盘价高于前一日最高价,收盘价处于前一日实体中部以下,预示着股价下跌。
CDLDARKCLOUDCOVER = talib.CDLDARKCLOUDCOVER(df['open'].values, df['high'].values, df['low'].values,
df['close'].values, penetration=0)
if (CDLMORNINGSTAR[-2] == 0) and (CDLMORNINGSTAR[-1] == 100):
order.up_cross_order(symbol=symbol, ordtype='market', message='早晨之星: 策略做多')
print('早晨之星: 策略做多: ' + symbol)
if (CDL3WHITESOLDIERS[-2] == 0) and (CDL3WHITESOLDIERS[-1] == 100):
order.up_cross_order(symbol=symbol, ordtype='market', message='白三兵: 策略做多')
print('白三兵: 策略做多: ' + symbol)
if (CDLPIERCING[-2] == 0) and (CDLPIERCING[-1] == 100):
order.up_cross_order(symbol=symbol, ordtype='market', message='刺透形态: 策略做多')
print('刺透形态: 策略做多: ' + symbol)
if (CDL3BLACKCROWS[-2] == 0) and (CDL3BLACKCROWS[-1] == -100):
order.down_cross_order(symbol=symbol, ordtype='market', message='三只乌鸦: 策略做空')
print('三只乌鸦: 策略做空: ' + symbol)
if (CDLEVENINGDOJISTAR[-2] == 0) and (CDLEVENINGDOJISTAR[-1] == -100):
order.down_cross_order(symbol=symbol, ordtype='market', message='黄昏十字星: 策略做空')
print('黄昏十字星: 策略做空: ' + symbol)
if (CDLDARKCLOUDCOVER[-2] == 0) and (CDLDARKCLOUDCOVER[-1] == -100):
order.down_cross_order(symbol=symbol, ordtype='market', message='乌云盖顶: 策略做空')
print('乌云盖顶: 策略做空: ' + symbol)
time.sleep(5)
print("任务结束时间:
# -*- coding: utf-8 -*-
import talib
import cross_order as order
import time
def main():
print("任务开始时间:", time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
for symbol in order.symbol_pool:
# 设置杠杆倍数
order.set_leverage(symbol=symbol, leverage='18')
# 获取标的的最新价
df = order.get_candlesticks(symbol=symbol, interval='1D', limit=str(100))
# 早晨之星
# 早晨之星为三日K线模式,定义为下跌趋势,第一日为阴线,第二日价格振幅较小,第三天阳线,预示着底部可能会有反转。
CDLMORNINGSTAR = talib.CDLMORNINGSTAR(df['open'].values, df['high'].values, df['low'].values,
df['close'].values)
# 三只乌鸦
# 我们的K线图的乌鸦并不只有两只,还有三只的。三只乌鸦(Three Black Crows)的定义,也是看三日的K线,
# 也就是连续三根阴线,而且每日收盘价都下跌且接近最低价
CDL3BLACKCROWS = talib.CDL3BLACKCROWS(df['open'].values, df['high'].values, df['low'].values,
df['close'].values)
# 白三兵
# 简介:三日K线模式,三日K线皆阳,每日收盘价变高且接近最高价,开盘价在前一日实体上半部,预示股价上升。
CDL3WHITESOLDIERS = talib.CDL3WHITESOLDIERS(df['open'].values, df['high'].values, df['low'].values,
df['close'].values)
# 刺透形态
# 简介:两日K线模式,下跌趋势中,第一日阴线,第二日收盘价低于前一日最低价,收盘价处在第一日实体上部,预示着底部反转。
CDLPIERCING = talib.CDLPIERCING(df['open'].values, df['high'].values, df['low'].values, df['close'].values)
# 黄昏十字星
# 简介:三日K线模式,基本模式为暮星,第二日收盘价和开盘价相同,预示顶部反转。
CDLEVENINGDOJISTAR = talib.CDLEVENINGDOJISTAR(df['open'].values, df['high'].values, df['low'].values,
df['close'].values)
# 乌云盖顶
# 简介:二日K线模式,第一日长阳,第二日开盘价高于前一日最高价,收盘价处于前一日实体中部以下,预示着股价下跌。
CDLDARKCLOUDCOVER = talib.CDLDARKCLOUDCOVER(df['open'].values, df['high'].values, df['low'].values,
df['close'].values, penetration=0)
if (CDLMORNINGSTAR[-2] == 0) and (CDLMORNINGSTAR[-1] == 100):
order.up_cross_order(symbol=symbol, ordtype='market', message='早晨之星: 策略做多')
print('早晨之星: 策略做多: ' + symbol)
if (CDL3WHITESOLDIERS[-2] == 0) and (CDL3WHITESOLDIERS[-1] == 100):
order.up_cross_order(symbol=symbol, ordtype='market', message='白三兵: 策略做多')
print('白三兵: 策略做多: ' + symbol)
if (CDLPIERCING[-2] == 0) and (CDLPIERCING[-1] == 100):
order.up_cross_order(symbol=symbol, ordtype='market', message='刺透形态: 策略做多')
print('刺透形态: 策略做多: ' + symbol)
if (CDL3BLACKCROWS[-2] == 0) and (CDL3BLACKCROWS[-1] == -100):
order.down_cross_order(symbol=symbol, ordtype='market', message='三只乌鸦: 策略做空')
print('三只乌鸦: 策略做空: ' + symbol)
if (CDLEVENINGDOJISTAR[-2] == 0) and (CDLEVENINGDOJISTAR[-1] == -100):
order.down_cross_order(symbol=symbol, ordtype='market', message='黄昏十字星: 策略做空')
print('黄昏十字星: 策略做空: ' + symbol)
if (CDLDARKCLOUDCOVER[-2] == 0) and (CDLDARKCLOUDCOVER[-1] == -100):
order.down_cross_order(symbol=symbol, ordtype='market', message='乌云盖顶: 策略做空')
print('乌云盖顶: 策略做空: ' + symbol)
time.sleep(5)
print("任务结束时间: