Pregunta sobre el indicador - página 8

 
heelflip43:

Creo que tu problema está en que no has reseteado val1 y val2. Así que una vez que hayas encontrado el máximo y el último mínimo tienes que restablecerlos:

Espero que eso ayude.
Ahhh, lo probaré una vez que arranque con Windows más tarde hoy, gracias

Pensé que si la primera declaración if(era verdadera, entonces habría reiniciado el start() de nuevo y reiniciado desde la parte superior del código y por lo tanto reiniciado val1 y val2 de nuevo

Bueno, la forma en que estaba pensando en ello era - if(primera declaración) verdadera entonces imprime, y luego se mueve al texto la siguiente if(segunda) probablemente falsa entonces vuelve a la parte superior del inicio de nuevo y reinicia val1 y val2

Estoy recibiendo las impresiones correctas y los valores, pero sólo imprime continuamente.

Ahora que lo pienso, nunca me he dado cuenta de esto para ningún if(statement), incluso el más simple de los cruces de EMA produce impresiones continuas

Probaré tu código que has publicado, pero me sorprendería si añadiera declaraciones de impresión para imprimir esas variables y no imprimiera también continuamente

Lo probaré más tarde hoy

Gracias
 
Ok si reseteando val1 y val2 me devuelve los altos de A pero sigue imprimiendo todo continuamente, no tantos como antes.
Estoy seguro de que tengo que hacer algo con currentTime y iTime para arreglar esto, tendré que revisarlo un poco más.

Parece que ya debería haber un esquema ABCD en la base de código para aprender de él, pero esto parece ser algo que no está disponible, excepto basado en ZigZag que estoy revisando ahora para ver si esto me da alguna pista. Pero, de nuevo, esto es también un indicador

De todos modos, si añado && macd o algo así, sólo los imprime una vez, lo que realmente me está despistando
 
Creo que lo tengo, después de pensar un poco más en ello y trabajar un poco más

¿Qué tal esto?

//+------------------------------------------------------------------+
//|                                                  Agent86_5min.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS by Agent86"


//---- input parameters
extern double    TakeProfit=20.0;
extern double    Lots=0.1;
extern double    StopLoss=10.0;
extern int MagicNumber=123486;

double val1;
double val2;
bool traded = false;
bool A = false;

//++++ These are adjusted for 5 digit brokers.

int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)

    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Digits == 5 || Digits == 3)
   {    // Adjust for five (5) digit brokers.
      pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
   } 
   else 
    {    
      pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; 
    }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   
        
   int i=0;
   int ticket,total,result;
   total = OrdersTotal();                 
   val1=iFractals(NULL, 0, MODE_UPPER,3);
   val2=iFractals(NULL, 0, MODE_LOWER,3); 


     
     if(val1 > 0 && traded == false && val2==0)
      { 
      // in the absence of an && indicator above I get continous print statements
      // also does not print A high this is not desired
      // with indicator added && indicator above, then it prints A and B once as it should ???
      // I need to work this out so it won't print all the time aka trade all the time
      // A and B first values seems to initialize the whole block
      // just a reminder that they time stamps coordinate after this FYI
      // now work on C retrace and possibly signals
      // add options for user to select some candle patterns
      // add options to select indicators
      // add bells and whistles to make things fun
      // alerts,sounds,maybe poppup video animation or something
      
      double B = val1;
      Print(B, " B high");
         if(val2==0)
            {
            for (i=0; val2==0; i++)
               {
               val2=iFractals(NULL, 0, MODE_LOWER, i);
               double A = val2;
                  if(A!=0)
                     {
                     Print(A, " A low");
                     }
               }
             }  
      traded=true;
      }
     
     val1=iFractals(NULL, 0, MODE_UPPER,3);
     val2=iFractals(NULL, 0, MODE_LOWER,3); 
     
     if(val2 > 0 && traded == true && val1 == 0)
      {
      B = val2;
      Print(B, " B low");
         if(val1==0)
            {
            for (i=0; val1==0; i++)
               {
               val1=iFractals(NULL, 0, MODE_UPPER, i);
               A = val1;
                  if(A!=0)
                     {
                     Print(A, " A high");
                     }
               }
             }  
      traded=false;
      }
     
                    
                
   return(0);
  }    

//+------------------------------------------------------------------+


      

Esto sólo se imprime una vez al añadir

if(val1 > 0 && traded == false && val2==0)

y

if(val2 > 0 && traded == true && val1 == 0)


Así que me estoy acercando un poco naw puedo evaluarlo un poco más.

Gracias por la ayuda de todos, esto fue una ayuda gigante porque me juego las ideas para arreglar esto y amplió mis conocimientos un poco más sobre el restablecimiento de las cosas también.
Tengo que guardar eso en mi bolsillo trasero

Gracias

 

No tengo el problema la mayor parte del tiempo. Parece que sólo ocurre cuando hay un fractal superior y otro inferior en la misma barra, lo que ocurre a veces en mercados inciertos. La única manera de evitar esto es sólo ejecutar el cálculo una vez por barra así:

static datetime currTime;
if(Time[0]!=currTime){
currTime = Time[0];
// Rest of code
}

Eso debería significar que no obtendrá falsas operaciones en fractales que van en ambas direcciones.

 
Ahora puedo empezar a trabajar en el resto, sólo desearía tener la suficiente experiencia para entender la conversión de un indicador iCustom a un EA entonces probablemente ya habría tenido esto resuelto hace mucho tiempo.

La forma en que lo estoy haciendo ahora será más complicado porque todavía tengo que añadir indicadores iCustom junto a mi lógica de código; y todas las campanas y silbatos en lugar de utilizar un indicador iCustomer ya de trabajo como mi lógica de código

De todos modos, gracias de nuevo, una gran noticia para el día.
 
O tu solución también funcionaría, estaba en plena prueba de mi teoría y no vi tu post.
 
heelflip43:

No tengo el problema la mayor parte del tiempo. Parece que sólo ocurre cuando hay un fractal superior y otro inferior en la misma barra, lo que ocurre a veces en mercados inciertos. La única manera de evitar esto es sólo ejecutar el cálculo una vez por barra así:

Eso debería significar que no obtendrá falsas operaciones en fractales que van en ambas direcciones.

Necesito aprender cómo funciona esta parte un poco mejor lo he visto antes y otras versiones similares pero sólo entendiendo en parte

Necesito estudiar esto un poco más. Puede que sea aquí donde estoy perdiendo la mayoría de mis códigos debido a las continuas sentencias de impresión cuando hago pruebas.

Estoy seguro de que hay otras formas de evitarlo y, sin embargo, pienso crear también el indicador para esto y dibujar las líneas de AtoB, etc.

Voy a estudiar un poco más
 
Aquí hay algunos progresos que hice hasta ahora

Tal vez alguien puede hacer buen uso de ella, estoy seguro de que puede ser revisado mejor por un gurú

En cualquier caso, está imprimiendo lo que quiero y he añadido algunos valores externos para los niveles de fibo para que los usuarios puedan seleccionar los niveles que quieran

Mi primera contribución de código a los foros LOL

Alguien tiene una mejor manera de occomplish esta tarea ya anticiparse a duplicar el código debido a la adición de indicadores iCustom para mostrar lo que mi código está haciendo, pero esto significa una especie de doble codificación para un búfer de matriz, etc y luego usar iCustom

De todos modos esto es lo que tengo

//+------------------------------------------------------------------+
//|                                          Unfinished_POS_slate.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS slate by Agent86"


//---- input parameters
extern double    TakeProfit=20.0;
extern double    Lots=0.1;
extern double    StopLoss=10.0;
extern int MagicNumber=123486;
extern double fibo_retrace=0.500; //this is C retracement level
extern double fibo_extension=1.618;  // coming soon, D extention 


double val1;
double val2;
bool traded = false;


//++++ These are adjusted for 5 digit brokers.

int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)

    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Digits == 5 || Digits == 3)
   {    // Adjust for five (5) digit brokers.
      pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
   } 
   else 
    {    
      pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; 
    }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
   
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   
        
   int i=0;
   int ticket,total,result;
   total = OrdersTotal();                 
   val1=iFractals(NULL, 0, MODE_UPPER,3);
   val2=iFractals(NULL, 0, MODE_LOWER,3); 

     
     if(val1 > 0 && val2 == 0 && traded == false)
      { 
      double B = val1;
      Print(B, " B high");
      if(val2==0)
         {
         for (i=0; val2==0; i++)
            {
            val2=iFractals(NULL, 0, MODE_LOWER, i);
            double A = val2;
            if(A!=0)
              {
              Print(A, " A low");
              }
            }
          }
       double C = B-(B-A)*fibo_retrace; //retrace 50% no fractal
       Print(C, " UP ABC retrace level");
       if(Bid <= C)
         {
         Print (Bid, " UP ABC C Retrace Hit");
         }  
      
      
      traded=true;
      }
     
     //val1=iFractals(NULL, 0, MODE_UPPER,3); been suggested I might need to reset these here
     //val2=iFractals(NULL, 0, MODE_LOWER,3); I'll investigate this some more
     
     
     if(val2 > 0 && val1 == 0 && traded == true)
      {
      B = val2;
      Print(B, " B low");
      if(val1==0)
        {
        for (i=0; val1==0; i++)
           {
           val1=iFractals(NULL, 0, MODE_UPPER, i);
           A = val1;
           if(A!=0)
             {
              Print(A, " A high");
             }
           }
        }        
             
        C = B+(A-B)*fibo_retrace; //retrace 50% no fractal  //recheck my math on this one
        Print(C, " DOWN ABC retrace level");
        if(Bid <= C)
           {
           Print (Bid, " DOWN ABC C Retrace Hit");
           } 
                 
      traded=false;
      }
     
                    
                
   return(0);
  }    

//+------------------------------------------------------------------+
Con mis limitados conocimientos y experiencia esto es todo lo que se me ocurrió para un esquema ABCD

Trabajaré más en ello para permitir al usuario cambiar A's y B's a niveles que no violen los A's y B's anteriores con el fin de mantenerse realmente dentro de una tendencia, etc.

Espero que alguien pueda usar esto o tal vez pueda agregarle algunas ideas mejores

Ahora voy a trabajar en los patrones de velas e indicadores para añadir a ella o algo así, y las alertas emergentes, tal vez los sonidos y algunos videos emergentes podría ser divertido

Gracias por la ayuda de todos.

 

¡Доброго времени суток уважаемые форумчане!

Меня зовут Герман, мне 23 года, я являюсь трейдером компании "Инстафорекс"

¡Помогите в поиске нужного скрипта! Скрипт нужен для сетки отложенных ордеров.

 
GERICH:

¡Доброго времени суток уважаемые форумчане!

Меня зовут Герман, мне 23 года, я являюсь трейдером компании "Инстафорекс"

¡Помогите в поиске нужного скрипта! Скрипт нужен для сетки отложенных ордеров.

Amigo no estoy interesado en InstaForex y si quieres un script de rejilla por favor publica un proyecto en la sección de codificadores para contratar
Y por favor publica en inglés

Feliz comercio
Razón de la queja: