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
Ecco un'altra cosa a cui pensare: fatelo!// Riporta i risultati. ;)
Sono onestamente sconcertato, ragazzi, state solo giocando alla pari. Totalmente piatto.
Volevo solo scusarmi e intromettermi in questa conversazione "seria". Ma mentre ero fuori a prendere le sigarette, sono stato battuto.
E non è che siamo dei "manichini", vero? E questo "boo-boo-boo" è stato fatto dal nulla.
Nella classe CExpert, lo correggo in ulong.
Vi sbagliate.
Sì, ho dimenticato la conversione del tipo.
E non è "dummies", vero?
Sono un idiota sotto molti aspetti. Quindi non capisco come le funzioni destinate a restituire long restituiscano ULONG_MAX-1. Le insidie di una gestione superficiale dei tipi interi sono scritte quasi nel manuale stesso. sergeev ha colto correttamente il motivo della domanda: il controllo dell'ordine. Se imposto request.magic al tipo ulong, allora mi aspetto che anche le funzioni HistoryDealGetInteger(), PositionGetInteger() e OrderGetInteger() restituiscano il tipo ulong. Senza conversioni di tipo esplicito-implicito.
Tuttavia, se isuoi esempi spiegano che le conversioni di tipo long<->ulong non causano la perdita di valori (a differenza di double -> int, per esempio), allora l'ulteriore processo di pensiero diventa chiaro.
E un tale "bubbone" è stato creato su uno spazio vuoto.
In realtà il thread "Dummie's Questions" è stato scelto per ottenere spiegazioni, non ammonizioni.
Sono un idiota per molte cose. Quindi non capisco come le funzioni destinate a restituire long restituiscano ULONG_MAX-1. Le insidie di una gestione superficiale dei tipi interi sono scritte quasi nel manuale stesso. sergeev ha colto correttamente il motivo della domanda: il controllo dell'ordine. Se imposto request.magic al tipo ulong, allora mi aspetto che anche le funzioni HistoryDealGetInteger(), PositionGetInteger() e OrderGetInteger() restituiscano il tipo ulong. Senza conversioni di tipo esplicito-implicito.
Tuttavia, se isuoi esempi spiegano che le conversioni di tipo long<->ulong non causano la perdita di valori (a differenza, per esempio, di double -> int), allora l'ulteriore processo di pensiero diventa chiaro.
In realtà, il thread "Dummie's Questions" è stato scelto a scopo di chiarimento, non di rimprovero.
Ti sei offeso? Mi dispiace, non ho potuto farne a meno.
In realtà non è 64 ma solo 63 bit (cioè un 8 byte incompleto). 8 byte sarebbero se si usasse l'intero intervallo lungo.
Ma purtroppo...
Da un lato, l 'ulong magico viene passato nella struttura MqlTradeRequest. Significa che si possono impostare solo valori positivi.
D'altra parte, le funzioni PositionGetInteger/OrderGetInteger restituiscono il tipo long. Significa che la metà della gamma ulong è tagliata fuori.
In tutto, abbiamo 63 bit invece dei 64 bit descritti sopra. In realtà, non è tanto male quanto un grande inconveniente per i principi del controllo dell'ordine.
Sarebbe molto più conveniente usare lo stesso sistema di MT4 - consentire ai maghi con un segno. Poiché molti sistemi di trading si basano su un semplice principio che utilizza il simbolo stesso di un mago. Poiché è molto più facile dividere un sistema in due e filtrare gli ordini usando la solita funzione MathAbs( OrderMagicNumber() ).
tutti 64. È un dato di fatto. Non aggrappatevi al tipo firmato o non firmato. Questo serve al compilatore per assicurarsi che le operazioni aritmetiche siano corrette (e c'è uno spostamento di bit a destra in logica o aritmetica, a seconda dei valori firmati).
Nessuna informazione viene persa durante il trasferimento (assegnazione) e le fusioni senza segno di dati della stessa dimensione. Prova a far rimbalzare ULONG_MAX avanti e indietro. Prova l'assegnazione di long-ulong e ritorno. Prova a copiare la struttura.
La cosa migliore è assicurarsi da soli. Allora la questione sarà risolta una volta per tutte.
Ecco un'altra cosa a cui pensare: fatelo!// Riporta i risultati. ;)
Fatto! Sostituite la linea 14 del codice con L.l = 4548887299649496524.
Segue dalla descrizione della struttura MqlTradeRequest che magic è di tipo ulong, cioè può essere assegnato a valori maggiori del valore costante LONG_MAX. Tuttavia, le funzioni ... Le funzioniGetInteger() sono progettate per lavorare con il tipo lungo, quindi i valori magici saranno implicitamente castati al tipo lungo da queste funzioni. Ma siccome c'è una corrispondenza uno-a-uno tra le variabili di tipo long e ulong, quando si confronta il valore magico con il risultato restituito dalle funzioni di ...GetInteger() ,possiamo tranquillamente usare una conversione di tipo esplicita (per esempio: magic == (ulong)OrderGetInteger(ORDER_MAGIC) ).
Grazie per aver mostrato ripetutamente degli esempi.
stringo:
Durante il trasferimento (assegnazione) dei dati, così come il casting senza segno di dati della stessa dimensione, nessuna informazione viene persa da nessuna parte. Prova a far rimbalzare ULONG_MAX avanti e indietro. Prova l'assegnazione di long-ulong e ritorno. Prova a copiare la struttura. Convincetevi da soli e non diffondete miti.
L'ho già provato e restituisce il risultato necessario quando si forza il tipo (beh, forse un'altra "danza con i diamanti" dovrà essere fatta in aggiunta). Ma non è così importante).
zioVic:
Cambierò la classe CExpert in ulong.
Penso che sia una buona idea, coloro che usano valori negativi nella magia dovranno specificare forzatamente cosa devono restituire/impostare.
Sarebbe anche molto bello se la documentazione indicasse non solo long o ulong, ma entrambi questi tipi (ad esempio così "long / ulong").
Nessuna informazione viene persa da nessuna parte durante il trasferimento dei dati (assegnazione), o durante il casting senza caratteridi dati della stessa dimensione.