投资者咨询:[求助]wh9照上面的精细化例子 (文华财经wh9)
来源:文华财经 日期:2019-11-18 19:40
刚接触这个东西,麻烦帮改成出信号后,后台直接自动下单
Data
CODA:"a2005"; //第一腿合约A
CODB:"b2005"; //第二腿合约B
Vars
Numeric N; //下单手数
Numeric X; //循环变量
Numeric MA3; //3周期均线
Numeric MA5; //5周期均线
Numeric MA10; //10周期均线
Numeric UDP; //上下轨比例
Numeric SHA; //A平仓参数
Numeric SHB; //B平仓参数
Numeric KCP; //K线位置
Numeric SIGID; //指令序号
Numeric NEWPA; //A最新价
Numeric NEWPB; //B最新价
Numeric BIDPA; //A买一价
Numeric ASKPA; //A卖一价
Numeric BIDPB; //B买一价
Numeric ASKPB; //B卖一价
Numeric BIDVB; //B买一量
Numeric ASKVB; //B卖一量
Numeric BSVB; //B买一量和
Numeric ASVB; //B卖一量和
Numeric MAA; //A平均值
Numeric MAB; //B平均值
Numeric SDA; //A标准差
Numeric SDB; //B标准差
Numeric UPLA; //A上轨
Numeric UPLB; //B上轨
Numeric DNLA; //A下轨
Numeric DNLB; //B下轨
Numeric TKNA; //A数据区长度
Numeric TKNB; //B数据区长度
Numeric BRPA; //A多头可用持仓
Numeric SRPB; //B空头可用持仓
Numeric OPFLG; //模型处理标志
Numeric KCFLG; //开仓处理标志
Numeric BKDFLGA; //A买开处理标志
Numeric SPDFLGA; //A卖平处理标志
Numeric SKDFLGB; //B卖开处理标志
Numeric BPDFLGB; //B买平处理标志
Var_TickData TKDA; //A数据区
Var_TickData TKDB; //B数据区
NumericArray TKPA; //A数据价格
NumericArray TKPB; //B数据价格
Global_Numeric SIGIDA; //记录指令序号
Global_Numeric KCPA; //记录K线位置
Global_Numeric BKIDA; //A买开委托
Global_Numeric SPIDA; //A卖平委托
Global_Numeric BKFLGA; //A买开标志
Global_Numeric SPFLGA; //A卖平标志
Global_Numeric SKIDB; //B卖开委托
Global_Numeric BPIDB; //B买平委托
Global_Numeric SKFLGB; //B卖开标志
Global_Numeric BPFLGB; //B买平标志
Begin
//------------------------信号发出------------------------//
If(1) //信号发出
{
MA3 = Ma(Close,3); //3周期均线
MA5 = Ma(Close,5); //5周期均线
MA10 = Ma(Close,10); //10周期均线
PlotLine("Ma3",Ma3); //3周期均线
PlotLine("Ma5",Ma5); //5周期均线
PlotLine("Ma10",Ma10); //10周期均线
If(Ref(Cross(Ma5,Ma10),1) == 1) //如果满足做多条件
{
BK; //发出做多信号
}
If(Ref(CrossDown(Ma3,Ma10),1) == 1) //如果满足平多条件
{
SP; //发出平多信号
}
}
//------------------------处理开启------------------------//
If(RunStart() == 1) //如果已初始化成功
{
OPFLG = 1; //开启模型处理
}
//------------------------变量赋值------------------------//
If(OPFLG == 1) //变量赋值
{
N = 2; //下单手数
BRPA = CODA.F_BuyRemainPosition(); //A多头可用持仓
SRPB = CODB.F_SellRemainPosition(); //B空头可用持仓
If(CODA.A_IsSHCode() == 1) //如果A是上期所合约
{
SHA = Enum_ExitToday; //A平仓参数
}
Else //如果A非上期所合约
{
SHA = Enum_Exit; //A平仓参数
}
If(CODB.A_IsSHCode() == 1) //如果B是上期所合约
{
SHB = Enum_ExitToday; //B平仓参数
}
Else //如果B非上期所合约
{
SHB = Enum_Exit; //B平仓参数
}
If(TKDA.State == 1) //如果A数据区有效
{
TKNA = TKDA.Num; //A数据区长度
For X = 0 To TKNA - 1 //遍历A数据区
{
TKPA[X] = TKDA[X].TickPrice; //A数据价格
}
}
If(1 )
{
KCFLG = 1; //开启开仓处理
}
}
//------------------------信号处理------------------------//
If(OPFLG == 1) //信号处理
{
SIGID = F_CurrentSigIndex; //指令序号
If(SIGID != 0) //如果当笔行情发出指令
{
If(SIGID != SIGIDA || KCP != KCPA) //如果当前信号是未处理过的新信号
{
SIGIDA = SIGID; //记录指令序号
KCPA = KCP; //记录K线位置
If(F_CurrentSig == Sig_BK) //如果信号类型为BK
{
Commentary("【BK信号!】");
If(KCFLG == 1) //如果已开启开仓处理
{
SKDFLGB = 1; //开启B卖开处理
}
}
Else If(F_CurrentSig == Sig_SP) //如果信号类型为SP
{
Commentary("【SP信号!】");
BPDFLGB = 1; //开启B买平处理
}
}
}
}
//------------------------成交判断------------------------//
If(OPFLG == 1) //成交判断
{
If(BKFLGA == 1) //如果有A买开委托
{
If(F_OrderStatus(BKIDA) == Enum_Filled) //如果A买开委托成交
{
Commentary("【BK信号:A买开委托成交!】");
BKFLGA = 0; //A买开标志归0
}
}
If(SKFLGB == 1) //如果有B卖开委托
{
If(F_OrderStatus(SKIDB) == Enum_Filled) //如果B卖开委托成交
{
Commentary("【BK信号:B卖开委托成交!】");
BKDFLGA = 1; //开启A买开处理
SKFLGB = 0; //B卖开标志归0
}
}
If(SPFLGA == 1) //如果有A卖平委托
{
If(F_OrderStatus(SPIDA) == Enum_Filled) //如果A卖平委托成交
{
Commentary("【SP信号:A卖平委托成交!】");
SPFLGA = 0; //A卖平标志归0
}
}
If(BPFLGB == 1) //如果有B买平委托
{
If(F_OrderStatus(BPIDB) == Enum_Filled) //如果B买平委托成交
{
Commentary("【SP信号:B买平委托成交!】");
SPDFLGA = 1; //开启A卖平处理
BPFLGB = 0; //B买平标志归0
}
}
}
//------------------------委托处理------------------------//
If(OPFLG == 1) //委托处理
{
If(BKDFLGA == 1) //如果已开启A买开处理
{
If(BKFLGA == 0) //如果没有A买开委托
{
Commentary("【BK信号:A买开委托发出!】");
BKIDA = CODA.A_SendOrder(Enum_Buy,Enum_Entry,N,ASKPA); //发出A买开委托
BKFLGA = 1; //已发出A买开委托
}
}
If(SKDFLGB == 1) //如果已开启B卖开处理
{
If(SKFLGB == 0) //如果没有B卖开委托
{
Commentary("【BK信号:B卖开委托发出!】");
SKIDB = CODB.A_SendOrder(Enum_Sell,Enum_Entry,N,BIDPB); //发出B卖开委托
SKFLGB = 1; //已发出B卖开委托
}
}
If(SPDFLGA == 1) //如果已开启A卖平处理
{
If(BRPA > 0) //如果有A多头可用持仓
{
Commentary("【SP信号:A卖平委托发出!】");
SPIDA = CODA.A_SendOrder(Enum_Sell,SHA,BRPA,BIDPA); //发出A卖平委托
SPFLGA = 1; //已发出A卖平委托
}
}
If(BPDFLGB == 1) //如果已开启B买平处理
{
If(SRPB > 0) //如果有B空头可用持仓
{
Commentary("【SP信号:B买平委托发出!】");
BPIDB = CODB.A_SendOrder(Enum_Buy,SHB,SRPB,ASKPB); //发出B买平委托
BPFLGB = 1; //已发出B买平委托
}
}
}
End
技术人员回复
日期:2019-11-18 19:42
投资者咨询:[求助]wh9照上面的精细化例子 (文华财经wh9)
来源:文华财经 日期:2019-11-18 19:40
就是白天运行的时候出信号没下单的啊,不是现在没下单
技术人员回复
日期:2019-11-18 19:45