python海龟交易策略_Python的海龟交易法

import numpy as np

import pandas as pd

from pandas import Series,DataFrame

import random

import math

# 定义一个全局变量, 保存要操作的证券

security='600196.XSHG'

# 设置我们要操作的股票池, 这里我们只操作一支股票

set_universe([security])

set_benchmark('600196.XSHG')

#设置回测条件

set_commission(PerTrade(buy_cost=0.0008, sell_cost=0.0015, min_cost=5))

set_slippage(FixedSlippage(0))

#调整资金规模时的临界损失比例

loss=0.1

#调整资金规模时调整后的资金占当前资金的比例

adjust=0.8

#计算第一个N时取得股票数据的天数

days=20

#系统一入市时股票价格需要高于short_in天内的最高价

short_in=20

#系统二入市时股票价格需要高于long_in天内的最高价

long_in=55

#系统一离市时股票价格需要低于short_out天内的最低价

short_out=10

#系统二离市时股票价格需要低于long_out天内的最低价

long_out=20

#系统一和系统二的资金分配比例,系统一得到ratio*总资金,系统二得到(1-ratio)*总资金

ratio=0.7

#单一市场中的头寸规模限制

limit=4

#记录策略运行了多少天

pdn=0

#记录N值

N=[]

#记录系统一中股票的单位数

sys1=0

#记录系统二中股票的单位数

sys2=0

#判断操作是对系统一还是系统二,值为‘True’是对系统一,‘False’是对系统二

short='False'

#用unit来保存一单位表示多少股票,默认值为1000

unit=1000

#记录系统一形成突破时的股票价格

break_price1=0

#记录系统二形成突破时的股票价格

break_price2=0

#记录分钟

minutes=0

#计算股票的N值

def Calcu_N(context,paused):

#在策略运行了days-1天时,计算前days-1天的平均实际范围

if pdn==days-1:

#取出day-1天来得最高价,最低价,前一天的收盘价

price=attribute_history(security,days-1,'1d', ('high','low','pre_close'),skip_paused=True)

#如果不是所有的这day-1天都没有数据,算出这些天的实际范围的平均值

TR=[]

for i in range(0,days-1):

h_l=price['high'][i]-price['low'][i]

h_pdc=price['high'][i]-price['pre_close'][i]

pdc_l=price['pre_close'][i]-price['low'][i]

temp=max(h_l,h_pdc,pdc_l)

TR.append(temp)

ATR=np.mean(np.array(TR))

N.append(ATR)

#如果策略运行天数已经达到了days天

else:

#如果股票停牌,则将运行天数减1

if paused==True:

global pdn

pdn=pdn-1

#如果未停牌,则利用迭代,计算N值,并保存在列表N中

else:

price=attribute_history(security,1,'1d', ('high','low','pre_close'),skip_paused=True)

h_l=price['high'][0]-price['low'][0]

h_pdc=price['high'][0]-price['pre_close'][0]

pdc_l=price['pre_close'][0]-price['low'][0]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值