十九、区块量化 形态策略

发布时间 2023-06-21 09:25:06作者: 金记缘

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='25')
# 获取标的的最新价
df = order.get_candlesticks(symbol=symbol, interval='15m', limit=str(300))
# 早晨之星
# 早晨之星为三日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.iloc[-2] == 0) and (CDLMORNINGSTAR.iloc[-1] == 100):
order.up_cross(symbol, '早晨之星: 策略做多')
if (CDL3WHITESOLDIERS.iloc[-2] == 0) and (CDL3WHITESOLDIERS.iloc[-1] == 100):
order.up_cross(symbol, '白三兵: 策略做多')
if (CDLPIERCING.iloc[-2] == 0) and (CDLPIERCING.iloc[-1] == 100):
order.up_cross(symbol, '刺透形态: 策略做多')

if (CDL3BLACKCROWS.iloc[-2] == 0) and (CDL3BLACKCROWS.iloc[-1] == -100):
order.down_cross(symbol, '三只乌鸦: 策略做空')
if (CDLEVENINGDOJISTAR.iloc[-2] == 0) and (CDLEVENINGDOJISTAR.iloc[-1] == -100):
order.down_cross(symbol, '黄昏十字星: 策略做空')
if (CDLDARKCLOUDCOVER.iloc[-2] == 0) and (CDLDARKCLOUDCOVER.iloc[-1] == -100):
order.down_cross(symbol, '乌云盖顶: 策略做空')
time.sleep(5)

print("任务结束时间:", time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))


if __name__ == '__main__':
main()