大神请进,帮忙看看代码逻辑上是否有问题 [开拓者 TB]
- 咨询内容:
本帖最后由 zdyt5683 于 2016-6-7 13:35 编辑
思路:20日均线,均线上买多,下卖空,持仓时碰线平仓,只允许持仓1手
症状1:在没有空头持仓的情况下(有多头持仓),会发出买平指令。。。。。。
症状2:有时候会连发N个开仓单- Vars
- //-----------------------------MACD变量
- NumericSeries MACDValue;
- NumericSeries AvgMACD;
- NumericSeries MACDDiff;
- Bool macd_dt(False);
- Bool macd_kt(False);
-
- //-----------------------------均线变量
- NumericSeries MA20;
-
- Begin
-
- //-----------------------------MACD载入
- MACDValue = XAverage( Close, 12) - XAverage( Close, 26 ) ;
- AvgMACD = XAverage(MACDValue,9);
- MACDDiff = MACDValue - AvgMACD;
-
- //-----------------------------MACD判断
- macd_dt=MACDDiff[1]>0;
- macd_kt=MACDDiff[1]<0;
-
- //-----------------------------均线载入
- MA20=Average(Close,20);
- PlotNumeric("MA20",MA20,0,yellow);
-
-
- //-----------------------------初始化全局变量8(持仓变量),同步为实际持仓
- If(A_BuyPosition==0 And A_SellPosition==0) SetGlobalVar(8,0);
- If(A_BuyPosition>0) SetGlobalVar(8,1);
- If(A_SellPosition>0) SetGlobalVar(8,-1);
-
- //----------------------------------------------------------------------------------------开仓
- If(A_BuyPosition==0 And A_SellPosition==0 And GetGlobalVar(8)==0)
- {
- If(Close>MA20 And macd_dt)
- {
- A_SendOrder(Enum_Buy,Enum_Entry,1,Q_UpperLimit);
- SetGlobalVar(8,1);//全局8,持多仓为正
-
- }
- If(Close<MA20 And macd_kt)
- {
-
- A_SendOrder(Enum_Sell,Enum_Entry,1,Q_LowerLimit);
- SetGlobalVar(8,-1);//全局8,持空仓为负
- }
- }
-
- //----------------------------------------------------------------------------------------平仓
- If(A_BuyPosition>0 And GetGlobalVar(8)>0)//持多仓时
- {
- If(Close<=MA20)
- {
- A_SendOrder(Enum_Sell,Enum_Exit,1,Q_LowerLimit);
- SetGlobalVar(8,0);
- }
-
- }
-
- If(A_SellPosition>0 And GetGlobalVar(8)<0)//持空仓时
- {
- If(Close>=MA20)
- {
-
- A_SendOrder(Enum_Buy,Enum_Exit,1,Q_UpperLimit);
- SetGlobalVar(8,0);
-
- }
- }
-
- End
- Vars
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 511411198 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容