Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1052
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
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 fanno paura. Ho scritto che lo slittamento è stato ignorato nel tester (che è chiaro), ma tutte le posizioni sono aperte finché le ho specificate. Ma sul demo slip non funziona, e la posizione è aperta solo una, e che si chiude immediatamente. Questo è il problema che non posso risolvere.
Dov'è il vostro codice?
Forse questo può aiutare?
Quanto sono tutti intelligenti - è spaventoso. Se non sapete leggere: ho scritto che lo slittamento è ignorato nel tester (che è chiaro), ma le posizioni sono tutte aperte, come indicato. Ma sul demo slip non funziona, e la posizione è aperta solo una, e che si chiude immediatamente. Non riesco a risolvere questo problema.
A quanto pare non è la prima volta che sei scortese, ecco perché nessuno ti risponde. Anche se le è già stata data una risposta alla sua seconda domanda.
Ma si poteva rispondere solo così.
È chiaro che l'offerta è invecchiata, ma speravo che questo disegno permettesse di aprire diverse posizioni sulla barra corrente con diversi prezzi di apertura dell'offerta. E funziona bene nel tester, ma nella demo apre una posizione e la chiude immediatamente.
Cosa speravi? Abbiamo offerto una soluzione. Dovreste leggerlo attentamente.
poz = OrderSend(Symbol(),OP_SELL,lot,Bid,slip,0,0,NULL,magic,Red);
Sleep(10000);
poz = OrderSend(Symbol(),OP_SELL,lot,Bid,slip,0,0,NULL,magic,Red);
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 delle mie varianti.
Questa funzione determina il numero di cifre decimali di qualsiasi numero.
L'algoritmo è scandalosamente semplice - considera quante volte il residuo della divisione per 1 è maggiore di zero.
Non ho detto che il mio modo è migliore. Ogni programmatore sta scrivendo il proprio modo di risolvere il problema.
Un numero di tipo doppio, anche se non ha cifre significative nella parte frazionaria, appare come 2,0, che non è del tutto corretto, e per ottenere un intero normale viene convertito implicitamente al tipo int.
Grazie mille.
Ma perché (int) dovrebbe essere messo prima dell'espressione?
Grazie mille.
Perché (int) è messo davanti all'espressione?
Posso aprire un grafico in un Expert Advisor da Open Offline Chart con il suo nome? Ho guardato ChartOpen() ma non funziona per nome.