Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 651

 
Taras Slobodyanik:

meu código escreve um código de longo prazo para uma variável global temporária.

Visualmente, se você pressionar F3, ele mostra zero (ou outro valor diferente).
Isto acontece porque o terminal pensa que é um valor duplo e tenta mostrá-lo, mas nós o demos por muito tempo, o que é um formato de número completamente diferente.

Se este valor for lido de volta como um duplo normal, será uma confusão.
Se for lido pelo meu código, será longo novamente (o mesmo que salvamos).
Se você clicar manualmente sobre esta variável na janela do terminal, ela será reinicializada porque o terminal detectará a troca.

Como posso usar o resultado em CHART_BRING_TO_TOP ?
 
Artyom Trishkin:

Remover o tempo de inicialização no OnInit()

Obrigado.

Por favor, poderia me dizer onde está o erro? Quando chamo fractal regular, a seta é colocada por condição, onde deveria estar, quando chamo iFreeNumFractals, a condição é cumprida, deveria haver uma seta, mas não há. Idealmente, a imagem deveria ser a mesma se comentarmos as linhas com iFreeNumFractals regulares e sem comentários, mas...

#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
//--- plot UP
#property indicator_label1  "UP"
#property indicator_type1   DRAW_ARROW
#property indicator_color1  clrLawnGreen
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plot DN
#property indicator_label2  "DN"
#property indicator_type2   DRAW_ARROW
#property indicator_color2  clrDeepPink
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1


//--- indicator buffers
double         BufferUP[];
double         BufferDN[];

int dist=3;
string nameInd;
datetime timf=0;
int numf;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,BufferUP);
   SetIndexBuffer(1,BufferDN);
//--- setting a code from the Wingdings charset as the property of PLOT_ARROW
   SetIndexArrow(0,233);
   SetIndexArrow(1,234);
  
   
//---
//---
   
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
  
//---
   if(rates_total<2) return(0);
     {
      int limit=rates_total-prev_calculated;
      if(limit>1) 
        {
         limit=rates_total-2;
         ArrayInitialize(BufferUP,EMPTY_VALUE);
         ArrayInitialize(BufferDN,EMPTY_VALUE);
        }
      for(int i=limit; i>=0; i--) 
        {
         
         if(fub(i))
           {
            BufferUP[i]=low[i]-dist*Point;
           }

         Comment("");
        }
      //--- return value of prev_calculated for next call

     }
   return(rates_total);
  }
//+
bool fub(int ib)//
  {
   bool bingob=false,flag_verh_f=0;
   int start_bar=0,numbarfrup=0,kfr_all=0;
   double high_old=0,prfra=0,f_up=0,f_dn=0,f=0;

     {
      for(int i_i=ib+3; i_i<Bars-2; i_i++)
        {
         if(high_old<High[i_i]) high_old=High[i_i];

        f_up=iFractals(Symbol(),0,MODE_UPPER,i_i);
        //f_up=NormalizeDouble(iCustom(Symbol(),0,"iFreeNumFractals",1,2,2,2,2,0,i_i),Digits);
         f_dn=iFractals(Symbol(),0,MODE_LOWER,i_i);
         //f_dn=NormalizeDouble(iCustom(Symbol(),0,"iFreeNumFractals",1,2,2,2,2,1,i_i),Digits);
         if(f_up>0 && f_up>iMA(NULL,0,33,0,MODE_SMMA,PRICE_CLOSE,i_i)+10*Point)//Если фрактал найден выше МА+10 pips
           {
            numbarfrup=i_i;
           }
         if(f_dn>0 && f_dn<iMA(NULL,0,33,0,MODE_SMMA,PRICE_CLOSE,i_i))
           {
            start_bar=numbarfrup;break;
           }
        }
      for(int i_i=start_bar; i_i<Bars-2; i_i++)
        {
         f=iFractals(Symbol(),0,MODE_UPPER,i_i);
         //f=NormalizeDouble(iCustom(Symbol(),0,"iFreeNumFractals",1,2,2,2,2,0,i_i),Digits);
         if(f>0)kfr_all++;
         if(f>0 && Low[ib]<f+1*_Point && Open[ib]>f //Сравнение фрактала с текущ баром
            &&
            high_old-f>=100*Point//от максимума до фрактала 100 пп
            )
           {
            bingob=true;
            prfra=f;
            timf=Time[i_i];
            break;
           }
         if(kfr_all==3)break;
        }
     }
// numfb=iBarShift(NULL,PERIOD_CURRENT,timf,true);
   if(bingob)
     {flag_verh_f=true;}
   if(bingob==false)
      flag_verh_f=false;

   return(flag_verh_f);

  }
//



 
inter78:
Como utilizar o resultado em CHART_BRING_TO_TOP ?

assim como usávamos CHART_BRING_TO_TOP antes

 
Oi pessoal, eu tenho no mercado três ordens de compra a um preço o preço sobe 10 pips e nós temos +10 pips para cada ordem que eu quero bloquear três ordens de venda, agora como fazer essas ordens não são mais verificadas no mkl4
 
Ghabo:

Obrigado.

Você pode me dizer onde está o erro. A situação é a seguinte, quando chamo fractal habitual, a seta é colocada por condição, onde deveria estar, quando chamo iFreeNumFractals, a condição é cumprida, deveria haver uma seta, mas não é. As linhas iFreeNumFractals são comentadas, as configurações são definidas como para fractal habitual. Em teoria, a imagem deve ser a mesma se eu comentar as linhas com o habitual fractal e comentar iFreeNumFractals, mas...




Os indicadores iFreeNumFractals estão com configurações como o padrão e o padrão Fractals no gráfico?

Em caso afirmativo, seus sinais são os mesmos?

 
Aleksandr Egorov:
Olá pessoal, tenho no mercado três ordens de compra a um preço, o preço sobe 10 pips, cada ordem tem +10 pips eu quero bloquear três ordens de venda, agora como fazer essas ordens não são mais verificadas no mcl4

Se você quiser ser compreendido - o que você quer, use sinais de pontuação em seu texto. Caso contrário, tudo em uma pilha - vá descobrir o que você quer dizer...

 
Taras Slobodyanik:

assim como o CHART_BRING_TO_TOP era usado antes

Desde que o usei, nada funciona. Provavelmente não será muito difícil para você fazer a mesma coisa, apenas como um indicador e levá-lo até CHART_BRING_TO_TOP.
 
Artyom Trishkin:

Se você quiser ser compreendido - o que você quer, use sinais de pontuação em seu texto. Caso contrário, você jogou tudo em uma pilha - vá descobrir o que quer dizer...

Temos três ordens de compra no mercado a um preço, o preço sobe 10 pips, temos +10 pips para cada ordem, quero bloquear três ordens de venda, agora como ter certeza de que essas ordens não são mais verificadas no mcl4

 

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

Qualquer pergunta de novatos sobre MQL4, ajuda e discussão sobre algoritmos e códigos

Taras Slobodyanik, 2018.10.07 22:12

GlobalVariableCheck()- verifica se esta variável já existe, se não, então
GlobalVariableTemp()- cria uma variável temporária, que será apagada por si só na próxima partida.

Este ponto é claro, porque se não existe um GP criado apenas temporário e não permanente através daGlobalVariableSet?

 
Artyom Trishkin:

Os indicadores iFreeNumFractals estão com configurações como o padrão e o padrão Fractals no gráfico?

Se houver, seus sinais correspondem?

Os fractais combinam completamente.

As setas sobre os fractais padrão na captura de tela

O iFreeNumFractals coloca o primeiro e o último, os três médios estão ausentes.

aqz

Razão: