[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 640

 

Não consigo descobrir o que está errado com as matrizes (a condição é simples - comprar/vender após o próximo pico de CCI alisado):

A estratégia se compila sem erros e não escreve nada no registro na inicialização, mas não são feitos pedidos.

   double c1b[];
   ArrayResize(c1b,PeriodB);
   for(i=1;i<=PeriodB;i++)
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
   double c1b_1=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i);
   double c1b_2=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i+2);
   double c1b_3=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i+3);
   
   double c1s[];
   ArrayResize(c1b,PeriodS);
   for(i=1;i<=PeriodS;i++)
   c1s[i]=iCCI(NULL,0,PeriodS,PRICE_TYPICAL,i);
   double c1s_1=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i);
   double c1s_2=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i+2);
   double c1s_3=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i+3);


   if (c1s_1>c1s_2&&c1s_2<c1s_3)
     {                                          //
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
   if (c1b_1<c1b_2&&c1b_2>c1b_3)
     {                                          //
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }
 


duplo c1s[];
ArrayResize(c1b,PeriodS)

Você declara uma matriz e muda outra.

 
Roger:


duplo c1s[];
ArrayResize(c1b,PeriodS)

Você declara uma matriz e muda outra.


Obrigado, o que mais está errado - não ajudou.
 

A matriz começa com um elemento zero, por isso a expressão

for(i=1;i<=PeriodoS;i++)

pula zero e não escreve nada para o último.

mais adiante, somente esta expressão será executada no loop

c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);

o resto não tem sentido, após o loop i é igual ao máximo e, portanto, todos os valores serão zero.

 
Craft:

o que mais está errado


comparar duplas sem normalização é incorreto... tente desta forma:

   double c1b[];
   ArrayResize(c1b,PeriodB);
   for(i=1;i<=PeriodB;i++)
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
   double c1b_1=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i);
   double c1b_2=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i+2);
   double c1b_3=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i+3);
   
   double c1s[];
   ArrayResize(c1b,PeriodS);
   for(i=1;i<=PeriodS;i++)
   c1s[i]=iCCI(NULL,0,PeriodS,PRICE_TYPICAL,i);
   double c1s_1=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i);
   double c1s_2=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i+2);
   double c1s_3=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i+3);


   if (NormalizeDouble(c1s_1,4)>NormalizeDouble(c1s_2,4)&&NormalizeDouble(c1s_2,4)<NormalizeDouble(c1s_3,4))
     {                                          //
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
   if (NormalizeDouble(c1b_1,4)<NormalizeDouble(c1b_2,4)&&NormalizeDouble(c1b_2,4)>NormalizeDouble(c1b_3,4))
     {                                          //
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }

 
DDFedor:


comparar duplas sem normalização é incorreto... Tente desta forma:


Obrigado pela ajuda, manos, ainda não funciona.
 
Roger:

A matriz começa com um elemento zero, por isso a expressão

for(i=1;i<=PeriodoS;i++)

pula zero e não escreve nada para o último.

mais adiante, somente esta expressão será executada no loop

c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);

o resto não tem sentido, após o loop i é igual ao máximo e, portanto, todos os valores serão zero.


O que devo fazer então? Testado para(i=0;i<=PeriodoS;i++) - não funcionou.
 
Craft:

O que então?

Coloque as impressoras em cada variável em cada ponto de código e olhe nos registros para ver o que está acontecendo em cada etapa.
 

Olá, posso perguntar-lhe um novato? Quando escrevo símbolo() na função aberta na demonstração, mas quando o mudo para um símbolo, por exemplo EURUSD, recebo um erro 133.
{Alerta("!");}else{Alerta("?");} - Ele dá "!", ou seja, a negociação é permitida... e simultaneamente 133. Qual é o problema? Nenhuma EA abre uma negociação se eu indicar um certo símbolo na função aberta... Eu já tentei de tudo.

Agradecemos antecipadamente. estou aqui para não desarrumar o fórum ))

 
artmedia70:
Quem disse que são reversões e não correções?

Desculpe, eu não respondi imediatamente, meu caderno morreu completamente. Espero que o dente não doa mais, é uma coisa assustadora. Minha confissão, eu culpo o Babon, ele funciona bem e o indicador NMAZZ é o culpado, não me lembro onde eu o baixei, mas ele ainda funciona em um gráfico, mas eu o coloquei em três gráficos (5M, 30M, 4H) e pronto, o computador congelou completamente, ou melhor, o terminal. Comecei a remover os indicadores dos gráficos um a um e encontrei este erro. Não sei o que há de errado com este indicador, mas no início ele funcionou bem. E sobre a inversão ou correção, sim você está certo, é sempre inequivocamente uma inversão, mas se a 30M, 1H e 4H o bastão muda de cor, então se não for uma inversão, então correção univocamente e você pode ganhar algum lucro.