Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 884
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
Buon pomeriggio, signori. )) le scuse per il dilettantismo...
Non capisco come funziona OrderClose :(
Ho bisogno di un massimo di 1 ordine, cioè prima di aprirne uno nuovo, voglio che il precedente sia chiuso...
Perché non funziona così?
OrderClose(nom, 0.01, Bid,5, Red);
OrderSend(Symbol(), OP_SELL, 0.01 , NormalizeDouble(Bid,5), 3 , NormalizeDouble(Ask+0.0005,5), NormalizeDouble(Bid-0.0008,5), "", nom,0,Red);
il registro è fondamentalmente imprecare su un biglietto non valido.
in OrderClose invece di nom, cosa dovrei mettere? o sto pensando nella direzione sbagliata?)
Prova minStopLoss = Prezzo corrente +/- (MaxValue(2*Spread, StopLoss));
L'ho studiato, ma niente di nuovo, apparentemente è (nuovo per me) naturalmente, ovvio per tutti gli iniziati, autoesplicativo. Non ho trovato nulla di nuovo, tranne la caratteristica sopra descritta della disposizione reciproca dei buffer durante l'indicizzazione. Questa sequenza rispettata, ha ottenuto un'immagine ancora più ridicola.
Immagini qui sotto, file allegato
Forse siete molto sfortunati, ma non mi piace curiosare nel codice degli altri. Tanto più quando si tratta di ripararlo...
La prossima domanda: quanto spesso pensate che il valore dell'indicatore sarà esattamente 50?
ColorHistogram_2Buffer1[i]=50;
Per come ho capito il problema, dovrebbe essere un colore >50 e un altro <50, ma non ho visto ==50. Naturalmente, per eliminare la perdita nel caso ==50, dobbiamo aggiungere a uno dei confronti >=50 o l'altro <=50, come la religione permette. Può sembrare meglio.
E la seconda domanda: quanto pensate sia stato necessario cambiare tutta l'indicizzazione dei buffer? Dopo la reindicizzazione, hai sistemato tutto esattamente nel codice? Forse sarebbe più facile fare il buffer colore indice 4, e i buffer ausiliari 5 e 6 di conseguenza. Ci sarebbe meno bisogno di modificare e meno possibilità di fare qualche errore in più.
L'ho provato. Due spread è 24, non funzionerà così, inizia a lavorare a 19 dal prezzo di chiusura. Dal prezzo aperto corrente funziona con tre spread.
Controllato. Opere
Tutto questo è strano, dice lo stesso minStopLoss = Current Price +/- (MaxValue(2*Spread, StopLoss)), solo che sotto Current Price si intende non il prezzo aperto dell'ordine ma il prezzo speculare.
Perché il doppio spread è adatto?
Sorgono altre due domande.
1. Perché SymbolInfoInteger è usato per ottenere i valori Digits() e Point(); ?
2. Perché si usa una voce (int) prima di chiamare la funzione SymbolInfoInteger? Da quanto ho capito, si tratta di una conversione forzata.
Controllato. Funziona
Tutto questo è strano, scrivono ancora lo stesso minStopLoss = Current Price +/- (MaxValue(2*Spread, StopLeval)) ma il Current Price non è il prezzo di apertura dell'ordine ma il prezzo speculare.
Perché il doppio spread è adatto?
Sorgono altre due domande.
1. Perché SymbolInfoInteger è usato per ottenere i valori Digits() e Point(); ?
2. Perché si usa una voce (int) prima di chiamare la funzione SymbolInfoInteger? Da quanto ho capito, si tratta di una conversione forzata.
Per ottenere Point() SymbolInfoInteger non funzionerà in alcun modo).
In generale, è necessario ricordare che Point() o _Point è solo per il simbolo corrente. Per i caratteri diversi da quello su cui lavora l'EA, è necessario utilizzare questa stessa funzione.
La funzione SymbolInfoInteger restituisce non solo valori int, ma anche long, bool ed enumerazioni.
Sergey Voytsekhovsky, grazie per il tuo aiuto. E un'altra domanda, se non ti dispiace, per favore suggerisci la funzione inversa alla funzioneCharToStr
(per ottenere un codice da un simbolo), perché ho funzioni per questo in Beisic e Delphi, ma in C++, per quanto ne so, ci sono due metodi:
1 - FunzioneAscii_cod, che non è in mql4
2. - Conversione diretta del tipo. Ma il mio codice è
stringa st="A";
Stampa ("Codice carattere A=",(int)st);
Emette testo Codice carattere A=0.
Cosa fare?
Sergey Voytsekhovsky, grazie per il suo aiuto. E un'altra domanda, se non ti dispiace, potresti suggerire la funzione inversa della funzioneCharToStr
(per ottenere il suo codice da un simbolo), dato che ho usato Beisic e Delphi, hanno funzioni per questo, mentre in C++, come ho capito, hanno due metodi:
1 - FunzioneAscii_cod, che non è in mql4
2. - Conversione diretta del tipo. Ma il mio codice è
stringa st="A";
Stampa ("Codice carattere A=",(int)st);
Emette testo Codice carattere A=0.
Cosa fare?
StringToCharArray, a differenza della funzione wiki, non converte solo un carattere alla volta, ma può convertire una stringa in un array di tipo ucar con i codici di tutti i caratteri della stringa.
Anche mql4 ha una tale funzione.
Per ottenere Point() SymbolInfoInteger non funzionerà in alcun modo).
In generale, è necessario ricordare che Point() o _Point è solo per il simbolo corrente. Per i caratteri diversi da quello su cui lavora l'EA, si dovrebbe usare questa funzione.
La funzione SymbolInfoInteger restituisce non solo valori int, ma anche long, bool ed enumerazioni.
In realtà Point ha valore doppio. Questo significa che dovremmo chiamarlo da SymbolInfoDouble
Beh, Point in realtà ha un valore doppio. Significa che la richiesta dovrebbe essere fatta da SymbolInfoDouble
Si tratta di queste funzioni per MQL4 dal post #65:
Non ho visto dove Point si ottiene tramite SymbolInfoInteger()
Si tratta di quelle funzioni MQL4 del post #65:
Non ho visto dove Point si ottiene tramite SymbolInfoInteger()
Sì, lo stesso. Siamo scivolati attraverso di essa. L'importante è che capisca come stanno le cose...