Resultados 1 al 5 de 5

Tema: Problemas con la alerta sonora.

  1. #1
    Hola a todos, I # 8217; estoy teniendo problemas con una alerta audible para el indicador Squeeze. Encontré una alerta para el BBS squeeze indior, la alerta funciona # 8230, pero no de la forma en que lo preferiría. La señal real es cuando el punto se pone verde al final de la barra y el punto anterior era rojo. En este momento, la alerta suena en cada punto rojo y, por lo general, varias veces, ya que el punto actual puede cambiar de rojo a verde una y otra vez. Por lo tanto, incluso si puedo hacer que llegue la alerta al cerrarla, # 8217; s todavía va a alertar en cada punto rojo, cuando la señal para mí es en realidad un punto verde que precede a un punto rojo. De alguna manera lo necesito para avisar cuando un punto se cierra en verde y el punto anterior era rojo. es posible? Si alguien sabe cómo podría implementarse esto, agradecería enormemente cualquier ayuda. Gracias por adelantado.




    Código insertado # 91; izquierda # 93;/ -------------------------------------- ---------------------------- /| bbsqueeze.mq4 |/| Copyright © 2005, Nick Bilak, beluck # 91; AT # 93; gmail.com |/| mejorado un poco por CJ Rivas, carlos # 91; AT # 93; vealo.com |/ ----------------------------------------------- ------------------- #property copyright © 2005, Nick Bilak #property indior_separate_window #property indior_buffers 6 #property indior_color1 Blue #property indior_color2 Red #property indior_color3 DarkBlue #property indior_color4 Maroon #property indior_color5 Red #property indior_color6 Lime/---- parámetros de entrada extern int bolPrd = 20; doble bolDev externo = 2.0; extern int keltPrd = 20; Factor de kelt externo doble = 1.5; extern int momPrd = 12; AlertSqueezeStart bool externo = falso; extern bool AlertSqueezeEnd = falso;/---- buffers double upB # 91; # 93 ;; doble upB2 # 91; # 93 ;; doble lambda # 91; # 93 ;; doble loB2 # 91; # 93 ;; doble upK # 91; # 93 ;; doble loK # 91; # 93 ;; int i, j, slippage = 3; doble punto de ruptura = 0.0; doble ema = 0.0; int peakf = 0; picos int = 0; int valleyf = 0; valles int = 0, límite = 0; doble ccis # 91; 61 # 93; ccif # 91; 61 # 93; doble delta = 0; doble ugol = 0;/ ----------------------------------------------- ------------------- /| Función de inicialización personalizada indior |/ ----------------------------------------------- ------------------- int init () {//---- indiors SetIndexStyle (0, DRAW_HISTOGRAM, EMPTY, 3); SetIndexBuffer (0, upB); SetIndexEmptyValue (0, EMPTY_VALUE); SetIndexStyle (1, DRAW_HISTOGRAM, VACÍO, 3); SetIndexBuffer (1, loB); SetIndexEmptyValue (1, EMPTY_VALUE); SetIndexStyle (4, DRAW_ARROW, EMPTY, 2); SetIndexBuffer (4, upK); SetIndexEmptyValue (4, EMPTY_VALUE); SetIndexArrow (4,159); SetIndexStyle (5, DRAW_ARROW, EMPTY, 2); SetIndexBuffer (5, loK); SetIndexEmptyValue (5, EMPTY_VALUE); SetIndexArrow (5,159); SetIndexStyle (2, DRAW_HISTOGRAM, VACÍO, 3); SetIndexEmptyValue (2, EMPTY_VALUE); SetIndexBuffer (2, upB2); SetIndexStyle (3, DRAW_HISTOGRAM, VACÍO, 3);SetIndexEmptyValue (3, EMPTY_VALUE); SetIndexBuffer (3, loB2);/---- retorno (0); }/ ---------------------------------------------- -------------------- /| Función de desinicialización indior Custor |/ ----------------------------------------------- ------------------- int deinit () {//----/---- return (0); }/ ---------------------------------------------- -------------------- /| Función de iteración indior personalizada |/ ----------------------------------------------- ------------------- int start () {int counted_bars = IndiorCounted (); cambio de int, límite; doble diff, d, dPrev, std, bbs; if (counted_barslt; 0) return (-1); if (counted_barsgt; 0) counted_bars--; limit = Bars-31; if (counted_barsgt; = 31) limit = Bars-counted_bars-1; para (shift = límite; shiftgt; = 0; shift--) {//d = iMomentum (NULL, 0, momPrd, PRICE_CLOSE, shift); d = LinearRegressionValue (bolPrd, shift); dPrev = LinearRegressionValue (bolPrd, shift 1); if (dgt; 0) {if ((dPrevgt; 0) (dPrev gt; d)) {upB2 # 91; shift # 93; = d; upB # 91; cambio # 93; = 0; } else {upB # 91; shift # 93; = d; upB2 # 91; cambio # 93; = 0; }/upB # 91; shift # 93; = 0; loB # 91; cambio # 93; = 0; loB2 # 91; cambio # 93; = 0; } else {if ((dPrevlt; 0) (dPrev lt; d)) {loB2 # 91; shift # 93; = d; loB # 91; cambio # 93; = 0; } else {loB # 91; shift # 93; = d; loB2 # 91; cambio # 93; = 0; } upB # 91; cambio # 93; = 0; upB2 # 91; cambio # 93; = 0;/loB # 91; shift # 93; = d; } diff = iATR (NULL, 0, keltPrd, shift) * keltFactor; std = iStdDev (NULL, 0, bolPrd, MODE_SMA, 0, PRICE_CLOSE, shift); bbs = bolDev * stddiff; if (bbslt; 1) {upK # 91; shift # 93; = 0; loK # 91; shift # 93; = EMPTY_VALUE; } else {loK # 91; shift # 93; = 0; upK # 91; shift # 93; = EMPTY_VALUE; } double diffprev, stdprev, bbsprev; diffprev = iATR (NULL, 0, keltPrd, 1) * keltFactor; stdprev = iStdDev (NULL, 0, bolPrd, MODE_SMA, 0, PRICE_CLOSE, 1); bbsprev = bolDev * stdprevdiffprev; } {if (bbsprevgt; = 1 bbslt; 1 AlertSqueezeStart == true) if (NewBar ()) Alert (Symbol (),, Period (), BB Squeeze Started); } {if (bbsprevlt; 1 bbsgt; = 1 AlertSqueezeEnd == true) if (NewBar ()) Alert (Symbol (),, Period (), BB Squeeze Ended); } retorno (0); }/ ---------------------------------------------- -------------------- LinearRegressionValue doble (int Len, int shift) {double SumBars = 0; doble SumSqrBars = 0; doble SumY = 0; doble Sum1 = 0; doble Sum2 = 0; doble pendiente = 0; SumBars = Len * (Len-1) * 0.5; SumSqrBars = (Len - 1) * Len * (2 * Len - 1)6; para (int x = 0; xlt; = Len-1; x ) {double HH = Low # 91; x shift # 93 ;; doble LL = Alto # 91; x shift # 93 ;; para (int y = x; ylt; = (x Len) -1; y ) {HH = MathMax (HH,Alto # 91; y shift # 93;); LL = MathMin (LL, Low # 91; y shift # 93;); } Sum1 = x * (Cerrar # 91; x shift # 93; - ((HH LL)2 iMA (NULL, 0, Len, 0, MODE_EMA, PRICE_CLOSE, x shift))2); SumY = (Close # 91; x shift # 93; - ((HH LL)2 iMA (NULL, 0, Len, 0, MODE_EMA, PRICE_CLOSE, x shift))2); } Sum2 = SumBars * SumY; doble Num1 = Len * Sum1 - Sum2; doble Num2 = SumBars * SumBars-Len * SumSqrBars; if (Num2! = 0.0) {Slope = Num1Num2; } else {Pendiente = 0; } doble Intercept = (SumY - Slope * SumBars)Len; doble LinearRegValue = Intercept Slope * (Len - 1); return (LinearRegValue); } bool NewBar () {static datetime dt = 0; if (dt! = Time # 91; 0 # 93;) {dt = Time # 91; 0 # 93 ;; Dormir (100);/esperar el retorno de la garrapata (verdadero); } falso retorno); } return (0); # 91;left # 93;

  2.                         
    Publicidad
  3. #2
    Acabo de releer mi último post y fue un poco confuso.
    Si bar0 es verde y bar1 es verde y bar2 es rojo, entonces alerta.
    Ir por esta ruta es la única forma en la que puedo pensar para evitar múltiples alertas, ya que la señal cambia varias veces durante una barra. Seguirá alertando varias veces de esta manera, pero la primera señal será correcta y puedo apagarlo después de eso. El cierre del primer punto verde es la señal, que le permite saber que las bandas de Bollinger se han cerrado fuera de los canales de Keltner. ¿Alguien podría decirme si la lógica es correcta para esto ...? No soy el mejor programador hasta ahora, pero si puedo entender la lógica subyacente, podría codificarlo. Busqué en diferentes foros y encontré la misma pregunta un millón de veces, así que me preguntaba si sería posible. Cualquier ayuda es muy apreciada.

  4. #3
    Ok, ¿cuánto me costará tener una alerta agregada?

  5. #4

  6. #5
    1 Adjunto (s) Aquí está el archivo original sin la alerta anterior.
    https://www.forosforex.com/attachmen...1679738217.mq4

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Uso de cookies
Utilizamos cookies propias y de terceros para elaborar información estadística y mostrarle publicidad personalizada a través del análisis de su navegación. Si continúa navegando acepta su uso. Más información y política de cookies.
     

Aviso legal: Ni forosforex.com ni ninguna persona involucrada en forosforex.com aceptarán ninguna responsabilidad por cualquier pérdida o daño en el trading como resultado de la confianza en la información contenida en este sitio web, incluidos datos, cotizaciones, gráficos y señales de compra/venta. Por favor, infórmese plenamente de los riesgos y costes asociados a las operaciones en los mercados financieros, una de las formas de inversión que más riesgos entrañan.
forosforex.com le quiere recordar que los datos contenidos en este sitio web no son necesariamente en tiempo real ni exactos. forosforex.com no asume responsabilidad alguna por las pérdidas en que usted podría incurrir como resultado de la utilización de estos datos. Este acuerdo se rige por su versión en inglés, que prevalecerá siempre que haya alguna discrepancia entre la versión en inglés y la versión en español. Los CFD son un producto difícil de entender, varios organismos reguladores consideran que no es adecuado para inversores minoristas debido a su complejidad y riesgo.
Advertencia de riesgo: Los CFDs son un producto difícil de entender, y puede no ser adecuado para inversores minoristas debido a su complejidad y riesgo. Existe la posibilidad de sufrir una pérdida igual o superior a la inversión. Por lo tanto, no debe invertir o arriesgar dinero que no pueda permitirse perder. Debe asegurarse de que comprende todos los riesgos. Antes de abrir una cuenta en un broker por favor sea consciente e infórmese de los riesgos asociados con el trading. El contenido de este sitio web no debe interpretarse como asesoramiento personal. ForosForex recomienda que busque el consejo de un asesor financiero independiente.