大神請進,幫忙看看代碼邏輯上是否有問題 [開拓者 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 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容