Errori, bug, domande - pagina 1921

 

Errore di compilazione

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
}

Viene compilato un record

         f<int,char>( ch ); //(2)
che contiene informazioni ridondanti e inoltre ambiguità se ch non è char. Inoltre, nelle macro l'informazione sul tipo ch non è generalmente disponibile (dipende dal contesto)
 
A100:

Errore durante la compilazione

È possibile farlo nei professionisti?

 
Комбинатор:

È permesso nei plus?

C++ compila entrambe le varianti, ma la (1) sembra più corretta e intuitiva. In (2), è necessario tenere a mente anche i tipi, il che è scomodo e invece di semplificare si ottiene un'eccessiva complicazione, che si vede chiaramente se <> ha diversi typename
 

nessun avviso sparisce, provato tutto, letto tutto, nessun avviso sul sito web μl solo sul terminale...


 
Vladimir Pastushak:

Gli avvisi non vanno via, ho provato di tutto, ho letto di tutto, non ci sono avvisi sul sito μl, solo sul terminale...

Questo è stato il caso fin dall'inizio.

C'era un thread qui che scopriva quale file cancellare per farli spuntare come letti. Ma poi i "fantasmi" appaiono ancora.

 
Salve. Potete dirmi perché le quotazioni dell'oro sulla demo mancano sempre più spesso?
 

I file .log %AppData%\MetaQuotes\Terminal\...\MQL5\Logs\YYYYMMDD.log non sono aggiornati prontamente

L'aggiornamento avviene solo: dopo aver riavviato il terminale o selezionato il menu View. Se non si riavvia o si clicca su Anteprima, il file corrispondente sarà vuoto.

Tutto funzionava prima (anche il file YYYYMMDD.log aperto in MetaEditor veniva aggiornato in pochi secondi dopo la visualizzazione delle righe nella scheda Experts) e non era necessario eseguire azioni extra non ovvie

 

Buona notte! Il mio Expert Advisor ha RSI e STO, ma non posso far aprire un segnale di acquisto o di vendita su una nuova candela, e non su quella attuale!

il codice è così:

void OnTick(){

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

se (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
ritorno;

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);

doppio SL=0,TP=0;

se (RSI1 < RSIDownLevel && RSIDownLevel < RSI0 && STO2 < STO0){

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

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

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

ritorno(0);
}


Di nuovo, devo ripetere che il mio ordine è attivato dall'apertura sulla candela corrente, e ho bisogno che l'ordine si apra sulla prossima! Per favore aiutatemi!!!

 
sviter-pro:

Buonanotte! Il mio Expert Advisor ha RSI e STO, ma non riesco a farlo aprire su una nuova candela quando scatta un segnale di acquisto o di vendita, e non su quella attuale!

Ancora una volta, il mio ordine è attivato dalla candela corrente, ma ho bisogno che l'ordine si apra sulla prossima candela!!! Aiuto per favore!!!


//+------------------------------------------------------------------+
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:

Buona notte! Il mio Expert Advisor ha RSI e STO, ma non posso fare in modo che quando un segnale di acquisto o di vendita viene attivato, si apra su una nuova candela e non su quella corrente!

il codice è così:

Di nuovo, devo ripetere che il mio ordine è attivato dall'apertura sulla candela corrente, e ho bisogno che l'ordine si apra sulla prossima! Per favore aiutatemi!!!

Si prendono i valori dell'indicatore dalle barre 0 e 1.

Invece di 0 e 1 prendete i valori di 1 e 2 rispettivamente.