量化交易之MQL4篇 - 跟单信号的筛选、订阅与取消信号

订阅信号的时候,要在常用选项里面全部勾选,另外订阅信号和取消订阅的时候会有延迟,需要耐心等待

#property show_inputs


void OnStart() {
    
    // 取消当前订阅的信号
    SignalUnsubscribe();
    
    // 获得信号总数
    int total = SignalBaseTotal();
    
    for(int i=total-1; i >= 0; i--) {
      
      if(SignalBaseSelect(i) == true) {
         // 信号的id, 名称, 售价, 交易次数
         int id = SignalBaseGetInteger(SIGNAL_BASE_ID);
         string name = SignalBaseGetString(SIGNAL_BASE_NAME);
         double price = SignalBaseGetDouble(SIGNAL_BASE_PRICE);
         int trade = SignalBaseGetInteger(SIGNAL_BASE_TRADES);
         
         if(price == 0 && trade > 0) {
            // 订阅之前的准备工作
            SignalInfoSetInteger(SIGNAL_INFO_TERMS_AGREE, 1);
            SignalInfoSetInteger(SIGNAL_INFO_SUBSCRIPTION_ENABLED, 1);
            SignalInfoSetInteger(SIGNAL_INFO_COPY_SLTP, 1);
            SignalInfoSetInteger(SIGNAL_INFO_CONFIRMATIONS_DISABLED, 1);
            SignalInfoSetInteger(SIGNAL_INFO_DEPOSIT_PERCENT, 20);
            
            SignalInfoSetDouble(SIGNAL_INFO_EQUITY_LIMIT, 4500);
            SignalInfoSetDouble(SIGNAL_INFO_SLIPPAGE, 1.5);
            
            // 订阅信号
            if(SignalSubscribe(id) == false) {
               Print(GetLastError());
            } else {
               Print("success");
            }
            break;
         }
         
      }
      
    }
    
}

猜你喜欢

转载自blog.csdn.net/Michael_234198652/article/details/80397712