Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1238

 
Alexey Viktorov:

E a primeira parte da linha e a pergunta como um todo?

Bem, somos programadores. Copos cheios e vazios na mesa de cabeceira e tudo isso...

Contudo, escrevi três cenários possíveis e o que acontece durante os mesmos no ciclo de cálculo do indicador principal:

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

FAQ de Iniciantes MQL5 MT5 MetaTrader 5

Artyom Trishkin, 2020.08.06 15:17

rates_total - prev_calculates é um algoritmo muito eficiente.

  • Se for igual a zero, significa cálculo na barra actual através do tick
  • Se for igual a 1, significa que há uma nova barra e duas barras serão calculadas - a anterior e a actual
  • Se for superior a 1, significa ou a primeira execução ou mudança nos dados do histórico
Calculamos o limite. E no laço do limite para maior ou igual a zero, calculamos os dados indicadores. E calcular qual é o limite ao calcular o limite = taxas_total - prev_calcula-se

A quarta situação - abaixo de zero - é bem possível. Mas simplesmente não será processado no laço calculado para(int i=limite; i>=0; i--) ...

Poucas pessoas querem apenas pensar no assunto e normalmente apenas copiar e colar. De forma correspondente, o primeiro lançamento e a alteração da história são quando o limite >1, por isso devemos escrever sobre o primeiro lançamento em tal situação e não verificar se o cálculo foi feito a zero.

 
Сергей Таболин:

Alexei, estou interessado )))) Mas eu não vejo o erro! E não há vergonha em aprender. E se alguém é mais inteligente ou mais experiente, também não vejo nada de errado com isso.

Acabei de executar o indicador com um grande parâmetro de entrada para o tamanho de uma vela. Quero ter candelabros mais pequenos.

Todos os preços para os castiçais são calculados e rubricados a partir de amortecedores indicadores. Tudo está correcto. Mas não houve qualquer rendição. Não compreendo porquê.

Eu sugeri-lhe

Alexey Viktorov:

......... para começar por seleccionar barras após um número N, ou pelo menos uma última barra fechada. Já o experimentou? Será que presta?

E, mais uma vez, sugiro que comece por seleccionar pelo menos um último bar fechado. Quando se obtém um resultado positivo, só então se procede aos cálculos e condições.

 
Alexey Viktorov:

Eu sugeri-lhe

e sugiro que comece por destacar pelo menos um último bar fechado. Quando se obtém um resultado positivo, só então se procede aos cálculos e condições.

Receio não o compreender... Que bar se propõe atribuir? Aquele que eu formei? Ou na tabela?

Se estiver na tabela, não preciso deles a priori. O indicador é considerado o mesmo em qualquer período de tempo.

O cálculo anterior foi efectuado em H1, e agora está em H4. O resultado é o mesmo.

2020.08.08 11:06:14.580 newCandles (USDJPY,H4)  ~~~~ Предварительный расчёт индикатора.
2020.08.08 11:06:14.789 newCandles (USDJPY,H4)  2019.01.02 06:00:00 >>> Свеча 00000 >> open = 109.419 hihg = 109.462 low = 105.388 close = 105.388 > Сформирована за 122162 тика.
2020.08.08 11:06:15.230 newCandles (USDJPY,H4)  2019.01.03 00:41:15 >>> Свеча 00001 >> open = 105.388 hihg = 109.388 low = 105.268 close = 109.388 > Сформирована за 1336258 тиков.
2020.08.08 11:06:19.056 newCandles (USDJPY,H4)  2019.01.17 21:50:34 >>> Свеча 00002 >> open = 109.388 hihg = 112.398 low = 105.388 close = 105.388 > Сформирована за 11546466 тиков.
2020.08.08 11:06:20.788 newCandles (USDJPY,H4)  2019.08.09 18:57:55 >>> Свеча 00003 >> open = 105.388 hihg = 109.388 low = 104.453 close = 109.388 > Сформирована за 5400916 тиков.
2020.08.08 11:06:22.592 newCandles (USDJPY,H4)  2019.11.07 17:57:24 >>> Свеча 00004 >> open = 109.388 hihg = 112.225 low = 105.384 close = 105.384 > Сформирована за 5555641 тик.
2020.08.08 11:06:22.725 newCandles (USDJPY,H4)  2020.03.06 11:47:26 >>> Свеча 00005 >> open = 105.384 hihg = 105.732 low = 101.377 close = 101.377 > Сформирована за 272724 тика.
2020.08.08 11:06:22.822 newCandles (USDJPY,H4)  2020.03.09 15:37:48 >>> Свеча 00006 >> open = 101.377 hihg = 105.378 low = 101.187 close = 105.378 > Сформирована за 314847 тиков.
2020.08.08 11:06:23.736 newCandles (USDJPY,H4)  2020.03.10 21:05:27 >>> Свеча 00007 >> open = 105.378 hihg = 109.385 low = 103.094 close = 109.385 > Сформирована за 2045775 тиков.
2020.08.08 11:06:27.124 newCandles (USDJPY,H4)  2020.03.19 04:13:11 >>> Свеча 00008 >> open = 109.385 hihg = 111.711 low = 105.385 close = 105.385 > Сформирована за 10250092 тика.
2020.08.08 11:06:27.296 newCandles (USDJPY,H4)  ~~~~ Предварительный расчёт индикатора закончен.
 
Сергей Таболин:

Receio não o compreender... Que barra se propõe destacar? Aquela que se formou em mim? Ou na tabela?

Se estiver na tabela, não preciso deles a priori. O indicador é considerado o mesmo em qualquer período de tempo.

O cálculo anterior foi efectuado em H1, e agora está em H4. O resultado é o mesmo.

Alexey disse-lhe que primeiro devia, pelo menos, fazer com que o seu indicador desenhasse velas. Como eles são. Pelo menos no bar actual. Se o conseguir fazer, considere que o primeiro passo para o entendimento já passou. Mas é desejável não tentar encontrá-lo tentando parâmetros diferentes, mas com a sua própria mente.

O que é que isto tem a ver com "a priori"? Precisa muito dela - se não conseguir desenhar uma vela com apenas quatro valores.

 
Artyom Trishkin:

Alexey disse-lhe que deveria primeiro fazer o seu indicador, pelo menos, apenas desenhar velas. Como eles são. Pelo menos no bar actual. Se o conseguir fazer, considere que o primeiro passo para a compreensão já passou. Mas é desejável não tentar encontrá-lo tentando parâmetros diferentes, mas com a sua própria mente.

O que é que isto tem a ver com "a priori"? Precisa mesmo dela, pois não pode desenhar uma vela com apenas quatro valores.

Já está. Fará. ... ...

 
Olá utilizadores do fórum. Pode por favor dizer-me como fazer uma recepção sequencial de sinais. Por exemplo, eu recebo o primeiro a partir das 4h, depois a hora, 15 minutos e entro no comércio apenas no mínimo? Pedi o código emprestado à CodeBase
//+------------------------------------------------------------------+
//| Search trading signals                                           |
//+------------------------------------------------------------------+
bool  SearchTradingSignals(void)
  {
   if(m_prev_bars==m_last_deal_in) // on one bar - only one deal
      return(true);
//---
   double  ma[];
   MqlRates  rates_1[],rates_2[],rates_3[],rates_4[];
   ArraySetAsSeries(ma,true);
   ArraySetAsSeries(rates_1,true);
   ArraySetAsSeries(rates_2,true);
   ArraySetAsSeries(rates_3,true);
   ArraySetAsSeries(rates_4,true);
   int  start_pos=0,count=3;
   if(!iGetArray(handle_iMA,0,start_pos,count,ma) ||
      CopyRates(m_symbol.Name(),Inp_Timeframe_1,start_pos,count,rates_1)!=count ||
      CopyRates(m_symbol.Name(),Inp_Timeframe_2,start_pos,count,rates_2)!=count ||
      CopyRates(m_symbol.Name(),Inp_Timeframe_3,start_pos,count,rates_3)!=count ||
      CopyRates(m_symbol.Name(),Inp_Timeframe_4,start_pos,count,rates_4)!=count)
     {
      return(false);
     }
   int  size_need_position=ArraySize(SPosition);
   if(size_need_position>0)
      return(true);

   if((rates_1[0].open<rates_1[0].close) && (rates_2[0].open<rates_2[0].close) &&
      (rates_3[0].open<rates_3[0].close) && (rates_4[0].open<rates_4[0].close) && ma[2]<ma[1] && ma[1]<ma[0])
     {
      if(!InpReverse)
        {
         if(InpTradeMode!=sell)
           {
            ArrayResize(SPosition,size_need_position+1);
            SPosition[size_need_position].pos_type=POSITION_TYPE_BUY;
            if(InpPrintLog)
               Print(__FILE__," ",__FUNCTION__,", OK: ","Signal BUY");
            return(true);
           }
        }
      else
        {
         if(InpTradeMode!=buy)
           {
            ArrayResize(SPosition,size_need_position+1);
            SPosition[size_need_position].pos_type=POSITION_TYPE_SELL;
            if(InpPrintLog)
               Print(__FILE__," ",__FUNCTION__,", OK: ","Signal SELL");
            return(true);
           }
        }
     }
   if((rates_1[0].open>rates_1[0].close) && (rates_2[0].open>rates_2[0].close) &&
      (rates_3[0].open>rates_3[0].close) && (rates_4[0].open>rates_4[0].close) && ma[2]>ma[1] && ma[1]>ma[0])
     {
      if(!InpReverse)
        {
         if(InpTradeMode!=buy)
           {
            ArrayResize(SPosition,size_need_position+1);
            SPosition[size_need_position].pos_type=POSITION_TYPE_SELL;
            if(InpPrintLog)
               Print(__FILE__," ",__FUNCTION__,", OK: ","Signal SELL");
            return(true);
           }
        }
      else
        {
         if(InpTradeMode!=sell)
           {
            ArrayResize(SPosition,size_need_position+1);
            SPosition[size_need_position].pos_type=POSITION_TYPE_BUY;
            if(InpPrintLog)
               Print(__FILE__," ",__FUNCTION__,", OK: ","Signal BUY");
            return(true);
           }
        }
     }
//---
   return(true);
  }
//+------------------------------------------------------------------+

Four Timeframes 2
Four Timeframes 2
  • www.mql5.com
На одном из таймфреймов (задается через параметр 'MA Trend ') создаётся трендовый индикатор iMA (Moving Average, MA). Именно этот индикатор будет работать в качестве трендового фильтра. Тренд определяется так: MA на трёх барах (#2, #1 и #0) имеет одно направление. Советник проверяет направление бара #0 (это самый правый бар, который Вы видите...
 
Olá. Decidi tentar dominar tanto a língua mql5 como a plataforma mt5. Tenho uma pergunta sobre o provador. A minha pergunta é sobre as citações. Coloquei o par audcad na plataforma da Weltrade. Tenho um pequeno painel informativo no meu Expert Advisor. Vejo no modo de visualização que a propagação não é correcta (muito pequena, semelhante à propagação eurusd). Contactei o apoio técnico da empresa (Veltrade) e perguntei se existem spreads diferentes para mt4 e mt5. Responderam que são os mesmos. O que devo fazer se não houver correspondência no testador? Tentei optimizá-lo utilizando o código genético. A minha carga de CPU era 100%, e após alguns minutos de trabalho o meu computador falhou (o processador era um phenom II x4 955 (4 núcleos, 3,2 GHz), o refrigerador estava em reserva). Depois de duas vezes, decidi não arriscar mais. Como devo compreender uma situação destas? Depois, quando se testa sem visualização, não há qualquer informação sobre o negócio, apenas um gráfico. É verdade ou estou a fazer algo de errado? A informatividade é bastante fraca no modo de visualização. Na verdade, estou mais preocupado com a inconsistência dos spreads. Em suma, a minha primeira impressão é de completa desilusão. Mas desconto para o facto de ainda não o ter descoberto.
 
Youri Lazurenko:
Olá. Decidi tentar dominar tanto a língua mql5 como a plataforma mt5. Tenho uma pergunta sobre o provador. Tenho uma pergunta sobre citações. Coloquei o par audcad na plataforma da Weltrade. Tenho um pequeno painel informativo no meu Expert Advisor. Vejo no modo de visualização que a propagação não é correcta (muito pequena, semelhante à propagação eurusd). Contactei o apoio técnico da empresa (Veltrade) e perguntei se existem spreads diferentes para mt4 e mt5. Responderam que são os mesmos. O que devo fazer se não houver correspondência no testador? Tentei optimizá-lo utilizando o código genético. A minha carga de CPU era 100%, e após alguns minutos de trabalho o meu computador falhou (o processador era um phenom II x4 955 (4 núcleos, 3,2 GHz), o refrigerador estava em reserva). Depois de duas vezes, decidi não arriscar mais. Como devo compreender uma situação destas? Depois, quando se testa sem visualização, não há qualquer informação sobre o negócio, apenas um gráfico. É verdade ou estou a fazer algo de errado? A informatividade é bastante fraca no modo de visualização. Na verdade, estou mais preocupado com a inconsistência dos spreads. Em suma, a minha primeira impressão é de completa desilusão. Mas desconto para o facto de ainda não o ter descoberto.

Definir testes baseados em carraças reais. Então, todas as dúvidas sobre a validade da propagação desaparecerão.


 
Alexey Viktorov:

Definir testes baseados em carraças reais. Então, todas as dúvidas sobre a validade da propagação desaparecerão.


Obrigado, vou tentar agora. Quais são os seus conselhos sobre a optimização. Estou mais interessado na velocidade. Posso corrigir a qualidade mais tarde, ao testar.

P.S. Fi-lo como aconselhou, os spreads são os mesmos. Verifiquei propositadamente o tipo de conta. Especifica-se a sua propagação no audcad 4.1 (flutuante). Na mesma conta (gráfico de demonstração) é 4,7 (flutuante). No testador, mt5, máximo 2,8 (flutuando para um lado mais pequeno).

 
Youri Lazurenko:

Obrigado, vou tentar. Qual é o seu conselho em matéria de optimização? Estou mais interessado na velocidade. A qualidade pode ser ajustada mais tarde, aquando dos testes.

Não lhe posso dar qualquer conselho. Não utilizo a optimização. Penso que se trata apenas de um charlatão.