Script MQL4 - aberto na nova questão do bar - Page 2
Página 2 de 743 FirstFirst 1 2 3 ÚltimaÚltima
Results 11 to 20 of 23

Thread: Script MQL4 - aberto na nova questão do bar

  1. #11

    Eu fiz isso usando a função Barras, não tenho certeza se é à prova de bala, mas eu acredito que o truque também
    Esteja ciente de que essa abordagem não é confiável, já que o MT pára de atualizar a contagem de publicações após a configuração máxima de publicações. Então, thereal! Método confiável é verificar o tempo.

  2. #12

    citação Esteja ciente de que este método não é confiável, já que o MT pára de atualizar a contagem de barras depois que a atmosfera máxima de barras é atingida. Então, o único! O método que é confiável é inspecionar o tempo.
    Sim, concordou, certamente não use o método Bars. O método para utilizar o SeriesInfoInteger e chamá-lo para o seu LASTBAR_DATE e perguntar novamente até que a sua função expire ou você obtenha um resultado limpo. Aqui está um exemplo de uma função isNewBar do MTF ... Inserted Code #include lt; Arrays \ ArrayObj.mqhgt; classe NewBars: public CObject {ENUM_TIMEFRAMES m_timeframe; datetime m_last_bar_time; pessoas: NewBars (ENUM_TIMEFRAMES tf): m_timeframe (tf), m_last_bar_time (0) {} bool isNewBar () uint ms = GetTickCount (); datetime curr; do ResetLastError (); curr = (datetime) SeriesInfoInteger (_Simbolo, m_timeframe, SERIES_LASTBAR_DATE); while (_LastError! = ERR_NO_ERROR GetTickCount () - ms lt; 500); if (curr gt; 0 _LastError == ERR_NO_ERROR curr! = m_last_bar_time) bool res = verdadeiro; if (m_last_bar_time == 0) res = false; m_last_bar_time = curr; return res; retorna falso; bool isMatching (ENUM_TIMEFRAMES tf) retorna m_timeframe == tf? Verdadeiro falso; }; bool isNewBar (const intervalo ENUM_TIMEFRAMES) static CArrayObj tfs; para (int I = tfs.Total () - 1; igt; = 0; I -) NewBars * tf = dynamic_castlt; NewBars * gt; (tfs.At (I)); if (tf.isMatching (interval)) retorna tf.isNewBar (); tfs.Add (new NewBars (interval)); retorna falso;

  3. #13
    1 Anexo (s)
    citação Esteja ciente de que este método não é confiável, pois o MT pára de atualizar a contagem de barras após a configuração das barras máximas. Então o! O método é para verificar o tempo.
    Não (pare de atualizar) Barras () excede o número máximo de barras em cenários quando a configuração máxima de pubs é atingida (e excedida)

  4. #14

    citação Sim, consentido, definitivamente não use o método Bars. O método para utilizar o SeriesInfoInteger e chamá-lo para o LASTBAR_DATE e, em seguida, perguntar novamente antes que o seu trabalho expire ou você obtenha um resultado. Aqui está uma instância de uma função isNewBar do MTF ... #include lt; Arrays \ ArrayObj.mqhgt; curso NewBars: public CObject {ENUM_TIMEFRAMES m_timeframe; datetime m_last_bar_time; pessoas: NewBars (ENUM_TIMEFRAMES tf): m_timeframe (tf), m_last_bar_time (0) {} bool isNewBar () {uint ms = GetTickCount (); data hora...
    Obrigado, você é muito gentil em fornecer este exemplo, aqui e em meus outros tópicos. Eu sei o que você fez aqui, mas a lingüística me ilude, pois ainda estou aprendendo o lado OO do MQL4. Eu também não estou totalmente convencido de que seu código funcionará dentro do contexto de um script, no entanto, eu não sou tão educado.

  5. #15
    citação Esteja ciente de que este método não é confiável, pois o MT interrompe a atualização da contagem de barras após a obtenção da atmosfera de barras máximas. Então, thereal! O método é para verificar o tempo.
    Obrigado, eu li respostas contraditórias em vários tópicos, então eu não estava convencido, mas ele estava trabalhando para mim, então eu percebi o que diabos

  6. #16
    quote Ele não (pare de atualizar) Bars () excede o número máximo de pubs em cenários quando a configuração de barras máximas é atingida
    Obrigado por responder, então estou certo em usar este método de barras ou não? Parece mais fácil que o sistema Time e prefiro manter as coisas simples

  7. #17
    Obrigado por responder, por isso estou certo em utilizar este método de barras ou não? Parece mais simples que o processo do Tempo e eu realmente gosto de manter as coisas fáceis
    Nenhum dos métodos é complexo: Código inserido static datetime _prevTime = 0; datetime _currTime = iTime (NULL, período de tempo desejado, 0); bool _isNewBar = (_prevTime! = _currTime); if (_isNewBar) _prevTime = _currTime;

  8. #18

    citação Nenhum procedimento é complexo: datetime estático _prevTime = 0; datetime _currTime = iTime (NULL, período de tempo desejado, 0); bool _isNewBar = (_prevTime! = _currTime); if (_isNewBar) _prevTime = _currTime;
    Obrigado, eu tinha algo parecido com o meu script, mas ele não funcionou (publicado anteriormente no artigo inicial), mesmo quando eu adicionei o RefreshRates (). Tentarei novamente com seu código, com ResreshRates () adicionado dentro e fora do loop para que o script receba novas informações.

  9. #19
    Código inserido/- Variável mundial ------------------------------------------ ------------------------ datetime ArrayTime # 91; # 93 ;, LastTime; void OnTick () if (NewBar (PERIOD_CURRENT))/seu código bool NewBar (int period) bool firstRun = falso, novoBar = falso; ArraySetAsSeries (ArrayTime, true); CopyTime (símbolo (), período, 0,2, ArrayTime); if (LastTime == 0) firstRun = true; if (ArrayTime # 91; 0 # 93; gt; LastTime) if (firstRun == falso) newBar = verdadeiro; LastTime = ArrayTime # 91; 0 # 93 ;; Rendimento newBar;

  10. #20
    Além disso, verifique este código que é adequado para intervalos de tempo aleatórios (descobertos usando a primeira cotação de preço): Código inserido #property strict void OnStart () datetime segundos = _Stage * 60;/indica qualquer quantia em segundos datetime t_last_recorded = 0;/para demonstração: D while (! IsStopped ()) RefreshRates (); datetime t = TimeCurrent ();/hora da última datação conhecida datetime t_normalized = t/moments * moments; quando (t_normalized gt; t_last_recorded)/nova barra printf (nova barra!); t_last_recorded = t_normalized; Sono (1);

Permissões de Publicação

  • Não pode publicar novos tópicos
  • Não pode publicar respostas
  • Não pode publicar anexos
  • Não pode editar as suas publicações
  •  
  • Código BB está Ativo
  • Smilies estão Ativos
  • Código [IMG] está Ativo
  • Código [VIDEO] está Ativo
  • Código HTML está Desligado
O site da tradingintuitivo utiliza cookies
O site da tradingintuitivo utiliza cookies, alguns já foram definidos. Pode ler sobre a nossa utilização de cookies aqui. Por favor, clique no botão à direita para aceitar os nossos cookies. Se continuar a usar o site da tradingintuitivo, vamos supor que aceita os nossos cookies.