错误、漏洞、问题 - 页 1921

 

编译错误

template<typename T1, typename T2>
void f( T2 t )
{
        Print( typename( T1 ), ":", typename( T2 ), ":", t );
}
void OnStart()
{
        char ch = 5;
        f<int>( ch ); //(1) //error: 'f' - wrong template parameters count
}

编制了一份记录

         f<int,char>( ch ); //(2)
其中包含多余的信息,而且如果ch不是char,就会产生歧义。此外,在宏中,关于ch类型的信息一般是不可用的(取决于上下文)。
 
A100:

编译时出错

有可能在专业领域做到这一点吗?

 
Комбинатор:

是否允许加号?

C++可以编译两种变体,但(1)似乎更正确和直观。在(2)中,我们也必须记住类型,这是不方便的,我们得到的不是简化,而是过度的复杂化,这在<>有几个类型名的情况下可以清楚地看到。
 

没有警报消失,尝试了一切,阅读了一切,在μl网站上没有警报,只有在终端......。


 
Vladimir Pastushak:

警报不会消失,我已经尝试了一切,我已经阅读了一切,在μl网站上没有警报,只有在终端......

这种情况从一开始就存在。

这里有一个主题,发现了要删除哪个文件才能使它们勾选为已读。但后来 "幽灵 "还是出现了。

 
你好。你能告诉我为什么演示中的黄金报价 越来越少吗?
 

.日志文件%AppData%\MetaQuotes\Terminal\...\MQL5\Logs\YYYYMMDD.log没有及时更新。

更新只发生在:重启终端或选择查看菜单后。如果你不重新启动或点击预览,相应的文件将是空的。

以前一切都正常(甚至在MetaEditor中打开的YYYYMMDD.log文件在专家标签中显示行后,也会在几秒钟内更新),而且不需要执行额外的非明显的操作。

 

晚安!我的专家顾问有RSI和STO,但我不能让买入或卖出信号在新的蜡烛上 打开,而不是在当前的蜡烛 上打开!为什么?

代码是这样的。

空白的OnTick(){

for (int i=0; i<OrdersTotal(); i++)

如果(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
如果(OrderSymbol()==Symbol() && Magic==OrderMagicNumber()
返回。

double RSI0 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 0);
double RSI1 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 1);

double STO0=iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, STO_LOWHIGH, MODE_MAIN, 0)。
double STO1=iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, STO_LOWHIGH, MODE_MAIN, 1)。

double STO2 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, STO_LOWHIGH, MODE_SIGNAL, 0)。
double STO3 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, STO_LOWHIGH, MODE_SIGNAL, 1)。

双SL=0,TP=0。

如果(RSI1 < RSIDownLevel && RSIDownLevel < RSI0 && STO2 < STO0){

如果(takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits)。
如果(stoploss!=0) SL = NormalizeDouble(Ask - stoploss* Point,Digits);
如果(OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slipage,SL,TP,NUL L,Magic)==-) Print(GetLastError())
}

如果(RSI1 > RSIUpLevel && RSIUpLevel > RSI0 && STO3 > STO1){

如果(takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits)。
如果(stoploss!=0) SL = NormalizeDouble(Bid + stoploss* Point,Digits)。
如果(OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bi d,Digits),slipage,SL,TP,NULL,Magic)==-) Print(GetLastError())
}

return(0);
}


我必须再次重复,我的订单是通过在当前蜡烛上开仓来触发的,而我需要订单在下一个蜡烛上开仓!"。请帮助我!!!。

 
sviter-pro:

晚安!我的专家顾问有RSI和STO,但我不能让它在买入或卖出信号发出后在新的蜡烛 上打开,而不是在当前的蜡烛上打开!我的专家顾问有RSI和STO。

同样,我的订单在当前的蜡烛上被触发,但我需要订单在下一个蜡烛上打开!!。


//+------------------------------------------------------------------+
void OnTick()
  {

   for(int i=0; i<OrdersTotal(); i++)
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         if(OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
            return;

   double RSI0 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 0);
   double RSI1 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 1);

   double STO0=iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, STO_LOWHIGH, MODE_MAIN, 0);
   double STO1=iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, STO_LOWHIGH, MODE_MAIN, 1);

   double STO2 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, STO_LOWHIGH, MODE_SIGNAL, 0);
   double STO3 = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, STO_LOWHIGH, MODE_SIGNAL, 1);

   double SL=0,TP=0;
   
   if(NewBar())
     {
      if(RSI1<RSIDownLevel && RSIDownLevel<RSI0 && STO2<STO0)
        {

         if(takeprofit!=0) TP=NormalizeDouble(Ask+takeprofit*Point,Digits);
         if(stoploss!=0) SL=NormalizeDouble(Ask-stoploss *Point,Digits);
         if(OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,NUL L,Magic)==-1) Print(GetLastError());
        }

      if(RSI1>RSIUpLevel && RSIUpLevel>RSI0 && STO3>STO1)
        {

         if(takeprofit!=0) TP=NormalizeDouble(Bid-takeprofit*Point,Digits);
         if(stoploss!=0) SL=NormalizeDouble(Bid+stoploss *Point,Digits);
         if(OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bi d,Digits),slippage,SL,TP,NULL,Magic)==-1) Print(GetLastError());
        }
     }

   return(0);
  }
//+------------------------------------------------------------------+
bool NewBar()
  {
   static datetime time=0;
   if(time==0)
     {
      time=Time[0];
      return false;
     }
   if(time!=Time[0])
     {
      time=Time[0];
      return true;
     }
   return false;
  }
//+------------------------------------------------------------------+
 
sviter-pro:

晚安!我的专家顾问有RSI和STO,但我不能让它在买入或卖出信号被触发时,在新的蜡烛上 打开,而不是在当前的蜡烛 上!我的专家顾问有RSI和STO。

代码是这样的。

我必须再次重复,我的订单是通过在当前蜡烛上开盘来触发的,而我需要订单在下一个蜡烛上开盘!"。请帮助我!!。

你从第0条和第1条中获取指标值。

取代0和1,分别取1和2的值。