Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1051
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Non capisco dove sia la risposta. Voglio dire questo: "La funzione integra il controllo dello stato della bandiera di stop dell'Expert Advisor ogni 0,1 secondi"? Se è così, come si può rimuovere questa bandiera?
No, se avessi letto fino alla fine, avresti visto la risposta alla risposta...
Nota
La funzione Sleep() non può essere chiamata da indicatori personalizzati, poiché gli indicatori sono eseguiti nel thread dell'interfaccia e non devono rallentarlo. La funzione ha un controllo incorporato dello stato del flag di arresto dell'esperto ogni 0,1 secondi. La funzione Sleep() nel tester della strategia non causa alcun ritardo.
Comincia attaccando questo alla fine dell'indicatore. Una volta che vedi il marchio sullo schermo, cerca di capire come metterci quello che vuoi. Qui ti danno dei consigli, ma devi metterlo da solo.
int Numero=25;
se(H==H1&&H1==H2)
{if(J == true) {ObjectCreate(PatternText[shift],
OBJ_TEXT, 0, Time[shift1], High[shift1] + Range*5);
ObjectSetText(PatternText[shift], "pattern", 10, "Arial", Red);
downArrow[shift1] = High[shift1] + Range*0.5;}if(setalert == 0 && Alert == true) {pattern = "pattern";setalert = 1;}}
if(ObjectFind(0, "Text")<0) // controlla l'etichetta di uscita
{
ObjectCreate("Text", OBJ_LABEL, 0, 0, 0); // creazione
ObjectSet("Text", OBJPROP_CORNER, 1); // Angolo superiore destro
ObjectSet("Text", OBJPROP_XDISTANCE, 10); //X
ObjectSet("Text", OBJPROP_YDISTANCE, 10); //Y
}
ObjectSetText("Text", string(number), 14, "Arial",Black); // Output all'etichetta
}
ritorno(0);
}
Il problema è risolto in modo molto più semplice.
StringLen("tickEURUSD")
È certamente più facile con esso.... Forse mancava all'epoca, o si è perso... Manca decisamente nel mio TurboPascal preferito. Facevo la moltiplicazione dei logaritmi.
Per un po' di tempo dopo il passaggio a mql4 aggiornato c'era un bug nella documentazione. Cliccando su MathLog10 si è aperto l'aiuto di MathLog
Ho scritto a servicedesk a questo proposito, ma hanno sistemato la metà e lasciato l'altra metà...
log(10) non è davvero 1, ma il fatto che mql non abbia un logaritmo decimale mi sorprende...
Che cos'è allora? https://docs.mql4.com/ru/math/mathlog10 anche se c'è un errore nel testo.
La questione è molto più facile da risolvere.
Risponderò direttamente dall'ultimo post.
Cosa sono i logaritmi ho capito, non ho capito a cosa serve in quel codice, ma dopo la corrispondenza tua e di quel compagno ho capito che è per i decimali, giusto?
Non si potrebbe fare in un altro modo? Perché questo nel codice(int) ? Perché il tuo modo è migliore della linea che ho fornito?))
grazie mille)
Risponderò dall'ultimo messaggio.
Ho capito cosa sono i logaritmi, non ho capito perché in quel codice, ma dopo la corrispondenza tua e di quel compagno ho capito che serve per determinare il numero di cifre decimali, giusto?
Non si potrebbe fare in un altro modo? Perché questo nel codice(int) ? Perché il tuo modo è migliore della linea che ho fornito?))
grazie mille)
Sì, per determinare il numero di cifre decimali. Questo è necessario per normalizzare il valore del lotto se il lotto è definito da qualche formula e il risultato può avere più cifre decimali del consentito. In alcuni casi, si potrebbe semplicemente mettere un deuce, ma poi si potrebbe incontrare un errore, quindi è meglio definirlo programmaticamente.
C'è un altro modo di farlo. Ci sono due modi per risolvere questo problema: uno è convertire il numero in una stringa, definire la lunghezza della stringa, trovare l'indice del carattere punto e la differenza tra la lunghezza della stringa e l'indice del carattere punto sarà valutata come parte frazionaria del numero. E sul forum mql5, si possono trovare diverse varianti, alcune più sottili, altre più facili.
Ecco un'altra variante.
Questa funzione definisce il numero di cifre decimali di qualsiasi numero.
L'algoritmo è scandalosamente semplice, dovremmo considerare quante volte il residuo della divisione per 1 sarà maggiore di zero.
Non ho detto che il mio modo è migliore. Ogni programmatore scrive come vede la soluzione del problema.
Un numero di tipo double, anche se non ha cifre significative nella parte frazionaria è come, per esempio, 2.0, che non è del tutto corretto, e per ottenere un intero normale viene convertito implicitamente al tipo int.
Nota
La funzione Sleep() non può essere chiamata da indicatori personalizzati, poiché gli indicatori sono eseguiti nel thread dell'interfaccia e non devono rallentarlo. La funzione ha un controllo incorporato dello stato della bandiera di arresto dell'esperto ogni 0,1 secondi. La funzione Sleep() nel tester della strategia non causa alcun ritardo.
Tutti sono così intelligenti che fa paura guardarli. Ho scritto che lo slittamento è stato ignorato nello Strategy Tester (che è chiaro), ma tutte le posizioni sono aperte come ho specificato. Ma sul demo slip non funziona, e la posizione è aperta solo una, e che si chiude immediatamente. Questo è il problema che non posso risolvere.