Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1030

 
Sabit Dosaev:
Domanda semplice. Il gufo non si compila. C'è un errore alla fine del codice. + __FUNCSIG__
+ ": "+Market_Err_To_Str(errIndex)
+ "; biglietto d'ordine = " + (string)OrderTicket()
+ "; tipo di ordine = " + (string)OrderType()
+ "; ordine Stop Loss = " + DoubleToStr(OrderStopLoss(), Digits())
+ "; nuovo Stop Loss = " + DoubleToStr(newStopLoss, Digits())
+ "; Bid = " + DoubleToStr(Bid, Digits())
+ "; Ask = " + DoubleToStr(Ask, Digits())
);
}
}
lastSetNonlosTryTime = TimeLocal();
}


Lancia un errore di compilazione. Per favore aiutate se potete. Grazie!

Inserire il codice correttamente:


И... non è chiaro dal pezzo di codice quale sia il tuo errore. Il codice dovrebbe essere riproducibile.

 
string LastComm(int a_magic_0)
  {
   int l_hist_total_4 = OrdersHistoryTotal();
   int l_datetime_8 = 0;
   int l_datetime_12 = 0;
   string ls_ret_16 = "0";
   for(int l_pos_24 = 0; l_pos_24 < l_hist_total_4; l_pos_24++)
     {
      OrderSelect(l_pos_24, SELECT_BY_POS, MODE_HISTORY);
      l_datetime_8 = OrderCloseTime();
      if(l_datetime_8 > l_datetime_12 && OrderMagicNumber() == a_magic_0)
        {
         l_datetime_12 = l_datetime_8;
         ls_ret_16 = OrderComment();
        }
     }
   return (ls_ret_16);
  }

@Artyom Trishkin

Come posso convertire questa funzione in MQL5 da MQL4?

 

Buon pomeriggio a tutti.

Potreste dirmi dove inserire la funzione IsConnected () per determinare lo stato della comunicazione?

Se lo inserisco all'interno della funzione OnTick(), allora c'è sempre la connessione (cioè c'è l'arrivo del tick, quindi c'è la connessione, nessun arrivo del tick (a causa della sua assenza o assenza di connessione) significa che non c'è chiamata a OnTick() e rispettivamente alla funzione che definisce lo stato di connessione IsConnected ()) Su questo è inutile inserire IsConnected () nei quadri OnTick () (quante volte non ho spento Internet, lo stesso non scrive in un file l'assenza di comunicazione)

Per questo motivo la domanda dove inserire correttamente la funzione IsConnected () o quali sono gli altri modi per determinare lo stato della connessione (solo per MT4)

Grazie!

 
Roni Iron:

Buon pomeriggio a tutti.

Potreste dirmi dove inserire la funzione IsConnected () per determinare lo stato della comunicazione?

Se lo inserisco all'interno della funzione OnTick(), allora c'è sempre la connessione (cioè c'è l'arrivo del tick, quindi c'è la connessione, nessun arrivo del tick (a causa della sua assenza o assenza di connessione) significa che non c'è chiamata a OnTick() e rispettivamente alla funzione che definisce lo stato di connessione IsConnected ()) Su questo è inutile inserire IsConnected () nei quadri OnTick () (quante volte non ho spento Internet, lo stesso non scrive in un file l'assenza di comunicazione)

Per questo motivo la domanda dove inserire correttamente la funzione IsConnected () o quali sono gli altri modi per determinare lo stato della connessione (solo per MT4)

Grazie!

OnTimer()

Документация по MQL5: Обработка событий / OnTimer
Документация по MQL5: Обработка событий / OnTimer
  • www.mql5.com
//|                                               OnTimer_Sample.mq5 | //|                        Copyright 2018, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Roman Shiredchenko:

avete una confusione di variabili e funzioni, se si tratta di una funzione, provate in questo modo:

ALT + S per il codice

Grazie

Roman Shiredchenko:

avete confusione su variabili e funzioni, se si tratta di una funzione, provate questo:

ALT + S

Sì, è una funzione.

Grazie, ma dà un errore per qualche motivo

'}' - non tutti i percorsi di controllo restituiscono un valore

anche se mi sembra di aver controllato tutto correttamente sia nel mio codice che in un template vuoto.

ALT + S - grazie, ne terrò conto

 
wolder1:

Grazie

Sì, è una funzione.

Grazie, ma per qualche motivo dà un errore

'}' - non tutti i percorsi di controllo restituiscono un valore

Anche se le parentesi sembrano essere corrette, sia nel mio codice che nel template vuoto.

ALT + S - grazie, ne terrò conto.

Una buona domanda contiene la risposta (C)

 
wolder1:

Grazie

Sì, è una funzione.

Grazie, ma per qualche motivo dà un errore

'}' - non tutti i percorsi di controllo restituiscono un valore

Anche se ho controllato tutto correttamente con le parentesi sia nel mio codice che in un template vuoto.

ALT + S - grazie.

La funzione double dovrebbe restituire un valore, non se la funzione è nulla .

se hai delle variabili definite sopra nel tuo codice, possono essere commentate + hai avuto degli spazi extra qui (Bid > = L8b)) - Ho fatto una modifica:

double lot=0; //, Lots;
//   double L0a3, L2a3, L5a3, L8a3, L0b1, L2b1, L5b1, L8b1, L0a, L2a, L5a, L8a,L0b,L2b,L5b,L8b,L0a1,L2a1,L5a1,L8a1,L0b3,L2b3,L5b3,L8b3;  
double _LOTS()
  {
   double lot=0, Lots;
   double L0a3, L2a3, L5a3, L8a3, L0b1, L2b1, L5b1, L8b1, L0a, L2a, L5a, L8a,L0b,L2b,L5b,L8b,L0a1,L2a1,L5a1,L8a1,L0b3,L2b3,L5b3,L8b3;  
   if((Ask <= L0a3) || (Ask <= L2a3) || (Ask <= L5a3) || (Ask <= L8a3) || (Bid >= L0b1) || (Bid >= L2b1) ||
      (Bid >= L5b1) || (Bid >= L8b1))
      {
       lot=(NormalizeDouble(Lots, 2));
       Print(" lot = ", lot); 
       return(lot);
      }
      
    if((Ask <= L0a) || (Ask <= L2a) || (Ask <= L5a) || (Ask <= L8a) || (Bid >= L0b) || (Bid >= L2b) ||
      (Bid >= L5b) || (Bid >= L8b))
      {
       lot=(NormalizeDouble((Lots*1.5), 2));
       Print(" lot = ", lot); 
       return(lot);
      }
     
    

   if((Ask <= L0a1) || (Ask <= L2a1) || (Ask <= L5a1) || (Ask <= L8a1) || (Bid >= L0b3) ||
      (Bid >= L2b3) || (Bid >= L5b3) || (Bid >= L8b3))      
      {
       lot=(NormalizeDouble((Lots*2.5), 2));
       Print(" lot = ", lot); 
       return(lot);
      }
    return(lot);  
  } 
 

Buongiorno.

Domanda. Nel tester, all'interfaccia lato giorno (quando passa la linea del giorno successivo) il programma dovrebbe aver piazzato un ordine pendente. L'ordine pendente che era già presente e il prezzo l'ha toccato, è stato aperto ma l'istruzione di aprire un altroordine pendente è stata ignorata dal sistema per qualche motivo. Può succedere anche in un conto reale dove la richiesta del robot viene ignorata e quindi non viene eseguita nessuna azione?


E un'altra domanda. Sto eseguendo uno Strategy Tester ma sono stato molto confuso dal fatto che va una settimana circa nella visualizzazione e poi visualizza il seguente messaggio

177564 eventi tick (447 barre, 7888506 stati delle barre) processati in 0:17:42.694 (tempo totale 0:17:48.217)

177564 eventi tick (447 barre, 7888506 stati delle barre) processati in 0:17:42.694 (tempo totale 0:17:48.217)

Non capisco, è troppo occupato per continuare a fare test? O è così premuroso e preoccupato delle risorse del mio computer? Non vedo alcun messaggio di errore. Semplicemente termina da solo. Anche se ho fissato la data non a 7 giorni, ma a 7 mesi. Mi piacerebbe vedere l'intero percorso di prova dall'inizio alla fine.

Quale religione non gli permette di testare visivamente per esempio un anno o diversi anni? E puoi vedere visivamente come ha funzionato il tuo programma durante l'anno precedente, per esempio.


E un'altra domanda. (Anche se può essere senza risposta)) ) Come può accadere che il tester 2 giri che funziona come dovrebbe, e appena prima della suddetta iscrizione il giorno semplicemente ignora tutte le istruzioni. Come è possibile che il programma abbia funzionato correttamente per diversi giri (ordini aperti e poi chiusi), e poi, boom, ignora tutto. Non si apre né si chiude. È a causa della fine di un periodo di test o ci sono altre ragioni?

 

Buon pomeriggio!!!

Ho bisogno del tempo dell'ultimo ordine chiuso.

Ho scritto una funzione, ma non funziona correttamente.

//+------------------------------------------------------------------+

//| Ora dell'ultimo ordine chiuso

//+------------------------------------------------------------------+

doppio Last_Ticets_Close()

{

Last_Ticet = 0;

Last_OrClTime = 0;


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

{

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY ))

{

if(OrderSymbol()==Symbol() && OrderMagicNumber()==magico)

{

se(Last_Ticet<OrderTicket())

{

Last_Ticet = OrderTicket();

Last_OrClTime = OrderCloseTime();

}

}

}

}

ritorno (Last_Ticet);

}

Qualcuno può dirmi cosa c'è che non va.

 
142vs:

Buon pomeriggio!!!

Ho bisogno del tempo dell' ultimo ordine chiuso.

Ho scritto un f-iio, ma non funziona correttamente.

Qualcuno può suggerire cosa c'è di sbagliato.

quando si cerca un orario successivo, confrontare gli orari, non i biglietti

Motivazione: