Ayuda a la codificación - página 777

 
Algo_W:

No estoy seguro de cómo implementar IMaOnArray para esto. ¿Creo que esa es la solución? ¿Alguien puede ayudarme a obtener la media móvil del ADX para el histograma?

Gracias

#property indicator_type1 DRAW_LINE

#property indicator_type1 DRAW_LINE
for(int i = limit-1; i >= 0; i--)
   Buffer1[i] = iADX(NULL, PERIOD_CURRENT, 14, PRICE_CLOSE, MODE_MAIN, i);
   
for(i = limit-1; i >= 0; i--)   
   Buffer2[i] = iMAOnArray(Buffer1, 0, 5, 0, MODE_SMA, i);
 
Naguisa Unada:

¡Hola Naguisa!

Confío en tu bienestar.

Quiero apreciar y decir gracias por ajustar el indcator mtf BB. puedo decir que su trabajo como un encanto.


¡Naguisa! Sólo para preguntar más si puedo, puede este indicador ser tweekable de modo que uno puede ver diferentes personalizados de tiempo-cuadros decir, como los números de Fibonacci o cualquier par e impar de tiempo-cuadros y no necesariamente los de MT4 sólo. es posible, por favor?

 

Ayuda para codificar por favor.

¿Cómo se puede codificar

ad rayo derecho a un punto final ma.?

 
guner:

Ayuda para codificar por favor.

¿Cómo se puede codificar

ad rayo derecho a un punto final de ma.?

Dibuje el objeto de tendencia con los valores de PRECIO1 y PRECIO2 iguales al valor de su MA elegido en la barra 0 y TIEMPO1 igual al tiempo de la barra 0 mientras que TIEMPO2 está en algún lugar en el futuro. Encada tick recalcula la MA y establece el PRECIO1 y el PRECIO2 en consecuencia y en cada nueva barra establece el nuevo TIEMPO1.

 

Hola a todos,


Estoy estudiando el libro "Volatility illuminated" de Mark Whistler y estoy interesado en profundizar en los indicadores que construyó, especialmente el WAVE-PM
Whistler publicó el código mq4 en el libro y hay una copia también aquí http://fxcodebase.com/code/viewtopic.php?f=38&t=64011

Sin embargo mi intención es portar el indicador a tradingview ya que es mi principal plataforma de gráficos, conozco algo de pinescript básico pero me resulta muy difícil leer en el código C del script original
¿Puede alguien echarle un vistazo al código y decirme más o menos la lógica de lo que hace?

En el libro Whistler no dice mucho sobre el indicador, sólo que "está identificando visualmente la 'compresión' de la distribución a corto plazo dentro de la distribución más grande".



Por lo que he entendido el oscilador representa la diferencia entre las bandas superior e inferior de una banda de bollinger, luego el valor se normaliza en un rango de 0-1 y se traza a lo largo del tiempo

En el código veo que se crean dos osciladores (ShortBandsPeriod y LongBandsPeriod) pero luego me pierdo en los ciclos de for...sólo veo que hay algunos cálculos matemáticos (un cuadrado, unapotenciaexponente, y una tangente?) pero infelizmente no puedo entender por qué y cómo se hacen

.
.
.
for (i=limit; i>=0; i--){
   
             
                avg= iMA(NULL,0,ShortBandsPeriod,0,MODE_SMA,PRICE_CLOSE,i+ShortBandsShift);
                
                sum=0;
                
                for (j=ShortBandsPeriod-1; j>=0; j--){
                 temp = Close[i+j] - avg;
                 sum = sum + temp * temp;
                }
         
                ShortDev[i]= ShortBandsDeviations * MathSqrt(sum / ShortBandsPeriod);
        ShortDev1[i] = MathPow((ShortDev[i] / Point), 2);
                
                
                    //if  ( i < limit - Chars)
                        //{
         
                        
                          temp=0;
                                for (j=Chars-1; j>=0; j--){                             
                                 temp = temp + ShortDev1[i+j];
                                }
                        
            temp = MathSqrt(temp / Chars) * Point;
            if (temp != 0)
                        {
                temp = ShortDev[i] / temp;
            }

                                
         
                        ShortOscillator[i] = MathTanh(temp);
                                
                   //}
   }
.
.
.


Cualquier ayuda, sugerencia o pista es apreciada, ¡gracias!

Archivos adjuntos:
WAVE-PM.mq4  5 kb
 

Hola, chicos, podría algunos codificadores ayudar a modificar este indicador de pescador.

Sí, es un indicador muy viejo y repintado, sin embargo, tiene alguna información valiosa. Quiero analizar el estado del indicador cuando cada vela cerrada.

No cambiamos la función de repintado,solo añadimos auto-refresco.Haz que el indicador se refresque y registre el estado cuando cada vela se cierra,pero no se refresca durante la siguiente vela está empezando.

Lo siento por mi mal inglés.Gracias de antemano.

Archivos adjuntos:
fisher1.mq4  3 kb
 

¡Hola chicos!

Confío en que todo esté bien.

Encontré estos indicadores en el foro de la zona dinámica pero no funcionan como tal y si algún generoso codificador puede arreglarlos, se lo agradecería mucho.

Los estoy adjuntando aquí,

Mi más sincero agradecimiento de antemano.

 
Mkurugenzi:

¡Hola chicos!

Confío en que todo esté bien.

Encontré estos indicadores en el foro de la zona dinámica pero no funcionan como tal y si algún generoso codificador puede arreglarlos, se lo agradecería mucho.

Los estoy adjuntando aquí,

Mi más sincero agradecimiento de antemano.

@Naguisa Unada


Confío en que te encuentres bien.


Por favor, ¿estás en condiciones de ver mi último post y ver si estás en condiciones de al menos retocar algunos si no todos los indicadores para que funcionen?


se agradece de antemano tu esfuerzo, tiempo y recursos.

 

¡Hola codificadores! ¿Puede alguien ayudarme a modificar este EA?

Se trata de un simple EA de compra baja y venta alta que lanza órdenes de límite cada x minutos que duran x minutos/horas.


Lo que creo que mejoraría es añadirle un filtro. Digamos estocástico o RSI ..

Así que cuando estocástico es inferior a 40 = lanzar los límites de compra

Y cuando el estocástico es superior a 60 = lanzar los límites de venta

Y entre medias no lanza nada



¿Es esto posible? Gracias de antemano.

Adjunto el EA


He utilizado el EA "manualmente" decidiendo ejecutarlo a largo o a corto plazo con buenos resultados.

Archivos adjuntos:
WIDE_HARD.mq4  8 kb
EA-FXblue.png  68 kb
 
Hola. Inmediatamente me disculpo por mi mal inglés. Si no es difícil, por favor ayude con el código del asesor. Es decir, para corregir las condiciones de apertura y cierre de posiciones. Un poco sobre el robot, el robot abre y cierra posiciones a la vuelta del indicador zig zag.
Se supone que este sistema funciona independientemente de que haya o no un indicador de zig zag en MT4.
//+------------------------------------------------------------------+
//|                                       Test advisor on ZigZag.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                         https:/goga342@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright c 2010, MQL для тебя."
#property link "http://mql4you.ru"
#property strict
extern double lots = 0.01; //
extern int  TakeProfit=60; //
extern int  StopLoss=100; //
extern int Magic=111111111;
extern int Slippage=3;
extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;

datetime Today=0;
double SL,TP;
int ticket;
//±-----------------------------------------------------------------+
int OnInit()
  {
   if(Digits==3 || Digits==5)
     {
      TakeProfit *=10;
      StopLoss   *=10;
      Slippage   *=10;
     }
   return(INIT_SUCCEEDED);
  }
//±-----------------------------------------------------------------+
int deinit() {return(0);}
//±-----------------------------------------------------------------+
int start()
  {

   if(DayOfWeek()==0 || DayOfWeek()==6) return(0); // в выходные не работаем
   if(!IsTradeAllowed()) return(0); // пропустим тик если терминал занят
                                    //:проверим открытие новой свечи
   if(Time[0]==Today) return(0);
   Today=Time[0];
//:получим значение ZigZag на предыдущей свече
   double lZZ=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,1);
   double lZZ_=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,0);
// открытие продаж

   if(CountSell()==0 && lZZ==Low[0] && lZZ_==Low[0])
     {
      SL = NormalizeDouble(Bid+StopLoss*Point, Digits);
      TP = NormalizeDouble(Bid-TakeProfit*Point, Digits);
        {

         ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,Slippage,SL,TP,"macd sample",Magic,0,Red);
         if(ticket>0)
           {
            // закрытие продаж
    //        if(CountSell()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
              {
               for(int i=OrdersTotal()-1; i>=0; i--)
                 {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                    {
                     if(OrderMagicNumber()==Magic && OrderType()==OP_SELL)
                        if(OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,clrNONE))
                           Print("Ошибка открытия ордера на покупку !");
                    }
                 }
              }
           }
        }
     }
// открытие покупок

 //  if(CountBuy()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
     {
      TP = NormalizeDouble(Ask+TakeProfit*Point, Digits);
      SL = NormalizeDouble(Ask-StopLoss*Point, Digits);
        {
         ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,Slippage,SL,TP,"macd sample",Magic,0,Green);
         if(ticket>0)
           {
            // закрытие покупок    
       //     if(CountBuy()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])
              {
               for(int i=OrdersTotal()-1; i>=0; i--)
                 {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                    {
                     if(OrderMagicNumber()==Magic && OrderType()==OP_BUY)
                        if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,clrNONE))
                           Print("Ошибка открытия ордера на продажу!");
                    }
                 }
              }
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
int CountSell()//проверкна открытие ордеров на продажу
  {
   int count=0;

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL)
           {
            if(OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
int CountBuy()// проверкна открытие ордеров на покупку
  {
   int count=0;

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
           {
            if(OrderType()==OP_BUY)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+

apertura de ventas

if(CountSell()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])

cierre de ventas

      if(CountSell()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
              

aperturade compra

if(CountBuy()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
     

cierre de compra

 if(CountBuy()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])
              
Razón de la queja: