投资者咨询:均价线帮我改成虚线,谢谢老师 (文华财经)
来源:文华财经 日期:2020-10-14 11:30
Params
Numeric AvgLen1(30);
Numeric AvgLen2(60);
Numeric AvgLen3(240);
Numeric RLength(4);
Vars
NumericSeries Avg1; //指数移动平均1
NumericSeries Avg2; //指数移动平均2
NumericSeries Avg3; //指数移动平均3
NumericSeries BuyCon1; //做多条件之一
NumericSeries SellCon1; //做空条件之一
NumericSeries LongStopPrice; //多头跟踪止损价
NumericSeries ShortStopPrice; //空头跟踪止损价
NumericSeries Range1; //K线幅度
NumericSeries RangeL;
NumericSeries RangeS;
Numeric N; //下单手数
Numeric SH; //平仓参数
Numeric RLP,FLP; //涨跌停价
Numeric BIDP,ASKP; //买卖一价
Numeric BRP,SRP; //多空头可用持仓
Numeric OPFLG; //模型处理标志
Numeric BKDFLG; //买开处理标志
Numeric SKDFLG; //卖开处理标志
Numeric BPDFLG; //买平处理标志
Numeric SPDFLG; //卖平处理标志
Global_Numeric BKID,SKID; //开仓委托
Global_Numeric BPID,SPID; //平仓委托
Global_Numeric BKFLG,SKFLG; //开仓标志
Global_Numeric BPFLG,SPFLG; //平仓标志
Global_Numeric BKM,SKM; //开仓委托手数
Global_Numeric BPM,SPM; //平仓委托手数
Global_Numeric BKP,SKP; //开仓委托价格
Global_Numeric BPP,SPP; //平仓委托价格
Begin
DrawColorKLine(close>ma(close,207),red,1);
DrawColorKLine(close<ma(close,207),RGB(0,128,64),1);
DrawColorKLine(close==ma(close,207),RGB(192,192,192),1);
Avg1 = Ema(Close,AvgLen1);
Avg2 = Ema(Close,AvgLen2);
Avg3 = Ema(Close,AvgLen3);
Range1=High - Low; //定义K线幅度
//在图表上划出指数移动平均线
PlotNumeric("Avg1",Avg1);
PlotNumeric("Avg2",Avg2);
PlotNumeric("Avg3",Avg3);
PlotNumeric("均价线",Settle);
//------------------------变量赋值------------------------//
If(OPFLG == 1) //变量赋值
{
N = 1; //下单手数
BIDP = Price("Bid1"); //买一价
ASKP = Price("Ask1"); //卖一价
RLP = Price("RiseLimit"); //涨停价
FLP = Price("FallLimit"); //跌停价
BRP = F_BuyRemainPosition(); //多头可用持仓
SRP = F_SellRemainPosition(); //空头可用持仓
BRP = Min(BRP,A_BuyRemainPosition()); //多头可用持仓
SRP = Min(SRP,A_SellRemainPosition()); //空头可用持仓
If(A_IsSHCode() == 1) //如果是上期所合约
{
SH = Enum_ExitToday; //平仓参数
}
Else //如果非上期所合约
{
SH = Enum_Exit; //平仓参数
}
}
//------------------------信号处理------------------------//
If(OPFLG == 1) //信号处理
{
If(F_FreshSig() == 1) //如果当前信号是未处理过的信号
{
If(F_SigValid() == 1) //如果当前信号未消失
{
If(F_Sig() == Sig_BK) //如果信号类型为BK
{
Commentary("【BK信号!】");
BKDFLG = 1; //开启买开处理
}
Else If(F_Sig() == Sig_SP) //如果信号类型为SP
{
Commentary("【SP信号!】");
SPDFLG = 1; //开启卖平处理
}
Else If(F_Sig() == Sig_SK) //如果信号类型为SK
{
Commentary("【SK信号!】");
SKDFLG = 1; //开启卖开处理
}
Else If(F_Sig() == Sig_BP) //如果信号类型为BP
{
Commentary("【BP信号!】");
BPDFLG = 1; //开启买平处理
}
}
}
}
//------------------------成交判断------------------------//
If(OPFLG == 1) //成交判断
{
If(BKFLG == 1) //如果有买开委托
{
If(F_OrderStatus(BKID) == Enum_Filled) //如果买开委托成交
{
Commentary("【BK信号:买开委托成交!】");
BKFLG = 0; //买开标志归0
}
}
If(SPFLG == 1) //如果有卖平委托
{
If(F_OrderStatus(SPID) == Enum_Filled) //如果卖平委托成交
{
Commentary("【SP信号:卖平委托成交!】");
SPFLG = 0; //卖平标志归0
}
}
If(SKFLG == 1) //如果有卖开委托
{
If(F_OrderStatus(SKID) == Enum_Filled) //如果卖开委托成交
{
Commentary("【SK信号:卖开委托成交!】");
SKFLG = 0; //卖开标志归0
}
}
If(BPFLG == 1) //如果有买平委托
{
If(F_OrderStatus(BPID) == Enum_Filled) //如果买平委托成交
{
Commentary("【BP信号:买平委托成交!】");
BPFLG = 0; //买平标志归0
}
}
}
//------------------------委托处理------------------------//
If(OPFLG == 1) //委托处理
{
If(BKDFLG == 1) //如果已开启买开处理
{
If(BKFLG == 0) //如果没有买开委托
{
BKM = N; //买开委托手数
BKP = ASKP; //买开委托价格
Commentary("【BK信号:买开委托发出!】");
BKID = A_SendOrder(Enum_Buy,Enum_Entry,BKM,BKP); //发出买开委托
BKFLG = 1; //已发出买开委托
}
}
If(SPDFLG == 1) //如果已开启卖平处理
{
If(SPFLG == 0) //如果没有卖平委托
{
If(BRP > 0) //如果有多头可用持仓
{
SPM = BRP; //卖平委托手数
SPP = FLP; //卖平委托价格
Commentary("【SP信号:卖平委托发出!】");
SPID = A_SendOrder(Enum_Sell,SH,SPM,SPP); //发出卖平委托
SPFLG = 1; //已发出卖平委托
}
}
}
If(SKDFLG == 1) //如果已开启卖开处理
{
If(SKFLG == 0) //如果没有卖开委托
{
SKM = N; //卖开委托手数
SKP = BIDP; //卖开委托价格
Commentary("【SK信号:卖开委托发出!】");
SKID = A_SendOrder(Enum_Sell,Enum_Entry,SKM,SKP); //发出卖开委托
SKFLG = 1; //已发出卖开委托
}
}
If(BPDFLG == 1) //如果已开启买平处理
{
If(BPFLG == 0) //如果没有买平委托
{
If(SRP > 0) //如果有空头可用持仓
{
BPM = SRP; //买平委托手数
BPP = RLP; //买平委托价格
Commentary("【BP信号:买平委托发出!】");
BPID = A_SendOrder(Enum_Buy,SH,BPM,BPP); //发出买平委托
BPFLG = 1; //已发出买平委托
}
}
}
}
End
技术人员回复
日期:2020-10-14 11:32
Numeric AvgLen1(30);
Numeric AvgLen2(60);
Numeric AvgLen3(240);
Numeric RLength(4);
Vars
NumericSeries Avg1; //指数移动平均1
NumericSeries Avg2; //指数移动平均2
NumericSeries Avg3; //指数移动平均3
NumericSeries BuyCon1; //做多条件之一
NumericSeries SellCon1; //做空条件之一
NumericSeries LongStopPrice; //多头跟踪止损价
NumericSeries ShortStopPrice; //空头跟踪止损价
NumericSeries Range1; //K线幅度
NumericSeries RangeL;
NumericSeries RangeS;
Numeric N; //下单手数
Numeric SH; //平仓参数
Numeric RLP,FLP; //涨跌停价
Numeric BIDP,ASKP; //买卖一价
Numeric BRP,SRP; //多空头可用持仓
Numeric OPFLG; //模型处理标志
Numeric BKDFLG; //买开处理标志
Numeric SKDFLG; //卖开处理标志
Numeric BPDFLG; //买平处理标志
Numeric SPDFLG; //卖平处理标志
Global_Numeric BKID,SKID; //开仓委托
Global_Numeric BPID,SPID; //平仓委托
Global_Numeric BKFLG,SKFLG; //开仓标志
Global_Numeric BPFLG,SPFLG; //平仓标志
Global_Numeric BKM,SKM; //开仓委托手数
Global_Numeric BPM,SPM; //平仓委托手数
Global_Numeric BKP,SKP; //开仓委托价格
Global_Numeric BPP,SPP; //平仓委托价格
Begin
DrawColorKLine(close>ma(close,207),red,1);
DrawColorKLine(close<ma(close,207),RGB(0,128,64),1);
DrawColorKLine(close==ma(close,207),RGB(192,192,192),1);
Avg1 = Ema(Close,AvgLen1);
Avg2 = Ema(Close,AvgLen2);
Avg3 = Ema(Close,AvgLen3);
Range1=High - Low; //定义K线幅度
//在图表上划出指数移动平均线
PlotNumeric("Avg1",Avg1);
PlotNumeric("Avg2",Avg2);
PlotNumeric("Avg3",Avg3);
PlotLine("均价线",Settle,Green,Dot);
//------------------------变量赋值------------------------//
If(OPFLG == 1) //变量赋值
{
N = 1; //下单手数
BIDP = Price("Bid1"); //买一价
ASKP = Price("Ask1"); //卖一价
RLP = Price("RiseLimit"); //涨停价
FLP = Price("FallLimit"); //跌停价
BRP = F_BuyRemainPosition(); //多头可用持仓
SRP = F_SellRemainPosition(); //空头可用持仓
BRP = Min(BRP,A_BuyRemainPosition()); //多头可用持仓
SRP = Min(SRP,A_SellRemainPosition()); //空头可用持仓
If(A_IsSHCode() == 1) //如果是上期所合约
{
SH = Enum_ExitToday; //平仓参数
}
Else //如果非上期所合约
{
SH = Enum_Exit; //平仓参数
}
}
//------------------------信号处理------------------------//
If(OPFLG == 1) //信号处理
{
If(F_FreshSig() == 1) //如果当前信号是未处理过的信号
{
If(F_SigValid() == 1) //如果当前信号未消失
{
If(F_Sig() == Sig_BK) //如果信号类型为BK
{
Commentary("【BK信号!】");
BKDFLG = 1; //开启买开处理
}
Else If(F_Sig() == Sig_SP) //如果信号类型为SP
{
Commentary("【SP信号!】");
SPDFLG = 1; //开启卖平处理
}
Else If(F_Sig() == Sig_SK) //如果信号类型为SK
{
Commentary("【SK信号!】");
SKDFLG = 1; //开启卖开处理
}
Else If(F_Sig() == Sig_BP) //如果信号类型为BP
{
Commentary("【BP信号!】");
BPDFLG = 1; //开启买平处理
}
}
}
}
//------------------------成交判断------------------------//
If(OPFLG == 1) //成交判断
{
If(BKFLG == 1) //如果有买开委托
{
If(F_OrderStatus(BKID) == Enum_Filled) //如果买开委托成交
{
Commentary("【BK信号:买开委托成交!】");
BKFLG = 0; //买开标志归0
}
}
If(SPFLG == 1) //如果有卖平委托
{
If(F_OrderStatus(SPID) == Enum_Filled) //如果卖平委托成交
{
Commentary("【SP信号:卖平委托成交!】");
SPFLG = 0; //卖平标志归0
}
}
If(SKFLG == 1) //如果有卖开委托
{
If(F_OrderStatus(SKID) == Enum_Filled) //如果卖开委托成交
{
Commentary("【SK信号:卖开委托成交!】");
SKFLG = 0; //卖开标志归0
}
}
If(BPFLG == 1) //如果有买平委托
{
If(F_OrderStatus(BPID) == Enum_Filled) //如果买平委托成交
{
Commentary("【BP信号:买平委托成交!】");
BPFLG = 0; //买平标志归0
}
}
}
//------------------------委托处理------------------------//
If(OPFLG == 1) //委托处理
{
If(BKDFLG == 1) //如果已开启买开处理
{
If(BKFLG == 0) //如果没有买开委托
{
BKM = N; //买开委托手数
BKP = ASKP; //买开委托价格
Commentary("【BK信号:买开委托发出!】");
BKID = A_SendOrder(Enum_Buy,Enum_Entry,BKM,BKP); //发出买开委托
BKFLG = 1; //已发出买开委托
}
}
If(SPDFLG == 1) //如果已开启卖平处理
{
If(SPFLG == 0) //如果没有卖平委托
{
If(BRP > 0) //如果有多头可用持仓
{
SPM = BRP; //卖平委托手数
SPP = FLP; //卖平委托价格
Commentary("【SP信号:卖平委托发出!】");
SPID = A_SendOrder(Enum_Sell,SH,SPM,SPP); //发出卖平委托
SPFLG = 1; //已发出卖平委托
}
}
}
If(SKDFLG == 1) //如果已开启卖开处理
{
If(SKFLG == 0) //如果没有卖开委托
{
SKM = N; //卖开委托手数
SKP = BIDP; //卖开委托价格
Commentary("【SK信号:卖开委托发出!】");
SKID = A_SendOrder(Enum_Sell,Enum_Entry,SKM,SKP); //发出卖开委托
SKFLG = 1; //已发出卖开委托
}
}
If(BPDFLG == 1) //如果已开启买平处理
{
If(BPFLG == 0) //如果没有买平委托
{
If(SRP > 0) //如果有空头可用持仓
{
BPM = SRP; //买平委托手数
BPP = RLP; //买平委托价格
Commentary("【BP信号:买平委托发出!】");
BPID = A_SendOrder(Enum_Buy,SH,BPM,BPP); //发出买平委托
BPFLG = 1; //已发出买平委托
}
}
}
}
End