Problema dei terminali globali

 

Ehi, gente

Ho qualcosa in corso che sta per farmi dire addio alla programmazione MT. Il problema è nel cercare di impostare i terminali globali. Quello che sto facendo è qualcosa del genere:

BuyEntrySignalGiven = Symbol() + "BuyEntrySignalGiven";
GlobalVariableSet(BuyEntrySignalGiven, (double) 1.0);

Il set continua a darmi un errore 4051. Il primo parametro è una stringa, il secondo un doppio come dovrebbero essere. Perché continua a sostenere che un tipo di parametro non è valido è oltre me. Entrambi i parametri sono del tipo corretto. Non capisco perché faccia saltare un fusibile quando i parametri sono corretti. Sono uno sviluppatore di software personalizzato per mestiere e avevo intenzione di aggiungere le applicazioni MT alla mia offerta. Se la piattaforma è inaffidabile, non la tocco. Qualcosa di squinternato mi farà solo fare brutta figura e sabotare il mio business. Se qualcuno ha delle intuizioni da offrire, gliene sarei molto grato.

Molte grazie,

Prof

 
GlobalVariableSet(BuyEntrySignalGiven, (double) 1.0);

Rimuovere la dichiarazione di doppio. GV è già doppio, quindi non c'è bisogno di dichiararlo di nuovo.



BuyEntrySignalGiven = Symbol() + "BuyEntrySignalGiven";

Anche questo codice è problematico. Qualcun altro ve lo indicherà, se avrà il tempo.

 
ProfessorMetal:

Ehi, gente

Ho qualcosa in corso che sta per farmi dire addio alla programmazione MT. Il problema è nel cercare di impostare i terminali globali. Quello che sto facendo è qualcosa del genere:

Il set continua a darmi un errore 4051. Il primo parametro è una stringa, il secondo un doppio come dovrebbero essere. Perché continua a sostenere che un tipo di parametro non è valido è oltre me. Entrambi i parametri sono del tipo corretto. Non capisco perché faccia saltare un fusibile quando i parametri sono corretti. Sono uno sviluppatore di software personalizzato per mestiere e avevo intenzione di aggiungere le applicazioni MT alla mia offerta. Se la piattaforma è inaffidabile, non la tocco. Qualcosa di squinternato mi farà solo fare brutta figura e sabotare il mio business. Se qualcuno ha delle intuizioni da offrire, gliene sarei molto grato.

Molte grazie,

Prof

Non ho problemi con questo codice:

string BuyEntrySignalGiven = Symbol() + "BuyEntrySignalGiven";
GlobalVariableSet(BuyEntrySignalGiven, (double) 1.0);     
Quale build stai usando? Come riprodurre il tuo problema?
 
Sto pensando che è una costruzione più vecchia.
 

Il doppio getto non c'era originariamente. L'ho aggiunto a causa dell'errore. Il secondo parametro dovrebbe essere un doppio. Il mio background è C++/C# e mi aspettavo che sarebbe stato sufficiente inserire semplicemente l'argomento come 1.0. Ho aggiunto il cast perché la chiamata è fallita e non ero sicuro che fosse qualche idiosincrasia di MQL4. Ho già visto che MQL4 non gioca sempre secondo le regole previste. Per quanto riguarda l'assegnazione delle stringhe, ho un altro indicatore che ho scritto che segue lo stesso formato e funziona perfettamente. Non ci vedo nulla di problematico. Symbol() restituisce una stringa, la concatenazione è con una stringa, che è perfettamente accettabile, e la variabile a cui viene assegnata l'espressione è anch'essa una stringa. L'unica cosa che posso vedere che potrebbe essere un problema è concatenare il simbolo di coppia con una stringa che è la stessa del nome GV. Questo non dovrebbe avere importanza perché la stringa "finita" non è la stessa del nome GV. Forse è questo il problema. Se lo è, perché non dirlo?

Comunque, grazie per la risposta

Prof

 

In realtà MetaQuotes ha detto che non ci si può aspettare lo stile e le regole di codifica C++/C# in MQL4/5.


A proposito, non hai risposto alla domanda del moderatore.

 

Interessante, ragazzi. Sto eseguendo la Build 646. Non credo che sia questo il problema. Uh - Penso di aver appena capito. Sono io che sono stanco e stupido. I nomi GV sono impostati in un metodo che volevo chiamare da OnStart() e non l'ho fatto. DUH! Schiaffeggia lo stupido americano e digli di andare a letto e dormire un po' prima che provi a scrivere altro codice. Sono in piedi da circa 36 ore. Voi mi avete sicuramente aiutato ispirandomi a fare un passo indietro e dare un'altra occhiata a quello che stavo facendo. Molte grazie e Buona notte, Buon giorno - qualunque cosa sia dove siete. :-)

Prof

 
Ho risposto, deysmacro. Non hai dato il tempo alla mia risposta di apparire. Come ho detto, è praticamente un non problema. Il problema è stato un errore da principiante da parte mia dovuto alla stanchezza. BTW, so che non tutte le cose in MQL4/5 funzionano come in C++/C#. Ricordo, tuttavia, di aver visto una dichiarazione secondo cui parte dell'intenzione dei cambiamenti in MQL4/5 è di renderlo più simile al C++. La documentazione potrebbe essere un po' meglio organizzata e più approfondita. Per essere giusti, lo stesso si può dire di Microsoft.
 
In realtà è abbastanza semplice. Se ti insegnano o mettono una documentazione accurata, ad un certo punto, ... ... ... ...
 

Per essere giusti con MetaQuotes, quello che stanno facendo non è banale. Ho il sospetto che insegnare a se stessi sarà sempre la norma. Ad essere onesti, questo è normale per uno sviluppatore professionista. Fa parte del territorio. La documentazione e l'interazione con altri sviluppatori è tipicamente l'unico "insegnamento" che si ottiene. C'est la vie. :-)

Sto ancora cercando di capire come far funzionare il nuovo debug per MQL4. Ho seguito quello che pensavo che la documentazione mi dicesse di fare. Quando ho provato ad avviare il debugger, è apparsa una finestra H1 e la finestra delle proprietà dell'indicatore di cui stavo cercando di eseguire il debug. Quando ho dato l'OK alla finestra di dialogo, il debugger si è chiuso e la finestra è scomparsa. Oh, bene. Questo è un argomento per un altro thread, sospetto.

 
ProfessorMetal:

Per essere giusti con MetaQuotes, quello che stanno facendo non è banale. Ho il sospetto che insegnare a se stessi sarà sempre la norma. Ad essere onesti, questo è normale per uno sviluppatore professionista. Fa parte del territorio. La documentazione e l'interazione con altri sviluppatori è tipicamente l'unico "insegnamento" che si ottiene. C'est la vie. :-)

Sto ancora cercando di capire come far funzionare il nuovo debug per MQL4. Ho seguito quello che pensavo che la documentazione mi dicesse di fare. Quando ho provato ad avviare il debugger, è apparsa una finestra H1 e la finestra delle proprietà dell'indicatore di cui stavo cercando di eseguire il debug. Quando ho dato l'OK alla finestra di dialogo, il debugger si è chiuso e la finestra è scomparsa. Oh, bene. Questo è un argomento per un altro thread, sospetto.


Era un bug di lunga durata, che avrebbe potuto essere evitato selezionando un altro pannello del dialogo di input rispetto alle voci di input. Allora l'esecuzione successiva riusciva. Con la 646 sembra risolto. Purtroppo non ci sono molte informazioni di questo tipo su questo sito. Di solito la maggior parte dei problemi finisce con "report to service desk" senza alcuna traccia aggiuntiva.

Motivazione: