您现在的位置:程序化交易>> 期货公式>> 文华财经>> 文华财经知识>>正文内容

请教一下条件问题 [文华财经]

  • 咨询内容:  

    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  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容