设为首页收藏本站

 找回密码
 注册
查看: 1550|回复: 0
打印 上一主题 下一主题

大神请进,帮忙看看代码逻辑上是否有问题 [复制链接]

Rank: 1

精华
0
UID
235222
积分
33
帖子
20
主题
8
阅读权限
10
注册时间
2016-5-25
最后登录
2017-5-26
跳转到指定楼层
1#
发表于 2016-6-7 11:56:25 |只看该作者 |倒序浏览
本帖最后由 zdyt5683 于 2016-6-7 13:35 编辑

思路:20日均线,均线上买多,下卖空,持仓时碰线平仓,只允许持仓1手
症状1:在没有空头持仓的情况下(有多头持仓),会发出买平指令。。。。。。
症状2:有时候会连发N个开仓单
  1. Vars
  2.         //-----------------------------MACD变量
  3.         NumericSeries MACDValue;
  4.         NumericSeries AvgMACD;
  5.         NumericSeries MACDDiff;
  6.         Bool macd_dt(False);
  7.         Bool macd_kt(False);
  8.        
  9.         //-----------------------------均线变量
  10.         NumericSeries MA20;
  11.        
  12. Begin
  13.        
  14.         //-----------------------------MACD载入
  15.         MACDValue = XAverage( Close, 12) - XAverage( Close, 26 ) ;       
  16.         AvgMACD = XAverage(MACDValue,9);
  17.         MACDDiff = MACDValue - AvgMACD;
  18.        
  19.         //-----------------------------MACD判断
  20.         macd_dt=MACDDiff[1]>0;
  21.         macd_kt=MACDDiff[1]<0;
  22.        
  23.         //-----------------------------均线载入
  24.         MA20=Average(Close,20);
  25.         PlotNumeric("MA20",MA20,0,yellow);
  26.        
  27.        
  28.         //-----------------------------初始化全局变量8(持仓变量),同步为实际持仓
  29.         If(A_BuyPosition==0 And A_SellPosition==0) SetGlobalVar(8,0);
  30.         If(A_BuyPosition>0) SetGlobalVar(8,1);       
  31.         If(A_SellPosition>0) SetGlobalVar(8,-1);
  32.        

  33. //----------------------------------------------------------------------------------------开仓
  34.         If(A_BuyPosition==0 And A_SellPosition==0 And GetGlobalVar(8)==0)
  35.         {
  36.                 If(Close>MA20 And macd_dt)
  37.                 {
  38.                         A_SendOrder(Enum_Buy,Enum_Entry,1,Q_UpperLimit);
  39.                         SetGlobalVar(8,1);//全局8,持多仓为正
  40.                        
  41.                 }       
  42.                 If(Close<MA20 And macd_kt)
  43.                 {
  44.                          
  45.                         A_SendOrder(Enum_Sell,Enum_Entry,1,Q_LowerLimit);
  46.                         SetGlobalVar(8,-1);//全局8,持空仓为负
  47.                 }       
  48.         }
  49.        

  50. //----------------------------------------------------------------------------------------平仓
  51.                 If(A_BuyPosition>0 And GetGlobalVar(8)>0)//持多仓时
  52.                 {
  53.                         If(Close<=MA20)
  54.                         {
  55.                                 A_SendOrder(Enum_Sell,Enum_Exit,1,Q_LowerLimit);  
  56.                                 SetGlobalVar(8,0);
  57.                         }
  58.                          
  59.                 }
  60.                
  61.                 If(A_SellPosition>0 And GetGlobalVar(8)<0)//持空仓时
  62.                 {
  63.                         If(Close>=MA20)
  64.                         {
  65.                                
  66.                                 A_SendOrder(Enum_Buy,Enum_Exit,1,Q_UpperLimit);
  67.                                 SetGlobalVar(8,0);
  68.                                
  69.                         }
  70.                 }
  71.        
  72. End
复制代码
您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-9 02:17

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部