初学者的问题 MQL5 MT5 MetaTrader 5 - 页 284

 
barabashkakvn:
是 "市场观察 "中的序列号还是当前价格?

市场观察中的序列号。

我明白如何用SymbolInfoString获得一个符号的 字符串描述,但我无法在任何地方找到这个数字(。

 
Crucian:

市场评论》中的一个序号。

首先

int  SymbolsTotal(
   bool  selected      // true – только символы в MarketWatch
   );

然后

string  SymbolName(
   int   pos,          // номер в списке
   bool  selected      // true – только символы в MarketWatch
   );

而一旦SymbolName==你的 符号,你就会知道它的位置

 
barabashkakvn:

首先

然后

而一旦SymbolName==你的 符号,你就会知道它的位置

谢谢你!

但由于某些原因,它并不工作,位置总是=0。也许我做错了什么,我明天早上再想办法 :)。

 
Crucian:

谢谢你!

但由于某些原因,它没有发挥作用,ros总是=0。也许我做错了什么,我明天早上再想办法 :)。

SymbolName 中,你传递位置并检查输出的串联参数。
 
Crucian:

谢谢你!

但由于某些原因,它没有发挥作用,ros总是=0。也许我做错了什么,我明天早上再想办法 :)。

//+------------------------------------------------------------------+
   int PositionsSymbolInList(string sy) {
      for(int i=0; i<SymbolsTotal(false); i++) {
         string symbol_name=SymbolName(i,false);
         if(sy==symbol_name) return i;
         }
      return -1;
   }
//+------------------------------------------------------------------+
 
Crucian:

谢谢你!

但由于某些原因,它没有发挥作用,ros总是=0。也许我做错了什么,我明天早上再想办法 :)。

//+------------------------------------------------------------------+
int IndexSymbolInMarketWatch(string sy)
  {
   for(int i=SymbolsTotal(true)-1; i>=0; i--)
     {
      if(SymbolName(i,true)==sy)
         return (i);
     }
   return (-1);
  }
//+------------------------------------------------------------------+
 
artmedia70:

谢谢你,你的代码可以使用,但paladin800的代码不可以(。

但是,这些数字中没有顺序。例如,欧元=21,英镑=28,瑞士法郎=36,日元=40,欧元/日元=16。应该是这样的吗?

 
Crucian:

谢谢你,你的代码可以工作,但paladin800的代码由于某种原因不能工作(。

但是,这些数字中没有顺序。例如,欧元=21,英镑=28,瑞士法郎=36,日元=40,欧元/日元=16。它应该是这样的吗?

SymbolsTotal(false)

它是在可用的符号列表中进行搜索,如果是真的,那么只有在市场观察中选择的那些符号。

它们在可用符号列表中的顺序就是索引的返回顺序。而如果你从MarketWatch的列表中获取(如果是真的),那么指数取决于Market Watch中的符号排序(可以用鼠标拖放),这并不总是方便的--对 "用户的顽皮笔 "有依赖性。

 

还有一个问题。

在编译MetaEditor时,它开始显示一个警告。

应检查'OrderSend'的返回值 Bollinger_Bands_strategy_4.mq5 690 7

我在发送请求后检查结果。

           OrderSend(mrequest,mresult);
            if(mresult.retcode==10009 || mresult.retcode==10008)
              { 
             
               Print("Set pending order SellStop"  );
               ModificationPosition=0;
            }else
              {
               Print(ResultRetcodeDescription(mresult.retcode));
               return;
              }

还是这些还不够? MetaEditor想要什么?

 
Crucian:

还有一个问题。

编译时,MetaEditor已经开始显示警告。

应该检查'OrderSend'的返回值 Bollinger_Bands_strategy_4.mq5 690 7
(应检查 "OrderSend "的返回值)

我在发送查询后检查结果。

还是说这还不够? MetaEditor想要什么?

if(OrderSend(...))

bool res=OrderSend(...);

不,我的错误。我已经睡着了。这是我的习惯,从我的课的功能......虽然它是为mql4准备的,就像在五-不知道...:)

int ticket=OrderSend()