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

 
Artyom Trishkin bandiere di visibilità del volume sui timeframe. Necessità di nascondere e visualizzare.

Ho scritto loro qualche giorno fa. Ma chi ascolta mai i buoni consigli...?

 

Forum sul trading, sistemi di trading automatico e test di strategia

Tutte le domande dei neofiti su MQL4 e MQL5, consigli e discussioni su algoritmi e codici

Mihail Matkovskij, 2021.12.03 22:27

Puoi nascondere un oggetto dal grafico e poi mostrarlo. Oppure puoi tracciare CHARTEVENT_OBJECT_CLICK - la soluzione perfetta!


Non credo ci sia bisogno di commentare ulteriormente... :)
 
Mihail Matkovskij #:
Una versione più compatta:

Non sono un programmatore e non conosco gli stili (scrivo come posso).

Mihail Matkovskij #:

Ma non avevi detto che la tua funzione pretende di essere universale...? Allora hai dimenticato un dettaglio molto importante:

const - non so cosa sia, ma funziona meravigliosamente senza.


Mihail Matkovskij #:

Sei troppo pigro per scrivere un semplice script per controllarlo? Ok. L'ho fatto per te:

Strano...

questa funzione genera false su "-n".

Non sono un programmatore o un insegnante. Sono qui per chiedere e rispondere (se lo so). Non sto cercando di mostrare la mia figa.

Se vuoi dimostrare il tuo valore, impara ad ammettere gli errori o a correggerli.

 
Mihail Matkovskij #:

Ho scritto loro qualche giorno fa. Ma chi ascolta mai i buoni consigli...?

Anch'io ho notato che i più attivi tendono ad essere ascoltati. In questo caso Makar. Di conseguenza, il problema più semplice non è stato risolto per diversi giorni.

 
Alexey Viktorov #:

Anch'io ho notato che i più attivi sono più spesso ascoltati. In questo caso Makar. Di conseguenza, per diversi giorni il compito più semplice non è stato risolto.

Alexei, il problema è stato risolto da tempo, l'uomo voleva capire perché questa particolare opzione non funziona.
 
MakarFX #:


const - Non so cosa sia, ma funziona bene anche senza.

const, è una garanzia che il valore non cambierà all'interno della funzione

Strano...

è la funzione che dà false

Credo di aver chiarito tutto. Cosa c'è che non va?

Non sono un programmatore e non sono un insegnante. Chiedo e rispondo (se lo so). Non sto cercando di mostrare la mia figa.

Se vuoi mostrare il tuo valore, è meglio che impari ad ammettere i tuoi errori o a correggerli.

Rispondo anche alle domande. E sto cercando di trasmettere come dovrebbe essere un codice ben scritto. E tu mi parli del mio ego? Credo che tu e Nerd Trader mi abbiate frainteso. Ho già detto sopra che per me conta l'importanza di conoscere la programmazione, non la mia importanza!

In linea di principio, nessuno vi insegnerà a parte la vostra volontà. Ma il codice, che è stato scritto per te, ma non ti piace, non ti va bene o non lo capisci, sarà probabilmente utile ad altri membri del forum. Quindi, se non ti piace il codice, non usarlo. Usate quello che vi piace.

 
MakarFX #:
Alexei, il problema è stato risolto da tempo, l'uomo voleva capire perché questa particolare variante non funziona.

Tutto funziona correttamente e qui stanno incasinando la testa di tutti invece di confrontare la versione giusta con quella sbagliata. :)

 
законопослушный гражданин #:

chiaramente

Per favore, consigliatemi se ho capito bene che la funzione restituisce il lotto dell'ultimo ordine chiuso ma la contabilità parte dall'inizio della lista di tutti gli ordini chiusi

double GetLotSize()
  {
   double Ls=0;
   datetime t=0;
   int i=OrdersHistoryTotal();
   for(int pos=0; pos<i; pos++)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(t<OrderCloseTime()) {t=OrderCloseTime(); Ls=OrderLots();}
              }
           }
        }
     }
   return Ls;
  }

e se lo faccio in questo modo, sarà contato dalla fine della lista?

double GetLotSize()
  {
   double Ls=0;
   datetime t=0;
   int i=OrdersHistoryTotal();
   for(int pos=0; pos>=i; pos--)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(t<OrderCloseTime()) {t=OrderCloseTime(); Ls=OrderLots();}
              }
           }
        }
     }
   return Ls;
  }
 
законопослушный гражданин #:

Potreste dirmi se ho capito bene che la funzione restituisce il lotto dell'ultimo ordine chiuso ma la contabilità parte dall'inizio della lista di tutti gli ordini chiusi

quindi se lo faccio in questo modo, sarà contato dalla fine della lista?

 
законопослушный гражданин #:

Potreste dirmi se ho capito bene che la funzione restituisce il lotto dell'ultimo ordine chiuso ma la contabilità parte dall'inizio della lista di tutti gli ordini chiusi

Se lo faccio in questo modo, il conto alla rovescia sarà fatto dalla fine della lista?

La seconda variante non funzionerà. Per fare il conteggio dalla fine della lista, dobbiamo fare quanto segue:

double GetLotSize()
  {
   double Ls=0;
   datetime t=0;
   int total = OrdersHistoryTotal();
   for(int i = total - 1; i >= 0; i--)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
        {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(t<OrderCloseTime()) {t=OrderCloseTime(); Ls=OrderLots();}
              }
           }
        }
     }
   return Ls;
  }
Motivazione: