66 lines
2.9 KiB
Python
66 lines
2.9 KiB
Python
# encoding: UTF-8
|
||
|
||
from ctaBase import *
|
||
from trader.vtConstant import *
|
||
|
||
|
||
DEBUGCTALOG = True
|
||
|
||
class CtaPolicy(object):
|
||
"""CTA的策略规则类
|
||
包括:
|
||
1、风险评估
|
||
2、最低止损位置
|
||
3、保本止损位置
|
||
4、跟随止损/止盈位置
|
||
5、是否加仓等
|
||
|
||
R1,Big Range/Renko
|
||
R2,Small Range/Renko
|
||
"""
|
||
|
||
def __init__(self, r1Period=EMPTY_STRING, r2Period=EMPTY_STRING):
|
||
|
||
self.openR1Period = r1Period # 开仓周期Mode
|
||
self.openR2Period = r2Period # 开仓周期Mode
|
||
|
||
self.entryPrice = EMPTY_FLOAT # 开仓价格
|
||
self.lastPeriodBasePrice = EMPTY_FLOAT # 上一个周期内的最近高价/低价(看R2 Rsi的高点和低点)
|
||
self.entryTime = None
|
||
|
||
self.riskLevel = EMPTY_INT # 风险评分,1、低;2、中;3、高
|
||
|
||
self.cancelInNextBar = False
|
||
|
||
self.addPos = False # 是否加仓
|
||
self.addPosOnPips = EMPTY_INT # 价格超过开仓价多少点时加仓
|
||
self.addPosOnRtnPercent = EMPTY_FLOAT # 价格回撤比例时加仓
|
||
self.addPosOnRsiRtnWithPips = EMPTY_INT # 价格超过开仓价,并且低位RSI反转(多:RSI低位折返,空:RSI高位折返)
|
||
self.addPosOnKdjRtnWithPips = EMPTY_INT # 价格超过开仓价,并且低位Kdj反转(多:Kdj低位折返,空:Kdj高位折返)
|
||
|
||
self.exitOnStopPrice = EMPTY_FLOAT # 固定止损价格。 这个规则最优先匹配,作为最大亏损线。
|
||
self.exitOnWinPrice = EMPTY_FLOAT # 固定止盈价格。
|
||
|
||
self.exitOnProtectedPrice = EMPTY_FLOAT # 保本价格。
|
||
self.exitOnLastRtnPips = EMPTY_INT # 盈利后,最后开仓价的回调点数。 使用时,pips* minDiff
|
||
self.exitOnTopRtnPips = EMPTY_INT # 盈利后,最高盈利的回撤点数。 使用时,pips * minDiff
|
||
|
||
self.exitOnR2RsiRtn = False # First RSI Return
|
||
self.exitOnR2EmaCrossed = False # EMA(inputEma1Len) Cross Above、 Under
|
||
self.exitOnR2KamaCrossed = False # AMA(inputAma1Len) Cross Above、 Under
|
||
self.exitOnR2KamaRtn = False # 盈利后,Kama[-1] vs Kama[-2]
|
||
|
||
self.exitOnR1RsiRtn = False # First RSI Return
|
||
self.exitOnR1EmaCrossed = False # EMA(inputEma1Len) Cross Above、 Under
|
||
self.exitOnR1KamaCrossed = False # AMA(inputAma1Len) Cross Above、 Under
|
||
self.exitOnR1KamaRtn = False # 盈利后,Kama[-1] vs Kama[-2]
|
||
|
||
self.exitOnR1PeriodChanged = False # R1 Period Changed, if True,openR1Period != periodMode
|
||
self.exitOnR2PeriodChanged = False # R2 Period Changed, if True,openR2Period != periodMode
|
||
|
||
self.exitOnR1PeriodModes = [] # 可以与exitOnR1PeriodChanged ,指定的立场周期;进入后,激活 exitOnR2RsiRtn
|
||
|
||
|
||
|
||
|