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
Sì.
Grazie
Allora perché funziona senza normalizzazione e MathFloor?
Se l'input è 0,95?
{
double ask2 = 1.55557, ask3 = 1.55558, bid = 1.55555;
Print("(ask2 + bid)/2 = ", (ask2 + bid)/2);
Print("(ask3 + bid)/2 = ", (ask3 + bid)/2);
int avPrice_2 = (int)NormalizeDouble((ask2/_Point + bid/_Point)/2, 0);
int avPrice_3 = (int)NormalizeDouble((ask3/_Point + bid/_Point)/2, 0);
Print("avPrice_2 = ", avPrice_2);
Print("avPrice_3 = ", avPrice_3);
}/*******************************************************************/
2017.02.27 00:03:54.456 00 (EURUSD.m,H1) (ask3 + bid)/2 = 1.555565
2017.02.27 00:03:54.456 00 (EURUSD.m,H1) avPrice_2 = 155556
2017.02.27 00:03:54.456 00 (EURUSD.m,H1) avPrice_3 = 155557
"Prendi Ask e Bid e calcola il prezzo medio. Se lo spread è dispari (3,5,7,9, ecc.) allora equipara il prezzo medio più vicino al Bid".
Il compito non è impostato:
- Cosa significa uno spread strano. 1,3,...,9 volte Punto o 1,3,...,17,57 volte Punto? Gli arrotondamenti funzionano all'interno dei segmenti di unità...
- cosa significa "più vicino al Bid"? Soprattutto se lo spread è 43 volte Punto, per esempio. Stiamo parlando di equiparare il Bid a cosa?
Bisogna prima fare chiarezza sul problema, solo allora si può prendere una decisione senza ambiguità.
Allo stesso tempo, dato che stiamo parlando di numeri pari/dispari, sarebbe logico passare ai numeri interi, dove questo concetto ha senso.
double Ask,Bid,Middle; // Уже известные курсы Ask и Bid, вычисляемый средний курс
int Mash,Spr; // Множитель перехода к целым числам. Для 4-разрядного EURUSD 10000. И целочисленный спред
Mash=MathRound(1.0/_Point);
Spr=MathRound((Ask-Bid)*Mash); // Целочисленный спред
// Придаем конкретность среднему курсу. Предполагаем, что "ближе к Бид" значит "ближайший меньший среднего арифметического Ask и Bid, кратный Point"
Spr=Spr >> 1; // Целочисленный спред, деленный на 2 с отбрасыванием остатка
Middle=Bid+Spr*_Point;
// Если предположение неверно, канва последующих разборов такая
if ((Spr & 1) != 0)) { // Спред нечетный
}
else { // Спред четный
}
"Prendi Ask e Bid e calcola il prezzo medio. Se lo spread è dispari (3,5,7,9, ecc.) allora equipara il prezzo medio più vicino al Bid".
Il compito non è impostato:
In effetti, il compito sembra essere semplice e può essere fatto da uno scolaro? :-) L'ho pensato anch'io.
Ma nella determinazione dei prezzi dal server, nella normalizzazione dei dati e nel resto - ci sono angoli bui che non si intendono nemmeno.
Ho programmato in mql per 9 anni - e non ho mai avuto un problema con la normalizzazione perché l'ho fatta bene. e la precisione a 1 millipoint ha sempre funzionato correttamente.
Ma ci sono compiti che richiedono un'alta precisione.
E ci sono delle condizioni.
Vale a dire:
Quindi, dobbiamo normalizzare il prezzo in modo tale che se c'è un residuo (e ce ne sarà uno anche con uno spread pari! :-)) allora facciamo la media del prezzo più vicino al punto basso, cioè al Bid.
Per esempio:
E tutto sembra essere semplice? Tutto dovrebbe funzionare e io sono un pazzo? e sono rimasto seduto per 2 giorni sperando di non essere un pazzo. Capire di code e dabble e tribbles e bibbles..................
Ma con la stessa formula, con spread pari e spread dispari - in alcune situazioni - la formula non ha funzionato . (vedi sopra) .
Compreso, può funzionare sulle valute e non funzionare sul petrolio.
Potrebbe funzionare su JPY e non funzionare su USD ad un certo punto.
Forse sta guardando l'influenza della luna? Il tempo in Africa .................
Ma, quando si è sicuri che la formula funziona, non si nota che 1 millipunto. e si lavora su..... e poi "Bang, bang, bang, bang" e quel millipunto, decide di scappare, o chiamare il secondo millipunto, che si mette in mezzo.
IMHO.
Potete pensare a me come a uno sciocco, un sottoprogrammatore, uno scolaro.... e così via.
Ma il fatto rimane.
Si verifica un errore con diverse combinazioni di valori doppi. Allo stesso tempo, tutto è chiaro con il galleggiante.
Non l'ho ancora capito. L'aiuto è molto buono e lo chiedo sempre, è normale. E potrei chiedere aiuto alla comunità tra 10 anni. Questo è normale. E rispondo a una richiesta di aiuto se conosco le insidie - è normale.
Naturalmente, dopo questi test, farò delle "indagini supplementari" per capire da solo il perché di questa situazione.
Grazie a tutti per la vostra reattività e il vostro aiuto.
In effetti, il compito sembra essere semplice e può essere fatto da uno scolaro? :-) L'ho pensato anch'io.
Ma ci sono angoli così oscuri nei prezzi ottenuti dal server, nella normalizzazione dei dati e nel resto - che non si intende nemmeno.
Ho programmato in mql per 9 anni - e non ho mai avuto un problema con la normalizzazione perché l'ho fatta bene. e la precisione a 1 millipoint ha sempre funzionato correttamente.
Ma con la stessa formula, con spread pari e spread dispari - in alcune situazioni - la formula non ha funzionato . (vedi sopra) .
Con combinazioni diverse - con valori doppi si verifica un errore. Allo stesso tempo con il galleggiante tutto è chiaro.
Cosa c'entra comunque la versione di Metakvotes della normalizzazione dei dati? Questo termine significa diverse cose per i programmatori e non arrotonda affatto. Leggete lo standard IEEE 754, per esempio, qui:http://www.softelectro.ru/ieee754.html. I numeri reali non normalizzati vanno fino a 1.17549421*10^(-38) in caso di lunghezza di 4 byte e fino a 4....*10^(-324) in caso di lunghezza di 8 byte, li incontriamo molto raramente e certamente non nei calcoli del corso. Se avete bisogno di chiamare OrderSend, allora arrotondate secondo i requisiti di questa funzione. Non c'è bisogno di usare l'arrotondamento finché il compito non lo richiede.
Gli errori non si verificano nel formato doppio o float, ma nelle operazioni utilizzate. Il fatto che la formula non abbia risolto il compito vi dice che non è adatta al compito. Non più di questo. Ditemi quali errori si verificano in un calcolo normale senza normalizzazione (questo è il pezzo del mio post sopra):
Spr=MathRound((Ask-Bid)/_Point); Spr=Spr >> 1; Middle=Bid+Spr*_Point;
In effetti, il compito sembra semplice e può essere fatto da uno scolaro? :-) L'ho pensato anch'io.
Ma ci sono angoli così oscuri nei prezzi ottenuti dal server, nella normalizzazione dei dati e nel resto - che non si intende nemmeno.
Ho programmato in mql per 9 anni - e non ho mai avuto un problema con la normalizzazione perché l'ho fatta bene. e la precisione a 1 millipoint ha sempre funzionato correttamente.
Ma ci sono compiti che richiedono un'alta precisione.
E ci sono delle condizioni.
Vale a dire:
Quindi, dobbiamo normalizzare il prezzo in modo tale che se c'è un residuo (e ce ne sarà uno anche con uno spread pari! :-)) allora facciamo la media del prezzo più vicino al punto basso, cioè al Bid.
Per esempio:
E tutto sembra essere semplice? Tutto dovrebbe funzionare e io sono un pazzo? e sono rimasto seduto per 2 giorni sperando di non essere un pazzo. Capire di code e dabble e tribbles e bibbles..................
Ma con la stessa formula, con spread pari e spread dispari - in alcune situazioni - la formula non ha funzionato . (vedi sopra) .
Compreso, può funzionare sulle valute e non funzionare sul petrolio.
Potrebbe funzionare su JPY e non funzionare su USD ad un certo punto.
Forse sta guardando l'influenza della luna? Il tempo in Africa .................
Ma, quando si è sicuri che la formula funziona, non si nota che 1 millipunto. e si lavora su..... e poi "Bang, bang, bang, bang" e quel millipunto, decide di scappare, o chiama il secondo millipunto, che si mette in mezzo.
IMHO.
Potete pensare a me come a uno sciocco, un sottoprogrammatore, uno scolaro.... e così via.
Ma il fatto rimane.
Si verifica un errore con diverse combinazioni di valori doppi. Allo stesso tempo, tutto è chiaro con il galleggiante.
Non l'ho ancora capito. L'aiuto è molto buono e io chiedo sempre aiuto, è normale. E potrei chiedere aiuto alla comunità tra 10 anni. Questo è normale. E rispondo a una richiesta di aiuto se conosco le insidie. è normale.
Naturalmente, dopo tali test, farò delle "indagini supplementari" per capire da solo il perché di questa situazione.
Grazie a tutti per la vostra reattività e il vostro aiuto.