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

 
Alexey Viktorov: Slippage sobre abertura e fechamento.

Alexey! MT5 se tornou geralmente verboso hoje - duplica TP no comentário:


 
STARIJ:

Obrigado Alexey!!! Também pensei assim - mas como verificar? e como saber o que é? e por que não existem contas reais. Talvez por ser antigo e a conta demo ser nova?

A diferença no preço tp e preço de fechamento do pedido divide por _Ponto e reconcilia-se com a entrada no comentário do pedido. Foi exatamente assim que descobrimos. A coincidência aleatória não pode durar indefinidamente e de forma estável. Acho que não existem tais escorregões na conta real. Embora eu costumava tê-los. Eu estava calculando na conta real. A princípio notei que o fechamento era em tp e o preço de fechamento não foi destacado em verde.

 

Olá, você pode me ajudar, por favor?

Quero, a qualquer momento, saber o número da barra onde se encontra a seta indicadora.

No exemplo, tentei preencher o buffer se a seta estivesse na décima barra.

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--)
     {
      for(int il=i+1;il<=i+300;il++)
        {
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",0,il),Digits)!=EMPTY_VALUE
            )
           {
            num_buy=il;
            break;
           }
        }
      //
      if(num_buy==10)
        {
         BufferUP[i+1]=low[i+1]-distance*MyPoint;

        }

      for(int il=i+1;il<=i+300;il++)
        {
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",1,il),Digits)!=EMPTY_VALUE
            )
           {
            num_sell=il;
            break;
           }
        }
      if(num_sell==10)
        {
         BufferDN[i+1]=high[i+1]+distance*MyPoint;
         
         
        }

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

   return(rates_total);
  }

Onde isso está errado?

 
mila.com: Olá, você pode me ajudar, por favor?
Quero saber, a qualquer momento, o número da barra onde está a seta indicadora.
No exemplo, tentei preencher o buffer se a seta estivesse na décima barra.
Onde isso está errado?

Normalmente, quando o verifico, eu o executo e vejo o resultado. Isto é apenas uma parte do código. Tudo é muito pequeno aqui, é difícil de ver - no meu editor é maior

if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",0,il),Digits)!=EMPTY_VALUE)
{
    num_buy=il;
    break;  // Это выход из цикла. Остальные бары лишаются чести быть просмотренными. Ошибка здесь?
}
 

Olá, você poderia aconselhar como fazer um indicador salvar dados em um arquivo

em vez do indicador de LER Williams' Percent Range


//| função de início especializado |

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

int start()

{

//----

int iRSI;

iRSI=FileOpen("File.txt", FILE_CSV|FILE_WRITE, '\t');

//------------------------------------------------//

//-------------------------------------------------//

if(iRSI>0)

{

FileWrite(iRSI, [0]);

FileClose(iRSI);

}

//----

retorno(0);

}

 
STARIJ:

Aqui tudo é muito pequeno,

Há uma opção no navegador para mudar a escala )

STARIJ:
Ошибка здесь?


Infelizmente, este não é o único erro.

O valor correto é exibido no comentário, a partir da barra atual, agora num_buy 9

Por que não há nenhuma condição na história?

if(num_buy==10)

Eu verifiquei, na EA ela abre uma posição quando a seta está na barra 10

for(int il=1;il<=300;il++)
        { 
        if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",0,il),Digits)!=EMPTY_VALUE)
            
           {
            num_buy=il;
            break;
           }
        }
        if(num_buy==10)
           {
            B_OrderSend();
           }

Como colocar um ponto no indicador quando a seta está na barra 10?

 
mila.com:

No navegador há uma opção para mudar a escala )


Infelizmente, este não é o único erro.

O comentário exibe o valor correto, a partir da barra atual, agora num_buy 9

Por que não há nenhuma condição na história?

Verificado na EA, abre posição quando a seta está na barra 10

Como colocar um ponto no indicador quando a seta está na barra 10?

O loop é interrompido assim que se vê o primeiro valor do indicador não em branco. É por isso que não chega a 10.

 
Artyom Trishkin:

Assim, você quebra o loop aqui assim que encontra o primeiro valor indicador não vazio. É por isso que não chega a dez.

Eu removi uma pausa do indicador; como recomendado pelo STARIJ

ainda não há nenhum ponto no gráfico, e no comentário escreve os números da terceira e quarta flechas, mas a primeira e a segunda (mais próximas da data atual) não vêem.

 
mila.com:

No indicador eu removi a pausa; como recomendado pelo STARIJ

ainda não há nenhum ponto na tabela

Mas você o deixou no Expert Advisor. E o que ele faz? Ele encontra o primeiro ponto do indicador e... intervalo

 
Artyom Trishkin:

Mas o conselheiro foi deixado para trás. Então o que ele faz? Ele encontra o primeiro ponto do indicador e... intervalo

Fiz o Consultor Especialista para verificar a possibilidade, ele abre corretamente, mas no indicador não vê valores dos dois tampões indicadores mais próximos "Seta v.3" de modo algum