Pergunta indicadora - página 8

 
heelflip43:

Acho que seu problema está em você não ter zerado val1 e val2. Portanto, uma vez que você tenha encontrado o alto e o último baixo, você precisa reinicializá-los:

Esperamos que isso ajude.
Ahhh, eu vou tentar uma vez que eu inicializo as janelas mais tarde hoje, obrigado

Eu pensei que se o primeiro if(declaração) fosse verdadeiro, então ele teria reiniciado o início() novamente e reinicializado a partir do topo do código e assim reinicializar val1 e val2 novamente

Bem, a maneira como eu estava pensando sobre isso era - se(primeira declaração) verdadeiro então imprime, e então se move para o texto do próximo if(segundo) provavelmente falso então volta ao topo do início novamente e reinicia val1 e val2

Estou obtendo as impressões e valores corretos, mas apenas imprime continuamente.

Agora que penso nisso, eu realmente nunca descobri isso para nenhum if(declaração), mesmo o mais simples dos cruzamentos de EMA produz impressões contínuas

Vou testar seu código que você postou, mas eu ficaria surpreso se eu adicionasse declarações de impressão para imprimir essas variáveis e também não imprime continuamente

Vou tentar mais tarde hoje

Obrigado
 
Ok sim reinicializando val1 e val2 me devolverá A alta mas ainda imprimindo tudo continuamente, não tantos como antes.
Tenho certeza de que tenho que fazer algo com o tempo atual e o iTime para consertar isto, terei que revisá-lo um pouco mais.

Parece que já deveria haver um esquema ABCD na base de código para aprender, mas isto parece ser algo que não está disponível, exceto com base no ZigZag que estou revisando agora para ver se isto me dá alguma pista. Mas mais uma vez isto também é um indicador

De qualquer forma, se eu acrescentar && macd ou algo que só os imprime uma vez, o que realmente me deixa louco.
 
Acho que o tenho, depois de pensar um pouco mais sobre ele e trabalhar um pouco mais

Que tal isso?

//+------------------------------------------------------------------+
//|                                                  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);
  }    

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


      

Isto só se imprime uma vez ao acrescentar

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

e

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


Portanto, estou me aproximando um pouco mais e posso avaliar um pouco mais.

Obrigado pela ajuda de todos, esta foi uma ajuda gigantesca, porque me deu as idéias para consertar isto e expandi meu conhecimento um pouco mais sobre como reiniciar as coisas também.
Tenho que manter isso no meu bolso de trás.

Obrigado

 

Não estou tendo o problema na maior parte do tempo. Parece que isso só acontece quando há um fractal superior e um fractal inferior na mesma barra que acontece às vezes em mercados incertos. A única maneira de contornar isso é fazer o cálculo apenas uma vez por barra:

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

Isso deve significar que não haverá falso comércio de fractal nos dois sentidos.

 
Agora eu posso começar a trabalhar no resto, eu só queria ter experiência suficiente para entender a conversão de um indicador iCustom em um EA, então eu provavelmente já teria tido isto trabalhado há muito tempo.

A maneira como estou fazendo isso agora será mais complicada porque ainda tenho que adicionar indicadores iCustom ao lado da minha lógica de código; e todos os sinos e apitos em vez de usar um indicador iCustom já funcionando como minha lógica de código.

De qualquer forma, mais uma vez, obrigado pela ótima notícia do dia.
 
Ou sua solução também funcionaria, eu estava no meio do teste de minha teoria e não vi seu posto.
 
heelflip43:

Não estou tendo o problema na maior parte do tempo. Parece que isso só acontece quando há um fractal superior e um fractal inferior na mesma barra que acontece às vezes em mercados incertos. A única maneira de contornar isso é fazer o cálculo apenas uma vez por barra:

Isso deve significar que não haverá falso comércio de fractal nos dois sentidos.

Preciso aprender como esta parte funciona um pouco melhor Eu já vi isso antes e outras versões similares, mas só em parte entendo

Preciso estudar isto um pouco mais. Pode ser aqui que eu esteja perdendo a maioria dos meus códigos devido às declarações de impressão contínua ao fazer os testes.

Tenho certeza de que há outras formas de contornar isto e, no entanto, planejo também criar o indicador para isto e traçar as linhas de AtoB etc.

Vou estudar um pouco mais
 
Aqui estão alguns progressos que fiz até agora

Talvez alguém possa fazer bom uso dela, tenho certeza que pode ser melhor revisada por um guru

De qualquer forma, é imprimir o que eu quero e eu acrescentei alguns valores externos para os níveis de fibo para que os usuários possam selecionar quais níveis eles podem querer

Minha primeira contribuição em código aos fóruns LOL

Qualquer pessoa tem uma maneira melhor de realizar esta tarefa Eu já prevejo a duplicação de código devido à adição de indicadores iCustom para mostrar o que meu código está fazendo, mas isto significa uma espécie de codificação dupla para um buffer de array etc. e depois usar iCustom

De qualquer forma, aqui está o que eu tenho

//+------------------------------------------------------------------+
//|                                          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);
  }    

//+------------------------------------------------------------------+
Com meu limitado conhecimento e experiência, isto é tudo o que eu consegui para um esquema ABCD

Trabalharei mais para permitir que o usuário mude A e B para níveis que não violem A e B anteriores, a fim de realmente permanecer dentro de uma tendência etc.

Espero que alguém possa usar isto ou talvez possa acrescentar-lhe algumas idéias melhores

Agora vou trabalhar em padrões de velas e indicadores para adicionar ou algo, e alertas popup, talvez sons e algum vídeo popup pode ser divertido

Obrigado a todos pela ajuda.

 

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

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

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

 
GERICH:

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

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

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

Cara, eu não estou interessado na InstaForex e se você quiser um script de grade, por favor poste um projeto na seção de codificadores para locação
e por favor poste em inglês

Feliz negociação