投资者咨询:算法不会写了 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-4-3 0:56
请问这个配合模组信号模型引用的模型的止盈止损是执行趋势模组的吗?如果不是能不能帮我改成挂单止盈和止损。并帮我加上停盘前30秒清盘。谢谢,辛苦。
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
投资者咨询:算法不会写了 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-4-3 0:56
直接在算法交易模组中编写止损止盈和清仓信号。
技术人员回复
日期:2018-4-3 10:35
投资者咨询:算法不会写了 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-4-3 0:56
对,螺纹
技术人员回复
日期:2018-4-3 11:08
投资者咨询:算法不会写了 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-4-3 0:56
1.
所有的信号都是按照最新价委托,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