Errori, bug, domande - pagina 1380
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
L'applicazione è stata creata, ma nessuno l'ha guardata per più di tre giorni.
Qual è il numero dell'applicazione?
Il tema perenne dei dub =)
Chiedo agli sviluppatori di aggiungere due caratteristiche standard.
Suggerisco la seguente specifica:
====
Rp
La funzione restituisce il valore da allineare al passo di prezzo dello strumento.
doppio Rp(
stringasymbol_name, // nome del simbolo
doublevalue// prezzo da allineare
);
Parametri
nome_simbolo
[Simbolo.
valore
[Numero positivo.
Valore restituito
Numero più vicino arrotondato alla fase di prezzo dello strumento di trading.
...
Esempio:
Valori di ingresso:
symbol_name = ES-...
valore = 2000.55
uscita = 2000.50
(passo di prezzo per strumento ES = 0,25)Valori di ingresso:
nome_simbolo = SPX
valore = 2000.55
uscita = 2000.63
(su SPX il passo di prezzo è anche 0,25, come su ES, ma c'è un offset di base e la quotazione può avere solo le seguenti parti frazionarie -- 13,38,63,88)
Valori di ingresso:
nome_simbolo = RTS
valore = 82055,55
uscita = 82060
(passo di prezzo dallo strumento RTS = 10)
...e così via.
La seconda funzione, che mi interessa ancora di più:
====
Rv
La funzione restituisce un valore che sarà allineato con il passo di volume dello strumento e sarà nell'intervallo da SYMBOL_VOLUME_MIN a SYMBOL_VOLUME_MAX.
doppio Rv(
stringasymbol_name, // nome del simbolo
doppiovalore// lotto da allineare
);
Parametri
nome_simbolo
[Simbolo.
valore
[Numero positivo.
Valore restituito
Numero più vicino arrotondato al gradino del volume dellostrumento di trading. Il numero non sarà più grande di SYMBOL_VOLUME_MAX o più piccolo di SYMBOL_VOLUME_MIN.
...
======
La principale proprietà che mi aspetto da queste funzioni è che siano valide per TUTTI GLI STRUMENTI DI TRADING NEL MONDO e PER QUALSIASI INTRODUZIONE.
Se qualcuno ha una soluzione pronta per l'uso, per favore condividetela, a patto che lo facciano gli sviluppatori.
Strano che non ci sia ancora =/
Risolvendo il problema dal tuo commento ho fatto una funzione più stupida e goffa, ma anche questa fallisce per molti valori di input.
Codice di funzione:
Il punto è che ho stupidamente spostato tutto il fastidio di determinare la parte significativa del numero frazionario al metodo che il compilatore inserisce al posto dell'operatore =(stringa).
Ma si scopre che in questo modo il codice formatta la stringa quasi come il tipo g di printf(), cioè per le frazioni lunghe la stringa viene stampata in un formato scientifico.
Come posso ottenere l'output in una stringa per qualsiasi n senza formato esponenziale e senza cifre extra a destra, e senza problemi =)?
E un'altra domanda: è sempre una frazione decimale separata da un punto o per default dalle impostazioni di sistema può essere una virgola o qualcos'altro?
Risolvendo il problema dal tuo commento ho fatto una funzione più stupida e goffa, ma anche questa fallisce per molti valori di input.
Codice di funzione:
Il punto è che ho stupidamente spostato tutto il fastidio di determinare la parte significativa del numero frazionario al metodo che il compilatore inserisce al posto dell'operatore =(stringa).
Ma si scopre che in questo modo il codice formatta la stringa quasi come il tipo g di printf(), cioè per le frazioni lunghe la stringa viene stampata in un formato scientifico.
Come posso ottenere l'output in una stringa per qualsiasi n senza formato esponenziale e senza cifre extra a destra, e senza problemi =)?
E un'altra domanda: è sempre una frazione decimale separata da un punto o per default dalle impostazioni di sistema può essere una virgola o qualcos'altro?
E cosa non ti piace di Point(), Digits?
Almeno avere DigitsLot(), che restituirà la precisione del passo di volume.
Forse non ho capito il tuo suggerimento. C'è un modo sensato per ottenere ciò che state cercando tramite Point() o Digits()?
Ancora, ha davvero bisogno di quelle due funzioni che ho descritto sopra (equalizzatori validi per il prezzo e per il lotto).
Capisco che nelle cucine forex il volume è accettato il più delle volte in incrementi di 0,01, e a nessuno importa cosa succederà domani, ma il terminale si sta sviluppando.
Ci sono sempre più strumenti. Tutti i dispositivi fatti in casa che non permettono gli incrementi dell'intero lotto non funzionano più. Chi dice che non ci sarà il lotto minimo, diciamo un quarto? Non ci sono molte varianti.
Questa soluzione deve essere assoluta (per tutti i valori) o non è affidabile.
E riguardo alla citazione. Quando si invia una richiesta, il server accetta i prezzi che non sono pari, anche solo per normalizzarli (tagliarli in caratteri), ma ci sono altri compiti.
Sei d'accordo che dovremmo essere in grado di ottenere una quotazione reale possibile per qualsiasi simbolo, ma non una quotazione tagliata.
Risolvendo il problema dal tuo commento ho fatto una funzione più stupida e goffa, ma anche questa fallisce per molti valori di input.
Codice di funzione:
...Non pensare che io sia così sciocco, così ostinato a fare una stringa con un numero per un problema puramente matematico.
All'inizio ho provato a farlo attraverso il logaritmo, ma si è rivelato glitchato al punto di non ritorno =(
Mi correggo. Questo sembra funzionare:
Non pensare che io sia troppo stupido per fare una stringa da un numero per un problema puramente matematico.
All'inizio ho provato onestamente a farlo tramite il logaritmo, ma si è rivelato glitchato come l'inferno =(
Nel caso, perché non ti piace NormalizeDouble()_Point _Digits ?????????
Perché fai una bicicletta?
Nel caso, cosa c'è di sbagliato in NormalizeDouble() _Point _Digits ?????????
Perché stai creando una bicicletta?
Risponderò un'altra volta, per sicurezza. Per favore, spiegatemi come scoprire la precisione di SYMBOL_VOLUME_STEP usando "NormalizeDouble() _Point _Digits"?
O come ottenere un valore multiplo di SYMBOL_VOLUME_STEP da qualsiasi numero positivo?
Come ottenere il seguente risultato:
2000.55 (simbolo ES) -----> 2000.50
2000.55 (simbolo SPX) -----> 2000.63
1055.5555 (simbolo RTS) ------> 1060
per qualsiasi simbolo nel mondo che è disponibile nel terminale MT5 oggi (e preferibilmente domani)
"????????"
Gli sviluppatori possono aggiungere solo 2 funzioni e modificarle man mano che il terminale si sviluppa, e io non conosco tutte le peculiarità dei diversi strumenti di trading. Dove posso scoprire quali citazioni esistono? E ho bisogno di una citazione, non del risultato di NormalizeDouble().
Se questa moto è già là fuori - puntare su un'implementazione specifica, lo apprezzerei. Quello che mi sono trovato già non funziona su alcuni simboli in questo momento.
...
2000.55 (simbolo ES) -----> 2000.50
2000.55 (simbolo SPX) -----> 2000.63
1055.5555 (simbolo RTS) ------> 1060
...