Erros, bugs, perguntas - página 133

 
Interesting:
Tanto quanto sei, como na demonstração ou no provador.
o que é isso? Re-acréscimo ou acumulação
 
Dmitriy2:

Assim, ao emitir valores para o registo, apenas uma vez (pela primeira vez) a função parabólica, ou seja, CopyBuffer, retorna 0 e não -1, como deve ser em caso de erro (embora também não deva ser, todos os dados estão lá, todos descarregados, não devem ocorrer grandes matrizes multidimensionais, nenhum erro!) E isto acontece SOMENTE no testador e SOMENTE UMA vez. A partir daqui, tudo funciona bem.

No código básico não me interessa o que as funções retornam, eventualmente quando se trata de um pedido comercial, os valores recebidos para o pedido são verificados pela função universal, e se está tudo bem enviamos o pedido, se não - esperamos que esteja tudo bem...

Experimente o seguinte código na sua função de obter valor parabólico.

double Параболик(ENUM_TIMEFRAMES период,double step,double maximum,int бар)
  {
   double ЗначениеParabolic[1];
   int Parabolic=iSAR(Symbol(),период,step,maximum);
   int cb=CopyBuffer(Parabolic,0,бар,1,ЗначениеParabolic);
   if(cb!=1) Print("BarsCalculated ",BarsCalculated(Parabolic),", CopyBuffer ", cb, ", ArrayValue ",ЗначениеParabolic[0]);
   return(ЗначениеParabolic[0]);
  }

Terá algo como isto no diário de bordo

2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1    SLпоПервойТочкеПараболика=true

Explicará por que razão se obtém 0 e não -1.

Vou repeti-lo pela 3ª vez. Os dados estão lá, mas os valores do indicador nesse momento PODEM ainda não ser calculados. Está escrito a este respeito na ajuda!

 
maryan.dirtyn:
O que é? Re-criptação ou acumulação
O excesso de crueza sofre de FC, MT teve acumulações durante toda a sua vida. Simples em dias regulares e x3 na quarta-feira(o Dia de Troca Tripla deve ser esclarecido)...
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
Interesting:
FC sofre de sobre-acumulação, MT teve acumulações durante toda a sua vida. Simples em dias normais e x3 na quarta-feira(Triple Swap Day deve ser esclarecido)...
Não sei o que é o fc... Só preciso de saber COMO vai ser nos campeonatos
 
alexvd:

Experimente este código na sua função para obter o valor do parabólico.

Obterá aproximadamente esta saída no registo

Isto explicará porque é que se obtém 0 e não -1.

Vou repeti-lo pela 3ª vez. Os dados existem, mas os valores do indicador nesse momento PODEM ainda não ter sido calculados. Está escrito na ajuda!

Exactamente, estamos a obter o valor parabólico, não a resposta do CopyBuffer.

ok... alterar a função parabólica para a que forneceu (com as impressões digitais).

Acrescento as impressões no for loop (não tem protecção zero)

if(НапрСигнала==ORDER_TYPE_BUY)
     {
      if(SLпоПервойТочкеПараболика==true)
         for(i=0;;i=i+1)
           {
            Print("бай, параболик до иф ",Параболик(PERIOD_CURRENT,0.02,0.2,i+1));
            if(iLow(PERIOD_CURRENT,i+1,1)<Параболик(PERIOD_CURRENT,0.02,0.2,i+1))// || Параболик(PERIOD_CURRENT,0.02,0.2,i+1)<=0
              {
               Print("бай, параболик после иф ",Параболик(PERIOD_CURRENT,0.02,0.2,i+1));
               break;
              }
           }
      ЗначениеSAR=NormalizeDouble(Параболик(PERIOD_CURRENT,0.02,0.2,i)/ТИК,0)*ТИК;
      if(БИД>ЗначениеSAR) //bay
         slтики=(int)NormalizeDouble((АСК-ЗначениеSAR)/ТИК,0);
     }
   if(НапрСигнала==ORDER_TYPE_SELL)
     {
      if(SLпоПервойТочкеПараболика==true)
         for(i=0;;i=i+1)
           {
            Print("селл, параболик до иф ",Параболик(PERIOD_CURRENT,0.02,0.2,i+1));
            if(iHigh(PERIOD_CURRENT,i+1,1)>Параболик(PERIOD_CURRENT,0.02,0.2,i+1))// || Параболик(PERIOD_CURRENT,0.02,0.2,i+1)<=0
              {
               Print("селл, параболик после иф ",Параболик(PERIOD_CURRENT,0.02,0.2,i+1));
               break;
              }
           }
      ЗначениеSAR=NormalizeDouble(Параболик(PERIOD_CURRENT,0.02,0.2,i)/ТИК,0)*ТИК;
      if(БИД<ЗначениеSAR) //sell
         slтики=(int)NormalizeDouble((ЗначениеSAR-БИД)/ТИК,0);
     }

Analisá-lo no provador

JQ      0       Core 1  15:16:37        agent process started
NJ      0       Core 1  15:16:37        connecting to 127.0.0.1:3000
NJ      0       Core 1  15:16:39        connected
GP      0       Core 1  15:16:39        authorized (agent build 328)
LK      0       Tester  15:16:39        EURUSD,H1 (MetaQuotes-Demo): testing of Experts\Отладка.ex5 from 2010.01.01 00:00 to 2010.09.11 00:00 to be started
RH      0       Core 1  15:16:41        common synchronization completed
RS      0       Core 1  15:16:41        3124 bytes of account info loaded
RI      0       Core 1  15:16:41        3768 bytes of group info loaded
MN      0       Core 1  15:16:41        7170 bytes of tester parameters loaded
EL      0       Core 1  15:16:41        275 bytes of selected symbols loaded
IK      0       Core 1  15:16:41        expert file added: Experts\Отладка.ex5. 6597 bytes loaded
LE      0       Core 1  15:16:41        initial deposit 10000.00 USD, leverage 1:100
KO      0       Core 1  15:16:41        successfully initialized
RQ      0       Core 1  15:16:41        23 Kb of total initialization data received
KK      0       Core 1  15:16:41        performance: 72
HP      0       Core 1  15:16:41        EURUSD: symbol synchronized, 2904 bytes of symbol info received
RI      0       Core 1  15:16:43        EURUSD: load 27 bytes of history data to synchronize
MG      0       Core 1  15:16:43        EURUSD: history synchronized from 1993.05.13 to 2010.09.10
MP      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
CD      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
IK      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
ON      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
ER      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
KI      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
QL      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
GP      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
MG      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
CK      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
IN      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
OE      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
EI      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
KL      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
QS      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
GG      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
KJ      0       Core 1  15:16:47        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
EN      0       Core 1  15:16:47        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0

e assim por diante, para sempre, até que a imprensa cancele

Consultor especializado no gráfico

PJ      0       Experts 15:27:14        expert Отладка (EURUSD,M20) removed
MR      0       Trades  15:27:18        '677265' : instant buy 0.10 EURUSD at 1.29697
EH      0       Trades  15:27:19        '677265' : accepted instant buy 0.10 EURUSD at 1.29697
GL      0       Trades  15:27:21        '677265' : order #1350474 buy 0.10 EURUSD at 1.29697 done
LH      0       Trades  15:27:21        '677265' : deal #1426626 buy 0.10 EURUSD at 1.29697 done (based on order #1350474)
LI      0       Experts 15:27:56        expert Отладка (EURUSD,M20) loaded successfully
IR      0       Trades  15:28:07        '677265' : instant sell 0.10 EURUSD at 1.29690 sl: 1.30136 tp: 1.29502
IM      0       Trades  15:28:08        '677265' : accepted instant sell 0.10 EURUSD at 1.29690 sl: 1.30136 tp: 1.29502
RK      0       Trades  15:28:10        '677265' : order #1350477 sell 0.10 EURUSD at 1.29690 done
RO      0       Trades  15:28:10        '677265' : deal #1426629 sell 0.10 EURUSD at 1.29690 done (based on order #1350477)

sem erros na revista

olhar para a imagem no separador Especialistas; sem mensagens de erro também

pode contar pontos parabólicos, tudo coincide bem, no décimo segundo, sair do ciclo.

 

Apercebi-me há muito tempo que na MQL5 naquele "momento" ou naquele... Os dados aqui ou ali podem não ser calculados... Mas não está certo, é preciso consertá-lo, não escrever muletas no código

a propósito, é o mesmo com todos os outros indicadores, não só com os parabólicos

 
maryan.dirtyn:
não sei o que é fc. só preciso de saber COMO vai ser nos campeonatos.

FC - Forex Club e dizer o seu terminal Rumus2.

Tem uma conta de teste para o campeonato? Experimente e tudo ficará claro...

 
Dmitriy2:

Apercebi-me há muito tempo que na MQL5 naquele "momento" ou naquele... Os dados aqui ou ali podem não ser calculados... Mas não está certo, é preciso consertá-lo, não escrever muletas no código

A propósito, é o mesmo com todos os outros indicadores, não só com parabólicos.

Não vamos criar novas discussões.

Este tópico tem sido discutido muitas vezes. Foi revisitado não há muito tempo(https://www.mql5.com/ru/forum/1951)

Тестер стратегий. Помогите разобраться с ошибкой.
Тестер стратегий. Помогите разобраться с ошибкой.
  • www.mql5.com
mq5) handle индикатора объявляется как глобальная переменная, индикатор инициализируется в OnInit() и передается в функцию.
 

Sentado... A observar...

Nunca acreditarei que a MQL5 e a MQL4 foram escritas pela mesma equipa(((

MQ4 - voar...

O MQ5 é uma brincadeira de crianças. Sem ofensa pretendida - mas...(((

 
alexvd:

Não vamos ter uma discussão.

Este tópico já foi discutido mais de uma vez. Foi revisitado não há muito tempo(https://www.mql5.com/ru/forum/1951)

Ainda não vi este fio... a mesma coisa...

A questão é que não vou estupidamente fazer verificações em todas as linhas para todas as ocasiões, confundindo e desorganizando o código. Se isso estiver fora de questão, então... muletas são adicionadas, um projecto suficientemente grande é finalmente refeito e a funcionar...

E, em geral, estou espantado com esta abordagem. Acontece que não é a primeira vez que tal pergunta surge (e tenho a certeza que mais do que uma vez no futuro irá surgir noutras pessoas), e todas as vezes "pela primeira vez" para passar muito do seu tempo de trabalho e de outros para explicar o que precisa de fazer para contornar este bug ...

A única coisa a fazer é acrescentar ao TESTER que recomendou nesse tópico apenas UM Dormir(1000) no início do Expert Advisor.

Não deve ser de modo a que a concha implique falhas, e essas falhas devem ser evitadas no código. E o TERMINAL está a funcionar correcta e correctamente, não há ERROS (nesta situação). Mas o funcionamento do testador é DIFERENTE do funcionamento do terminal.

ps EQU Olá:)