网格交易模型
主要逻辑:
包括两个类:
1、new_block创建新的网格,其中有网格中线值(start)参数,(add)按绝对值创建网格,(times)按小数比例创建网格,(quantity)网格中线上下各多少条。返回一个网格列表。
2、strategy主要用来监测实时价格在那个区间,一旦有移动返回所在网格的上轨和下轨。
适合股票和期货。其中strategy类中有个变量self._mytrading_book_list,用于记录交易的行为,可根据不同要求更改要保存的数据。
# coding=utf-8
"""
网格交易模型,包括创建网格和监测价格波动到新网格的两个类模型。
作者:Leo
微信:470770753
"""
class new_block():
def __init__(self):
pass
def block(self, start, add, times, quantity):
block1_list = []
block2_list = []
elememt_list = [x for x in range(0, quantity + 1)]
for element in elememt_list:
block1_list.append(start - start * times * element - add * element)
block2_list.append(start + start * times * element + add * element)
block1_list = block1_list[1:]
block1_list.reverse()
block_list = block1_list + block2_list
return block_list
class strategy():
def __init__(self,start,block_add,block_times,block_quantity):
self._myblock=new_block()
self._myblock_list=self._myblock.block(start,block_add,block_times,block_quantity)
self._mytrading_book_list=[]
self._index_changing_list=[]
for block_mark in self._myblock_list:
#[block_mark,[],[]] for (mark,longposition,shortposition)
self._mytrading_book_list.append([block_mark,[],[]])
def logic(self,data):
compare_block_list=self._myblock_list
if len(compare_block_list)>0:
compare_block_list.sort(reverse=False)
compare_block_list.append(data)
compare_block_list.sort(reverse=False)
self._index_changing_list.append(compare_block_list.index(data))
if len(self._index_changing_list)>1 and self._index_changing_list[-1]!=0 and self._index_changing_list[-1]!=len(compare_block_list)-1:
if abs(self._index_changing_list[-1]-self._index_changing_list[-2])>=1:
return [compare_block_list[self._index_changing_list[-1]-1],compare_block_list[self._index_changing_list[-1]+1]]