请教一下条件问题 [文华财经]
-
咨询内容:
Datum1 = Def_TickData("m1709",1,20);//第一腿合约取20笔TICK
Datum2 = Def_TickData("m1711",1,20);//第二腿合约取20笔TICK
If(Datum1.State == 1)
{
For i = 0 To Size - 1
{
Data1Ma = (Datum1[i].TickPrice + Data1Ma) / 20;//计算第一腿合约的20笔TICK算数平均值
}
}
If(Datum2.State == 1)
{
For j = 0 To Size - 1
{
Data2Ma = (Datum2[j].TickPrice + Data2Ma) / 20;//计算第一腿合约的20笔TICK算数平均值
}
}DataCond = Data1Ma - Data2Ma;
If(DataCond < 48)
{
Buy;
}这样写之后为何第一腿和第二腿差价是81也会开仓?
来源:程序化99
- 文华技术人员: 来源:程序化99
- 文华技术人员:m1709和 来源:程序化99
- 文华技术人员:m1711合约已经交割了 来源:程序化99
-
文华技术人员:
来源:程序化99 - 文华技术人员:套利合约没有数据的,所以函数是返回为0 的 来源:程序化99
-
文华技术人员:
来源:程序化99 - 文华技术人员:DataCond=0 满足小于48的条件,所以开仓 来源:程序化99
-
文华技术人员:
来源:程序化99 -
文华技术人员:
来源: WWW.CXH99.COM
-
文华客服:
Begin
Datum1 = Def_TickData("8365",1,20);//第一腿合约取20笔TICK
Datum2 = Def_TickData("8369",1,20);//第二腿合约取20笔TICK
If(Datum1.State == 1)
{
For i = 0 To Size - 1
{
Data1Ma = (Datum1[i].TickPrice + Data1Ma) / 20;//计算第一腿合约的20笔TICK算数平均值
}
}
If(Datum2.State == 1)
{
For j = 0 To Size - 1
{
Data2Ma = (Datum2[j].TickPrice + Data2Ma) / 20;//计算第一腿合约的20笔TICK算数平均值
}
}
If(Data1Ma - Data2Ma < 59)
{
Buy;
}else If(Data1Ma - Data2Ma > 60)
{
Sell;
}我改成这样写第一二腿相差81也会开仓啊,是我上面截取的不是一二腿的20笔平均tick吗?
-
网友回复:
您楼上源码是逐笔tick进行取值的
而加载到k线图读取的是当根k线的返回值,无法显示逐笔明细的,所以返回值都是0的
但是模型在计算的过程中是满足了开仓条件的,所以进行了开仓,只是您回测查看K线显示不出来
您可以将模型修改为算法交易模型,加载到算法交易池中,检验模型的逐笔运行效果
PS:您需要注意的是m1811合约交易量少,读取不到20笔tick 的,您可以更换一个相对活跃的合约
模型修改:
Data Data1:"m1809";//第一腿合约 Data2:"m1811";//第二腿合约Vars//------------------------------定义普通变量------------------------------ Numeric Data1Ma;//第一腿合约近20笔TICK均值 Numeric Data2Ma;//第二腿合约近20笔TICK均值 Numeric Size(20);//Tick区大小 Numeric i;//For循环变量 Numeric j;//For循环变量 Numeric DataCond;//------------------------------定义数据区变量------------------------------ Var_TickData Datum1;//第一腿合约数据区 Var_TickData Datum2;//第二腿合约数据区BeginDatum1 = Def_TickData("m1809",1,20);//第一腿合约取20笔TICKDatum2 = Def_TickData("m1811",1,20);//第二腿合约取20笔TICK If(Datum1.State == 1) { For i = 0 To Size - 1 { Data1Ma = (Datum1[i].TickPrice + Data1Ma) / 20;//计算第一腿合约的20笔TICK算数平均值 } } If(Datum2.State == 1) { For j = 0 To Size - 1 { Data2Ma = (Datum2[j].TickPrice + Data2Ma) / 20;//计算第一腿合约的20笔TICK算数平均值 } } DataCond = Data1Ma - Data2Ma; Commentary("m1809:"+Text(Data1Ma)); Commentary("m1811:"+Text(Data2Ma)); Commentary("价格"+Text(DataCond));End
文件名:算法.png - 网友回复: 这个m1809,m1811的代码在哪里找啊?以及这么写的话开仓和平仓按照范例里的写就可以了吗?
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 511411198 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容