Maksim Efimov MACD estándar de una línea de señal y un histograma. La idea es la siguiente: en cada nueva barra tomamos las dos velas anteriores y obtenemos los valores del indicador en cada una de ellas. Si el valor del MACD en la segunda vela es mayor que el valor de la señal y el valor del MACD en la primera vela ya está por debajo de la señal y todos los valores están por encima de cero, significa que hay un cruce en la parte superior y viceversa.
Pero, en el momento de obtener el valor se convierte en algo enorme. Y sólo una: la línea de señal de la segunda vela. Puede ser 8 hasta qué punto, 4,5, 7, etc. Cuando aparece la siguiente barra, el valor de la línea de señal de la segunda barra desde la nueva barra puede ser ya normal. Todos los demás resultan ser correctos. Y en la ventana de datos, el valor también es correcto. No puedo entender por qué. ¿Qué estoy haciendo mal?
Tengo la sensación de que se trata de un doble variable. Porque el valor en la ventana de datos es 0,000081, pero resulta 8,1....., lo mismo noté con otro valor - en la ventana de datos 0,000071, pero en la variable 7,1..... Pero todas están definidas como variables dobles.
Gracias. Eso lo muestra correctamente. Estúpido error, por supuesto. Pero sigo preguntándome por qué todos los demás valores se muestran normalmente y sólo uno está torcido.
Gracias. Esa es la forma correcta de hacerlo. Un error estúpido, por supuesto. Pero sigo preguntándome por qué todos los demás valores se muestran con normalidad y sólo uno está torcido.
No está torcido, es correcto a nivel de máquina, ves que hay "e-08" al final.
Por ejemplo, el número 1e-05 no es un error, sino0,00001.
Hay que utilizar DoubleToString para ver lo que estamos acostumbrados y el programa funcionará correctamente de todos modos
Онлайн калькулятор для перевода чисел в экспоненциальный вид и обратно, другим языком для вычисления чисел с буквой E. На компьютере (в частности в тексте компьютерных программ) экспоненциальную запись записывают в виде MEp (пример 1e-10), где: M — мантисса, E (exponent) — буква E, означающая «*10^» («…умножить на десять в степени…»), p — порядок. Это необходимо для представлении очень больших и очень малых чисел, а также для унификации их написания. Многие пользователи калькуляторов столкнулись с вопросом: Что означает буква "E" в цифровом калькуляторе? Это Экспоненциа́льная за́пись— представление действительных чисел в виде мантиссы и порядка. Удобна для записи очень больших и очень малых чисел.
Pero, en el momento de obtener el valor se convierte en algo enorme. Y sólo una: la línea de señal de la segunda vela. Puede ser 8 hasta qué punto, 4,5, 7, etc. Cuando aparece la siguiente barra, el valor de la línea de señal de la segunda barra desde la nueva barra puede ser ya normal. Todos los demás resultan ser correctos. Y en la ventana de datos, el valor también es correcto. No puedo entender por qué. ¿Qué estoy haciendo mal?
Tengo la sensación de que se trata de un doble variable. Porque el valor en la ventana de datos es 0,000081, pero resulta 8,1....., lo mismo noté con otro valor - en la ventana de datos 0,000071, pero en la variable 7,1..... Pero todas están definidas como variables dobles.
No hay 8 en el comentario, hay una continuación.
No hay 8 en el comentario, pero hay una secuela.
Gracias. Eso lo muestra correctamente. Estúpido error, por supuesto. Pero sigo preguntándome por qué todos los demás valores se muestran normalmente y sólo uno está torcido.
Gracias. Esa es la forma correcta de hacerlo. Un error estúpido, por supuesto. Pero sigo preguntándome por qué todos los demás valores se muestran con normalidad y sólo uno está torcido.
No está torcido, es correcto a nivel de máquina, ves que hay "e-08" al final.
Por ejemplo, el número 1e-05 no es un error, sino0,00001.
Hay que utilizar DoubleToString para ver lo que estamos acostumbrados y el programa funcionará correctamente de todos modos
Leer
No está torcido, es correcto a nivel de máquina, vea que hay una "e-08" al final.
Por ejemplo, el número 1e-05 no es un error, es0,00001.
Para ver lo que estamos acostumbrados, es necesario utilizar DoubleToString y el programa funcionará correctamente de todos modos
Leer
Gracias de nuevo. Lo leeré.
Arreglado, ahora funciona. Por supuesto que no está bien, pero funciona.
{ if(iTrailTakeProfit > 0.0) { tp=OrderTakeProfit() + NormalizeDouble(iTrailTakeProfit * Point(),_Digits); if(NormalizeDouble(((tp - OrderTakeProfit())) < 0.0,Digits))return; tp = OrderTakeProfit(); }else tp = 0.0; if(OrderProfit() + OrderSwap() + OrderCommission() > MarketInfo(Symbol(), MODE_TICKVALUE) * iTrailStart * OrderLots()); { if(((NormalizeDouble((Bid - OrderOpenPrice()*Point),Digits) >= NormalizeDouble(((Bid - NormalizeDouble((iTrailStart * Point),_Digits))),_Digits) > OrderStopLoss() || OrderStopLoss()==0)));//true { if((OrderStopLoss() == 0.0 && NormalizeDouble(Bid - OrderStopLoss()* Point,Digits) < NormalizeDouble((Bid - NormalizeDouble((iTrailDist * Point),_Digits)),_Digits)));//true { if(iTrailStep > 0.0 && OrderStopLoss() >= 0.0 && NormalizeDouble(((Bid - OrderStopLoss() - iTrailDist * Point)),Digits) >= iTrailStep);//true { sl_lev = NormalizeDouble((Bid - iTrailDist * Point()),_Digits); if(NormalizeDouble(Bid - sl_lev * Point,_Digits) < MarketInfo(Symbol(),MODE_STOPLEVEL));//false { if(!OrderModify(Forder,OrderOpenPrice(),NormalizeDouble(Bid - NormalizeDouble((iTrailStart * Point),_Digits),_Digits),tp,OrderExpiration())); Print("Не удалось модифицировать стоплосс ордера №",OrderTicket(),". Ошибка: ",GetLastError()); } } } } } }No fija los topes correctamente, ¿cómo lo arreglo?
Y mira en la revista para ver lo que resulta ser)
Al principio no escribí nada, luego empecé a buscar secuencialmente y resultó ser mucho.
Gracias.
Arreglado, ahora funciona. No está bien, por supuesto, pero funciona.
No pone bien los topes, ¿cómo se arregla?
¿De dónde sacas estos datos?
¿De dónde sacas estos datos?
De la orden.
MQL5 también devolverá inmediatamente
Si la orden es aceptada con éxito por el servidor comercial, la función OrderSend() devuelve true.