COP交易系统策略(TB版)_第1页
COP交易系统策略(TB版)_第2页
COP交易系统策略(TB版)_第3页
COP交易系统策略(TB版)_第4页
COP交易系统策略(TB版)_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

COP交易系统策略(TB版)核心内容:1.CrossOver函数该函数用于判断价格序列Price1是否在某一点上穿过价格序列Price2(即价格1从下方穿越价格2)。参数:NumericSeriesPrice1(1):第一个价格序列。NumericSeriesPrice2(1):第二个价格序列。变量:BoolCon1(False):布尔变量,用于判断条件。BoolPreCon(False):布尔变量,用于最终条件判断。NumericCounter(0):计数器变量,用于遍历价格序列。逻辑:如果Price1>Price2,则开始遍历,检查Price1是否持续等于Price2直到不再满足或达到当前K线索引。最终,如果Price1在某个位置小于Price2,则返回True,否则返回False。2.CrossUnder函数与CrossOver函数类似,但用于判断价格序列Price1是否在某一点下穿过价格序列Price2(即价格1从上方穿越价格2)。逻辑:修改CrossOver函数中的条件,将Price1>Price2改为Price1<Price2,并相应地调整最后返回的条件。3.调用KD指标做信号利用KD指标(随机指标)进行交易决策。参数:NumericLength(14):主要时间周期,用于计算最高和最低值。NumericSlowLength(3):平滑计算的短期周期。NumericSmoothLength(3):D值的平滑周期。变量:存储最高价、最低价、K值、D值等。逻辑:计算过去Length周期内的最高价和最低价。根据最高价、最低价和收盘价计算K值和D值。使用CrossOver和CrossUnder函数判断K值和D值的交叉情况。根据市场位置和K、D值的相对位置执行买入或卖出操作。另一版本KD指标逻辑此版本简化了交易决策的逻辑,直接在K值和D值的条件下执行买入或卖出。逻辑:计算KD值。检查市场位置和K、D值的相对位置,直接执行买入或卖出操作,无需通过额外的CrossOver或CrossUnder函数。函数CrossOver代码:ParamsNumericSeriesPrice1(1);//声明数值序列参数Price1,初始值为1.NumericSeriesPrice2(1);//声明数值序列参数Price2,初始值为1.VarsBoolCon1(False);//声明布尔型变量Con1,初始判断为假。BoolPreCon(False);//声明布尔型变量PreCon,初始判断为假。NumericCounter(0);//声明数值变量Counter,初值为0.BeginIf(Price1>Price2)//假如价格Price1大于Price2{Counter=1;//变量Counter值等于1.//Con1=Price1[1]==Price2[1];//前一价格Price1等于前一价格Price2,把这两价格赋值给布尔型变量Con1While(Con1andCounter<CurrentBar)//这也是一个循环语句,当布尔型变量Con1为真,并且Counter值小于当前k线索引值。{Counter=Counter+1;//变量Counter=前一个Counter值+1Con1=Price1[Counter]==Price2[Counter];//布尔型变量Con1值随着变量Counter值变化了,即Counter值月大,k线的价格往回倒腾数位越多。}PreCon=Price1[Counter]<Price2[Counter];//当k线返回索引价格Price2大于价格Price1时,把数值赋值给布尔型变量PreCon。这些运算符的先后顺序,跟数学运算符差不多,一般都是先乘除后加减(*/+-),次判断大小(<>),最后才是赋值(=)ReturnPreCon;//把布尔型变量值PreCon返回给主函数。}Else//就是假如价格Price1小于或等于Price2时。{ReturnFalse;//返回给主函数是一个错误值,也就是没有值反馈回去了。}End同一根k线上,依据不同算法当价格1大于价格2了,比如均线10与均线120,在同一根k线上,体现出来是不一样的,所以才有了这上穿和下跌。函数CrossUnder条件改一下,价格Price1小于Price2时,代码如下:ParamsNumericSeriesPrice1(1);NumericSeriesPrice2(1);VarsBoolCon1(False);BoolPreCon(False);NumericCounter(0);BeginIf(Price1<Price2){Counter=1;Con1=Price1[1]==Price2[1];While(Con1andCounter<CurrentBar){Counter=Counter+1;Con1=Price1[Counter]==Price2[Counter];}PreCon=Price1[Counter]>Price2[Counter];ReturnPreCon;}Else{ReturnFalse;}End调用KD指标做信号:ParamsNumericLength(14);NumericSlowLength(3);NumericSmoothLength(3);VarsNumericSeriesHighestValue;NumericSeriesLowestValue;NumericSeriesKValue;NumericSumHLValue;NumericSumCLValue;NumericSeriesDValue;Boolcondition1;Boolcondition2;BeginHighestValue=HighestFC(High,Length);LowestValue=LowestFC(Low,Length);SumHLValue=SummationFC(HighestValue-LowestValue,SlowLength);SumCLValue=SummationFC(Close-LowestValue,SlowLength);If(SumHLValue<>0){KValue=SumCLValue/SumHLValue*100;}Else{KValue=0;}DValue=AverageFC(KValue,SmoothLength);If(!CallAuctionFilter())Return;condition1=CrossOver(KValue[1],DValue[1]);condition2=CrossUnder(KValue[1],DValue[1]);If(MarketPosition<>1Andcondition1){Buy(1,Open);}If(MarketPosition<>-1Andcondition2){SellShort(1,Open);}End信号代码解释:1.参数(Params):*`Length(14)`:主要时间周期,通常用于计算最高和最低值。 *`SlowLength(3)`:用于平滑计算的短期周期。 *`SmoothLength(3)`:用于计算D值的平滑周期。2.变量(Vars):*`HighestValue`和`LowestValue`:存储过去`Length`周期内的最高和最低价格。 *`KValue`:随机指标的K线。 *`SumHLValue`和`SumCLValue`:辅助计算K值的总和。 *`DValue`:随机指标的D线,它是K值的移动平均。 *`condition1`和`condition2`:用于交易决策的条件。3.计算:*`HighestValue`和`LowestValue`分别使用`HighestFC`和`LowestFC`函数计算过去`Length`周期的最高和最低价格。 *`SumHLValue`是`HighestValue`和`LowestValue`之差的`SlowLength`周期和。 *`SumCLValue`是收盘价与`LowestValue`之差的`SlowLength`周期和。 *如果`SumHLValue`不为0,则计算`KValue`(否则,`KValue`为0)。 *`DValue`是`KValue`的`SmoothLength`周期移动平均。4.交易决策:*如果`CallAuctionFilter()`返回非真值(即不满足某些条件),则不执行后续操作。 *`condition1`检查K值是否上穿D值(即`KValue[1]`在上一周期低于`DValue[1]`,但在当前周期高于它)。 *`condition2`检查K值是否下穿D值(即`KValue[1]`在上一周期高于`DValue[1]`,但在当前周期低于它)。 *如果当前市场位置不是多头(即没有持仓或多头持仓已平),并且满足`condition1`,则买入。 *如果当前市场位置不是空头(即没有持仓或空头持仓已平),并且满足`condition2`,则卖出空头。另一版本代码:ParamsNumericLength(14);NumericSlowLength(3);NumericSmoothLength(3);VarsNumericSeriesHighestValue;NumericSeriesLowestValue;NumericSeriesKValue;NumericSumHLValue;NumericSumCLValue;NumericSeriesDValue;BeginHighestValue=HighestFC(High,Length);LowestValue=LowestFC(Low,Length);SumHLValue=SummationFC(HighestValue-LowestValue,SlowLength);SumCLValue=SummationFC(Close-LowestValue,SlowLength);If(SumHLValue<>0){KValue=SumCLValue/SumHLValue*100;}Else{KValue=0;}DValue=AverageFC(KValue,SmoothLength);If(!CallAuctionFilter())Return;If(MarketPosition<>1AndKValue[1]>DValue[1]){Buy(1,Open);}If(MarketPosition<>-1AndKValue[1]<DValue[1]){SellShort(1,Open);}End使用了移动平均线(函数,如`HighestFC`、`LowestFC`、`SummationFC`和`AverageFC`)以及两个主要指标:K值和D值(类似于随机指标StochasticOscillator)。以下是代码的详细解释:1.参数(Params) *`Length(14)`:用来计算最高价和最低价的周期长度。 *`SlowLength(3)`:用来计算`SumHLValue`和`SumCLValue`的周期长度。 *`SmoothLength(3)`:用来平滑K值以得到D值的周期长度。2.变量(Vars)*`HighestValue`:保存`Length`周期内的最高价。 *`LowestValue`:保存`Length`周期内的最低价。 *`KValue`:存储K值,即随机指标的K线。 *`SumHLValue`:存储最高价与最低价之差的累积和(在`SlowLength`周期内)。 *`SumCLValue`:存储收盘价与最低价之差的累积和(在`SlowLength`周期内)。 *`DValue`:存储D值,即K值的移动平均。3.交易逻辑:*首先,计算`Length`周期内的最高价和最低价,分别存储在`HighestValue`和`LowestValue`中。 *接着,计算`SlowLength`周期内`HighestValue`与`LowestValue`之差的累积和(`SumHLValue`),以及收盘价与`LowestValue`之差的累积和(`SumCLValue`)。 *如果`SumHLValue`不为0,则计算K值(`KValue`),它是`SumCLValue`除以`SumHLValue`再乘以100的结果。如果`SumHLValue`为0(即最高价和最低价相同),则K值设为0。 *然后,计算D值(`DValue`),它是K值的`SmoothLength`周期内的移

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论