[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 584

 
Ekburg:

e questa condizione non aiuta...

Beh, allora non lo so. Devi guardare attraverso il codice, non solo la funzione, ma l'intero programma, inserire il controllo degli errori, stampare i valori delle variabili e l'ultimo errore e cercare una specifica posizione di errore nel codice. Quando facevo il debugging dei miei programmi, se erano piuttosto grandi (circa 1000 linee), a volte mi ci volevano settimane, cioè più tempo di quando li scrivevo.
 

Ciao a tutti!

Sto guardando un esempio da un libro di testo. Non riesco a capire quale funzione fa la seguente condizione:

ObjectSet(His_Name,OBJPROP_RAY,  false);  

Ho allegato io stesso il codice. L'Expert Advisor colora le ultime n barre.

Per favore, aiutatemi a capirlo.

File:
strings.mq4  7 kb
 
rigonich:


void,int,bool che precedono una funzione inizializzata, indicano il tipo di variabile, il cui valore viene restituito dalla funzione al programma in modo che il programma possa continuare a lavorare con essa.void indica che la funzione non restituisce alcun valore (se il risultato della funzione è, per esempio, chiudere o aprire ordini, o cambiare valori di variabili globali, non dovrebbe restituire valori, perché

Per quanto riguarda l'ALTRAlingua, esiste una versione inglese del forum. La lingua è semplicemente un insieme di regole e in una certa lingua ci sono nomi comuni per oggetti e fenomeni. Se usi nomi che non sono comuni, ma quelli che preferisci, non sarai capito.


Penso di aver capito :)) grazie :))
 
Sergstuddek:
L'essenza del lavoro dell'EA è semplice: ad una certa ora (dalle 01.00 alle 10.00) determina il prezzo minimo e massimo e mette gli ordini pendenti


Ho già visto il tuo codice e non so cosa dire. Come ha dettoTarasBY sopra, è più facile dire ciò che è giusto in esso:

Come ti ho detto sopra - le funzioni Seconds(),Minute(),Hour() restituiscono l'ora di inizio del server, e in questa condizione se (Hour()==10), la tua funzione non funzionerà se non hai iniziato il tuo Expert Advisor alle 10. Si hanno sempre queste condizioni. Leggete attentamente la descrizione delle funzioni nella Guida.

2.if (TIMECLOSEHIGH19>TIMEOPENLOW19) e if (TIMECLOSELOW19<TIMEOPENHIGH19) -- queste sono condizioni che funzioneranno sempre.

3. Non scrivete 3 o 4 funzioni quasi identiche in un programma, fate una sola funzione e passatele i parametri richiesti quando la chiamate. Questo non è un errore, ma rende il vostro codice ingombrante e difficile da leggere.

4) Usate qualsiasi, ma sempre lo stesso sistema di disposizione dei caratteri di sintassi (spazi, tabulazioni, interruzioni di riga, parentesi), altrimenti vi confonderete e gli altri saranno confusi.

Questo è abbastanza per ora, aggiustatelo e poi vedremo.

 
Pacman:

Ciao a tutti!

Sto guardando un esempio da un libro di testo. Non riesco a capire quale funzione fa la seguente condizione:

Ho allegato io stesso il codice. Expert Advisor colora le ultime n barre.

Per favore, aiutatemi a capire.


doppio ObjectGet( stringa nome, int prop_id)
La funzione restituisce il valore della proprietà dell'oggetto specificato. ChiamaGetLastError() per ottenere informazioni sugli errori.
Vedere anche ObjectSet().
Parametri:
nome - nome dell'oggetto.
prop_id - Identificatore della proprietà dell'oggetto. Può essere uno qualsiasi dei valori nella lista delle proprietà dell'oggetto.
 
rigonich:


Ho guardato il tuo codice, non so cosa dire. Come ha dettoTarasBY sopra, è più facile dire ciò che è giusto in esso:

Come ti ho detto sopra - le funzioni Seconds(),Minute(),Hour() restituiscono l'ora di inizio del server, e in questa condizione se (Hour()==10), la tua funzione non funzionerà se non hai iniziato il tuo Expert Advisor alle 10. Si hanno sempre queste condizioni. Leggete attentamente la descrizione delle funzioni nella Guida.

2.if (TIMECLOSEHIGH19>TIMEOPENLOW19) e if (TIMECLOSELOW19<TIMEOPENHIGH19) -- queste sono condizioni che funzioneranno sempre.

3. Non scrivete 3 o 4 funzioni quasi identiche in un programma, fate una sola funzione e passatele i parametri richiesti quando la chiamate. Questo non è un errore, ma rende il vostro codice ingombrante e difficile da leggere.

4) Usate qualsiasi, ma sempre lo stesso sistema di disposizione dei caratteri di sintassi (spazi, tabulazioni, interruzioni di riga, parentesi), altrimenti vi confonderete e gli altri saranno confusi.

Per ora è sufficiente, sistematelo e poi vedremo.

Ti meriti un monumento! Il più grande problema nell'aiutare il "PROGRAMMATORE di domani" è che non può realizzare o anche spiegare "COSA VUOLE???", perché è IMPOSSIBILE ottenere il kolbak-insert-feel tutto allo stesso tempo!!!! :)))
 
TarasBY:
Ormai dovresti avere un monumento a te stesso! Il più grande problema nell'aiutare il "PROGRAMMATORE di domani" è che non può rendersi conto e nemmeno spiegare "cosa vuole???", perché è impossibile ottenere il kolbajl-inserto-permesso-permesso tutto in una volta!!! :)))


Come diceva Kissa Sparrowmaninov, sì.
 
rigonich:
doppio ObjectGet( stringa nome, int prop_id)
La funzione restituisce il valore della proprietà dell'oggetto specificato. È necessario chiamareGetLastError() per ottenere le informazioni sull'errore.
Vedere anche ObjectSet().
Parametri:

Tutto questo mi è chiaro. Ma quale funzione specifica svolge questa sezione di codice?
 ObjectSet(    His_Name, OBJPROP_RAY,   false); // Луч
 

Ecco quello che ho già scritto:

-------------------------------------------

int start()

{

condizione di acquisto,

l'acquisto stesso,

e modifica

ritorno(0);

}

-----------------------------------------

Il problema è che ora ho bisogno di inserire NUOVE condizioni, condizioni di chiusura, e poi chiudere se stesso, e il mio EA inizia a modificare all'infinito (stop e take sono fissi, ma il messaggio di modifica riuscita appare ad ogni tick).

Come posso ora creare un ciclo all'interno di questo inizio per le nuove condizioni e la chiusura, in modo che la prima parte dell'EA non sia influenzata fino alla sua completa chiusura?

 
rigonich:

Beh, allora non lo so. Devi guardare attraverso il codice, non solo della funzione, ma dell'intero programma, controllare gli errori lungo il percorso, stampare i valori delle variabili e l'ultimo errore e cercare una specifica posizione di errore nel codice. Quando facevo il debug dei miei programmi, se erano piuttosto grandi (circa 1000 linee) a volte mi ci volevano settimane, cioè più tempo che scriverli.


non c'è niente di sbagliato, quando non c'erano queste funzioni, tutto funzionava come un orologio! e funziona ora, ma l'errore sulla modifica si verifica nella funzione stessa

Ho un'idea, forse questo errore appare perché la funzione di modifica è nella funzione utente, non nel corpo di start()?

Motivazione: