
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Sí.
Gracias
Entonces, ¿por qué funciona sin normalización y sin MathFloor?
Si la entrada es de 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
"Toma la demanda y la oferta y calcula el precio medio. Si el diferencial es impar (3,5,7,9, etc.) entonces iguala el precio medio más cercano a la Oferta".
La tarea no está fijada:
- ¿Qué significa una dispersión extraña? ¿1,3,...,9 veces el Punto o 1,3,...,17,57 veces el Punto? Los redondeos funcionan dentro de los segmentos unitarios...
- ¿qué significa "más cerca de la Oferta"? Sobre todo si el diferencial es de 43 veces el punto, por ejemplo. ¿Estamos hablando de equiparar la Oferta a qué?
Primero hay que tener claro el problema, sólo entonces se puede tomar una decisión inequívoca.
Al mismo tiempo, ya que estamos hablando de números pares/impares, lo lógico sería ir a los enteros, donde este concepto tiene sentido.
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 { // Спред четный
}
"Toma la demanda y la oferta y calcula el precio medio. Si el diferencial es impar (3,5,7,9, etc.) entonces iguala el precio medio más cercano a la Oferta".
La tarea no está fijada:
De hecho, la tarea parece sencilla... y la puede hacer un escolar... :-) Yo también lo pensé.
Pero en la fijación de precios desde el servidor, la normalización de los datos y el resto, hay rincones oscuros a los que ni siquiera te refieres.
Llevo 9 años programando en mql - y nunca he tenido problemas con la normalización porque lo he hecho bien. y la precisión a 1 milipunto siempre ha funcionado correctamente.
Pero hay tareas que requieren una gran precisión.
Y hay condiciones.
A saber:
Por lo tanto, tenemos que normalizar el precio de tal manera que si hay un residuo (¡y lo habrá incluso con un spread parejo! :-)) entonces promediamos el precio más cercano al punto bajo, es decir, a la Oferta.
Por ejemplo:
¿Y todo parece ser sencillo? Todo debería funcionar y yo soy un tonto... y me senté durante 2 días esperando no ser un tonto. Entendimiento sobre colas y dabbles y tribbles y bibbles..................
Pero! con la misma fórmula, con diferenciales pares e impares - en algunas situaciones - la Fórmula no funcionó . (ver arriba) .
Incluso, puede funcionar con monedas y no funcionar con petróleo.
Puede que funcione en JPY y no funcione en USD en algún momento.
¿Quizás esté mirando la influencia de la luna? El tiempo en África .................
Pero, cuando estás seguro de que la fórmula funciona, no te das cuenta de que 1 milipunto. y trabajas en..... y entonces "Bang, bang, bang, bang" y ese milipunto, decide huir, o llamar al segundo milipunto, que se interpone.
EN MI OPINIÓN.
Puedes pensar en mí como un tonto, un sub-programador, un colegial.... y así sucesivamente.
Pero el hecho es que.
Se produce un error con diferentes combinaciones de valores dobles. Al mismo tiempo, todo está claro con el flotador.
Todavía no lo he descubierto. La ayuda es muy buena y siempre la pido, es normal. Y puede que dentro de 10 años pida ayuda a la comunidad. Esto es normal. Y respondo a una llamada de auxilio si conozco las trampas: es normal.
Por supuesto, después de esas pruebas, haré una "investigación extra" para entender por mí mismo por qué es así.
Gracias a todos por vuestra respuesta y ayuda.
De hecho, la tarea parece sencilla... y la puede hacer un escolar... :-) Yo también lo pensé.
Pero hay rincones tan oscuros en los precios obtenidos del servidor, en la normalización de los datos y en el resto... que ni siquiera se quiere decir.
Llevo 9 años programando en mql - y nunca he tenido problemas con la normalización porque lo he hecho bien. y la precisión a 1 milipunto siempre ha funcionado correctamente.
Pero! con la misma fórmula, con diferenciales pares e impares - en algunas situaciones - la Fórmula no funcionó . (ver arriba) .
Con diferentes combinaciones - con valores dobles se produce un error. Al mismo tiempo, con el flotador todo está claro.
¿Qué tiene que ver Metacvotes con la normalización de datos en general? Este término significa diferentes cosas para los programadores y no redondear en absoluto. Lea la norma IEEE 754, por ejemplo, aquí:http://www.softelectro.ru/ieee754.html. Los números reales no normalizados llegan hasta 1,17549421*10^(-38) en el caso de la longitud de 4 bytes y hasta 4....*10^(-324) en el caso de la longitud de 8 bytes, los encontramos muy raramente y, desde luego, no en los cálculos del curso. Si necesita llamar a OrderSend, entonces redondee de acuerdo a los requerimientos de esta función. No es necesario utilizar el redondeo hasta que la tarea lo requiera.
Los errores no se producen en el formato de los dobles o los flotantes, sino en las operaciones utilizadas. El hecho de que la fórmula no haya resuelto la tarea le indica que no es apropiada para la misma. No más que eso. Dígame qué errores se producen en un cálculo normal sin normalización (este es el trozo de mi post anterior):
Spr=MathRound((Oferta-Pregunta)/_Punto); Spr=Spr >> 1; Middle=Pregunta+Spr*_Punto;
De hecho, la tarea parece sencilla... ¿Y la puede hacer un escolar? :-) Yo también lo pensé.
Pero hay rincones tan oscuros en los precios obtenidos del servidor, en la normalización de los datos y en el resto... que ni siquiera se quiere decir.
Llevo 9 años programando en mql - y nunca he tenido problemas con la normalización porque lo he hecho bien. y la precisión a 1 milipunto siempre ha funcionado correctamente.
Pero hay tareas que requieren una gran precisión.
Y hay condiciones.
A saber:
Por lo tanto, tenemos que normalizar el precio de tal manera que si hay un residuo (¡y lo habrá incluso con un spread parejo! :-)) entonces promediamos el precio más cercano al punto bajo, es decir, a la Oferta.
Por ejemplo:
¿Y todo parece ser sencillo? Todo debería funcionar y yo soy un tonto... y me senté durante 2 días esperando no ser un tonto. Entendimiento sobre colas y dabbles y tribbles y bibbles..................
Pero! con la misma fórmula, con diferenciales pares e impares - en algunas situaciones - la Fórmula no funcionó . (ver arriba) .
Incluso, puede funcionar con monedas y no funcionar con petróleo.
Puede que funcione en JPY y no funcione en USD en algún momento.
¿Quizás esté mirando la influencia de la luna? El tiempo en África .................
Pero, cuando estás seguro de que la fórmula funciona, no te das cuenta de que 1 milipunto. y trabajas en..... y entonces "Bang, bang, bang, bang" y ese milipunto, decide huir, o llamar al segundo milipunto, que se interpone.
EN MI OPINIÓN.
Puedes pensar en mí como un tonto, un sub-programador, un colegial.... y así sucesivamente.
Pero el hecho es que.
Se produce un error con diferentes combinaciones de valores dobles. Al mismo tiempo, todo está claro con el flotador.
Todavía no lo he descubierto. La ayuda es muy buena y siempre la pido, es normal. Y puede que dentro de 10 años pida ayuda a la comunidad. Esto es normal. Y respondo a una llamada de auxilio si conozco las trampas: es normal.
Por supuesto, después de esas pruebas, haré una "investigación extra" para entender por mí mismo por qué es así.
Gracias a todos por vuestra respuesta y ayuda.