算法不会写了 (文华财经WH8赢智V8.2)

投资者咨询:算法不会写了 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-4-3 0:56
请问这个配合模组信号模型引用的模型的止盈止损是执行趋势模组的吗?如果不是能不能帮我改成挂单止盈和止损。并帮我加上停盘前30秒清盘。谢谢,辛苦。

 
VAR Modname;
VAR Code1;//定义合约名称
VAR Price1;//定义最新价
VAR SellPosition,BuyPosition;//定义模组空头持仓、多头持仓
GLOBAL_VAR LastWithDrawFinsh; //这个变量的作用是避免撤单的过程中反复的进行撤单

VOID MAIN() 
{
    Modname="模组名";
Code1=Modname.F_DealCode();
    Price1=Price(Code1,"New");//定义最新价为当前模型所加载合约的最新价
    SellPosition=AL_SellRemainPosition(Code1);
    BuyPosition=AL_BuyRemainPosition(Code1);
    //IF(CurrentTime()-LastOrderTime()<2 && LastOrderTime()!=0)
// RETURN; //控制组件的执行频率 两秒执行一次
//icount=Modname.F_SigCount();
IF(T_IsNoOrder()!=1 ) //有挂单的情况
{
//查询挂单然后进行撤单重下?还是直接撤单?
//need added code
IF(CurrentTime()-LastOrderTime()>20 && LastWithDrawFinsh == 1) //如果20秒有委托未成交,全撤,下次进入会重新下委托
{
T_DeleteOrderAll();
LastWithDrawFinsh=0;
}
RETURN;
}
LastWithDrawFinsh=1;
Modname.F_FreshSig(); //取得一个还未处理的新信号
IF(Modname.F_Sig() == BPK && Modname.F_SigValid() == 1) //如果取出的信号为BPK 且信号不是消失状态
{
IF(SellPosition!=0)
{
MessageOut("信号BPK生效,平掉所有卖仓");
T_ReduceSellOpiTo(Code1, Price1,0); //平掉所有空头持仓
}
IF(BuyPosition == 0)
{
MessageOut("信号BPK生效,开仓");
T_AddBuyOpiTo(Code1, Price1,Modname.F_SigVol()); //补充持仓
}
}
ELSE IF(Modname.F_Sig() == SPK && Modname.F_SigValid() == 1) //如果取出的信号为SPK 且信号不是消失状态 
{
IF(BuyPosition!=0)
{
MessageOut("信号SPK生效,平掉所有卖仓");
T_ReduceBuyOpiTo(Code1, Price1,0); //平掉所有多头持仓
}
IF(SellPosition == 0) //如果买仓为0,不存在止赢止损问题,直接开仓
{
MessageOut("信号SPK生效,开仓");
T_AddSellOpiTo(Code1, Price1,Modname.F_SigVol()); //补充空头持仓
}
}
IF(Modname.F_Sig() == BPK && Modname.F_SigValid() == 0) //BPK 条件不满足(似可认为BPK信号处在消失状态)
{
IF(BuyPosition!=0)
{
MessageOut("信号BPK失效,平掉所有买仓");
T_ReduceBuyOpiTo(Code1, Price1,0); //平掉所有多头持仓
}
}
ELSE IF(Modname.F_Sig() == SPK && Modname.F_SigValid() == 0) //SPK 条件不满足(似可认为SPK信号处在消失状态)
{
IF(SellPosition!=0)
{
MessageOut("信号SPK失效,平掉所有卖仓");
T_ReduceSellOpiTo(Code1, Price1,0); //平掉所有空头持仓
}
}
 
技术人员回复
日期:2018-4-3 8:45
 
是的,上面的编写是取的是加载到模组的 趋势模型信号

您意思是想在趋势模型中添加止损止盈信号和清仓信号,然后在算法交易模型中引用?

还是直接在算法交易模组中编写止损止盈和清仓信号?

请具体说明下,



另外,算法交易模型编写需要详细量化, 还要和您核实下

1.止损止盈的条件是什么呢?

2.止损止盈和清仓也是按照最新价委托,20秒没有成交撤单吗?

3.如果反手的平仓挂单撤单了,后续直接发开仓委托?

如果当前委托发出不到20秒就出下个信号了,直接撤单吗?


   
投资者咨询:算法不会写了 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-4-3 0:56
 直接在算法交易模组中编写止损止盈和清仓信号。

1.止损止盈的条件是什么呢?开多单马上挂2跳的空单止盈,开空单马上挂2跳的多单止盈,设置固定止损5跳。


2.止损止盈和清仓也是按照最新价委托,20秒没有成交撤单吗?对

一开一平,有单不做新单
技术人员回复
日期:2018-4-3 10:35
 
那您交易的合约是否是上期所合约呢?
 
投资者咨询:算法不会写了 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-4-3 0:56
 对,螺纹
技术人员回复
日期:2018-4-3 11:08
 
我们根据您的回复,整理了下,您看下是否和思路一致

1.
螺纹合约,按照趋势模型信号bpk和spk执行

2.
反手开仓成交的同时挂出2个点的止盈委托

3.
开仓后,亏损5个点发出止损委托

4.
收盘前30秒清仓

5.
所有的信号都是按照最新价委托,20秒没有成交就直接撤单。如果20秒内出现其他的信号或指令,直接撤单执行新的指令


投资者咨询:算法不会写了 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-4-3 0:56
 1.
螺纹合约,按照趋势模型信号bpk和spk执行         按照BK和SK

2.
反手开仓成交的同时挂出2个点的止盈委托   对

3.
开仓后,亏损5个点发出止损委托    对

4.
收盘前30秒清仓   对

5.
所有的信号都是按照最新价委托,20秒没有成交就直接撤单。如果20秒内出现其他的信号或指令,(不)直接撤单执行新的指令
技术人员回复
日期:2018-4-3 11:45

 

 

您如果想一开一平的话,需要开仓的时候没有持仓的

 

也就是说,如果反手改成开仓指令,需要先在开仓将判断下是否有持仓。

 

如果出开仓信号的时候,有平仓挂单没有成交的话,是直接撤单且按照最新价发出新的委托?

 

如果止盈一直挂单没有成交,触发了止损挂单,是直接撤掉止盈单发出止损单委托?

投资者咨询:算法不会写了 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-4-3 0:56
 把我说晕了呵呵,下面是开平止盈止损的思路,我其实就是想调用趋势的开仓,用算法交易的挂单平仓优势,下面这个思路,谢谢,辛苦
//多头开仓:
  bmtj = mzcp_5m1;  //5分钟买入条件
  IF( bmtj == 1 && dtcc  == 0 && wcjdk == 0 && CONQC != 1 )
  {
   IF(dtkc == 0)
   {
    MessageOut("多头开仓条件满足");
    BKID = T_Deal(CodeName,0,0,N,Offers(CodeName,"bid1"));
    dtkc = 1;
    dtcd = 1;
    dtcj = 1;
    pmqc = 1;
   }
  }
//*多头开仓委托超时撤单:
 IF( Timer(BKID)>=45 &&  (wcjdk != 0))
  {
   IF(dtcd == 1)
   {
    MessageOut("多头开仓委托超时");
    T_DeleteOrderByCode( CodeName, 1);
    dtcd = 0;
    dtkc = 0;
   }
  }
//多头开仓成交判断
  IF(dtcj==1 && dtcc!=0)
  {
   IF(T_OrderState(BKID)==1||T_OrderState(BKID)==3)
   {
    MessageOut("多头开仓成交状态="+T_OrderState(BKID));
    BKPRICE = T_OrderMatchAvPrice(BKID);
    MessageOut("多头开仓均价="+BKPRICE);
    T_DeleteOrderByCode( CodeName, 1); 
   }
  dtcj = 0;
  dtzy = 1;
  dzpd = 1;
  }
//多头止盈:
  IF( wcjdk==0 && AL_BuyRemainPosition(CodeName) != 0)
  {
   IF(dtzy ==1 )
   {
   MessageOut("多头开仓成交,委托平仓");
   BPID = T_Deal(CodeName,1,2, AL_BuyRemainPosition(CodeName), BKPRICE+2);
   dtzy = 0;
    }
   dtkc = 0;   
   zypd = 1;
  }
  IF(zypd==1 && (T_OrderState(BPID) == 1||T_OrderState(BPID) == 3))
  {
   zysl = zysl + T_OrderMatchVol( BPID );
   MessageOut("止盈数量 = " + zysl);
   MessageOut("----------平仓盈亏="+pcyk+"----------");
   zypd = 0;
  }
//多头止损:
  IF(dzpd == 1 && (BKPRICE - New)>=5 && dtcc !=0)
  {  
   MessageOut("多头止损");
   wtcd = T_DeleteOrderByCode(CodeName,2);
   dzpd = 0;
   dtzs = 1;
  }
  IF(dtzs==1 && T_BuyRemainPosition(CodeName)>=dtcc && wtcd == 0)
  {
   BZID = T_Deal(CodeName,1,2,T_BuyRemainPosition(CodeName), Offers(CodeName,"bid1"));
   dtzs = 0;
   dtkc = 0;
   zspd = 1;
  }
   IF (zspd==1 && T_OrderState( BZID )==1)
   { 
    dzsl = dzsl+ T_OrderMatchVol( BZID );
    MessageOut("多头止损数量 ="+ dzsl);
    MessageOut("----------平仓盈亏="+pcyk+"----------");
    zspd =0; 
    }
投资者咨询:算法不会写了 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-4-3 0:56
 这个思路对吗?