利用A函数报单,trade_mark的作用
老师: 在30分钟周期的K线上利用A函数报单后,trade_mark=False;那么,是不是在5分钟周期上不能再报单了? 如何做到30分钟周期上trade_mark标识为False时,5分钟周期的K线上还能报单? 请指导,谢谢!
老师: 在30分钟周期的K线上利用A函数报单后,trade_mark=False;那么,是不是在5分钟周期上不能再报单了? 如何做到30分钟周期上trade_mark标识为False时,5分钟周期的K线上还能报单? 请指导,谢谢!
trade_mark自己定义的变量吗?建议你贴完整的代码上来看
回复:Params……Vars …… Global Bool trade_mark;Events OnInit() { } onBar(ArrayRef<Integer> indexs) { MP = MarketPosition; Range[0:7] { //交易指标计算 …… //开多仓条件计算 If(MarketPosition == 0 And BarsSinceExit >= 0 And MA5 / MA5[1] > MA10 / MA10[1]) { If(MACDDiff[1] > MACDDiff[2] ) { Buy(1 , Max(O, MA5), Enum_Signal_NotSend()); myEntryPrice = Max(O, MA5); } } …… Buyksign = 0; IF(MP[1] == 0 And MarketPosition == 1) { Buyksign = 1; } //开空仓条件计算 If(MarketPosition == 0 And BarsSinceExit >= 0 And MA5[1] / MA5 > MA10[1] / MA10) { If(MACDDiff[1] < MACDDiff[2]) { Sellshort(1, Min(O, MA5), Enum_Signal_NotSend()); myEntryPrice = Min(O, MA5); } }…… Sellksign = 0; IF(MP[1] == 0 And MarketPosition == -1) { Sellksign = 1; } //平多仓条件计算 If(MarketPosition == 1 And BarsSinceEntry >= 1) { If(MACDDiff < MACDDiff[1] or MA20 < MA20[1]) { Sell(0, Min(O, MA5), Enum_Signal_NotSend()); ExitPrice == Min(O, MA5); } } …… Sellpsign = 0; IF(MP[1] == 1 And MarketPosition == 0) { Sellpsign = 1; } //平空仓条件计算 If(MarketPosition == -1 And BarsSinceEntry >= 1) { if(MACDDiff > MACDDiff[1] or MA20 > MA20[1]) { Buytocover(0, Max(O, MA5), Enum_Signal_NotSend()) ; ExitPrice == Max(O, MA5); } } …… Buypsign == 0; IF(MP[1] == -1 And MarketPosition == 0) { Buypsign = 1; } if(MarketPosition == MP[1]) { Buyksign = Buyksign[1]; Sellksign = Sellksign[1]; Buypsign = Buypsign[1]; Sellpsign = Sellpsign[1]; } } //A函数下单//各图层周期:0-5M,1-15M,2-30M,3-60M,4-120M,5-D,6-1M//A函数开多仓 if ((currenttime > 0.090030 And currenttime < 0.145930) or (currenttime > 0.210030 And currenttime < 0.232930)) { If(A_BuyPosition == 0 And A_SellPosition == 0 And (data1.Buyksign == 1 or data2.Buyksign == 1)) { IF(((data5.K > data5.D And data4.K > data4.D) And data0.K < 80) And trade_mark) { array<Integer> orderids; A_SendOrderEx(Enum_Buy, Enum_Entry, VolT, O, orderids); myEntryPrice = O; trade_mark = False; } }//A函数开空仓 If(A_BuyPosition == 0 And A_SellPosition == 0 And (data1.Sellksign == 1 or data2.Sellksign == 1)) { IF(((data5.K < data5.D And data4.K < data4.D) And data0.K > 20) And trade_mark) { array<Integer> orderids; A_SendOrderEx(Enum_Sell, Enum_Entry, VolT, O, orderids); myEntryPrice = C; trade_mark = False; } } //A函平多仓 If(data4.MarketPosition == 1 And A_BuyPosition == 1 And data1.Sellksign ==1) { IF(data1.K < data1.D And trade_mark) { array<Integer> orderids; A_SendOrderEx(Enum_Sell, Enum_Exit, VolT, O, orderids); trade_mark = False; } } //应对开多仓信号消失 If(data2.MarketPosition == 0 And data1.MarketPosition == 0 And A_BuyPosition == 1 And data6.Sellpsign == 1) { IF(data6.K < data6.D And trade_mark) { array<Integer> orderids; A_SendOrderEx(Enum_Sell, Enum_Exit, VolT, O, orderids); //平多单 trade_mark = False; } } //A函数平空仓 If(data4.MarketPosition == -1 And A_SellPosition == -1 And data1.Buyksign == 1) { IF(data1.K > data1.D And trade_mark) { array<Integer> orderids; A_SendOrderEx(Enum_Buy, Enum_Exit, VolT, O, orderids); trade_mark = False; } }//应对开空仓信号消失 If(data2.MarketPosition == 0 And data1.MarketPosition == 0 And A_SellPosition == -1 And data6.Buypsign == 1) { IF(data6.K > data6.D And trade_mark) { array<Integer> orderids; A_SendOrderEx(Enum_Buy, Enum_Exit, VolT, O, orderids); //平pw 单 trade_mark = False; } } } } onBarOpen(ArrayRef<Integer> indexs) { trade_mark = True; } 麻烦老师给看看,开仓单能正常发单,但平仓单不能正常发单。
回复:你这个代码编译不了