MQ模组编程 (文华财经wh9)

投资者咨询:MQ模组编程 (文华财经wh9)
来源:文华财经  日期:2018-5-21 18:38
 请问我如何在MQ里面实现一根K线只有一个操作,或平仓,或开仓,

比如:

C>REF(H,1), BK(1);

谢谢
技术人员回复
日期:2018-5-21 18:59
 MQ软件默认一根K线最多一根信号,不需要特殊编写的


投资者咨询:MQ模组编程 (文华财经wh9)
来源:文华财经  日期:2018-5-21 18:38
 谢谢
投资者咨询:MQ模组编程 (文华财经wh9)
来源:文华财经  日期:2018-5-21 18:38
 您好,如果我用了A_SendOrder命令以后,程序就不是默认的一根K线一个信号。如图


图片点击可在新窗口打开查看
请问我应该怎么改,谢谢
技术人员回复
日期:2018-5-22 9:39

 没有特殊编写时,使用A_SendOrder每笔行情都进行一次判断

 

不受主图信号的影响,您可以将完整的源码发送上来我们针对您的编写做修改

投资者咨询:MQ模组编程 (文华财经wh9)
来源:文华财经  日期:2018-5-21 18:38
 //参数
Params

//局部变量
Vars        

Begin

    if(Q_Last > REF(High, 1) And A_BuyPosition == 0)                    
    {
        A_SendOrder(Enum_Buy,Enum_Entry,1,Price("RiseLimit"));
    }
    
    if(Q_Last > REF(High,1) And A_BuyPosition > 0 And Q_Last > A_BuyAvgPrice * 1.0015)
    {    
        A_SendOrder(Enum_Buy,Enum_Entry,1,Price("RiseLimit"));
    }    

    if(Q_Last < REF(Low,1) And A_SellPosition == 0)        
    {        
        A_SendOrder(Enum_Sell,Enum_Entry,1,Price("FallLimit"));       
    }

    if (Q_Last < REF(Low,1) And Q_Last < A_SellAvgPrice * 0.9985 And A_SellPosition > 0)
    {    
            A_SendOrder(Enum_Sell,Enum_Entry,1,Price("FallLimit"));
    }

//平仓操作
    
    if( A_TotalPosition > 0 And A_PositionProfitLoss >= A_TotalPosition * 30)
    {            
        A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Price("FallLimit"));
        A_SendOrder(Enum_Sell,Enum_ExitToday,A_BuyPosition,Price("FallLimit"));
        A_SendOrder(Enum_Buy,Enum_ExitToday,A_SellPosition,Price("RiseLimit"));
        A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Price("RiseLimit"));
    }

End 
技术人员回复
日期:2018-5-22 10:06

需要一根K线开一次仓,1楼思路可以改写为K线图公式来实现

 

此外,清仓部分使用持仓盈亏与总持仓数量*30作比较,有逻辑上的错误需要您考虑一下

 

其他修改参考:

 

 //参数
Params

//局部变量
Vars       

Begin

    if(Close > REF(High, 1) And MarketPosition == 0)                    
    {
       Buy(1,Limit_Order);
    }
   
    if(Close > REF(High,1) And MarketPosition == 1 And Close > BKPriceAv* 1.0015)
    {   
      Buy(1,Limit_Order);
    }   

    if(Close < REF(Low,1) And MarketPosition == 0)        
    {       
      SellShort(1,Limit_Order);
    }

    if (Close< REF(Low,1) And Close <SKPriceAv * 0.9985 And MarketPosition == -1)
    {   
      SellShort(1,Limit_Order);
    }

//平仓操作
 /*  
    if(    MarketPosition <> 0  And A_PositionProfitLoss >= A_TotalPosition * 30)
    {           
    
    }
*/
End 

投资者咨询:MQ模组编程 (文华财经wh9)
来源:文华财经  日期:2018-5-21 18:38
 您的这个模型可以在平仓前开反向仓吗?
投资者咨询:MQ模组编程 (文华财经wh9)
来源:文华财经  日期:2018-5-21 18:38
 此外,清仓部分使用持仓盈亏与总持仓数量*30作比较,我的原意是每手持仓必须有有30的盈利。这个逻辑在WH8的算法编辑里面是可以通过的,请问MQ我需要怎么修改。谢谢

技术人员回复
日期:2018-5-22 11:02

 K线图公式无法实现锁仓思路,如果需要锁仓在6楼源码的基础上

 

需要限制加仓的次数,来避免多次重复开仓:

 

 //参数
Params

//局部变量
Vars       

Begin

    if(Q_Last > REF(High, 1) And A_BuyPosition == 0)                    
    {
        A_SendOrder(Enum_Buy,Enum_Entry,1,Price("RiseLimit"));
    }
   
    if(Q_Last > REF(High,1) And A_BuyPosition <= 3 And Q_Last > A_BuyAvgPrice * 1.0015)
    {   
        A_SendOrder(Enum_Buy,Enum_Entry,1,Price("RiseLimit"));
    }   

    if(Q_Last < REF(Low,1) And A_SellPosition == 0)        
    {       
        A_SendOrder(Enum_Sell,Enum_Entry,1,Price("FallLimit"));       
    }

    if (Q_Last < REF(Low,1) And Q_Last < A_SellAvgPrice * 0.9985 And A_SellPosition <= 3)
    {   
            A_SendOrder(Enum_Sell,Enum_Entry,1,Price("FallLimit"));
    }

//平仓操作
   
    if( A_TotalPosition > 0 And A_PositionProfitLoss >= A_TotalPosition * 30)
    {           
        A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Price("FallLimit"));
        A_SendOrder(Enum_Sell,Enum_ExitToday,A_BuyPosition,Price("FallLimit"));
        A_SendOrder(Enum_Buy,Enum_ExitToday,A_SellPosition,Price("RiseLimit"));
        A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Price("RiseLimit"));
    }

End