[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 641

 
Craft:

O que fazer então? Eu tentei por(i=0;i<=PeriodoS;i++) - não ajudou.


Como já lhe foi dito

   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);

O iMAOnArray é executado fora do loop (como deve ser). Correspondentemente, i+2 = PeriodB + 2. Para ArrayResize(c1b,PeriodB);

E na verdade ... substitua seu "i+" por 0,2,3.

 
SergNF:


Como já foi escrito a você

O iMAOnArray é executado fora do loop (como deve ser). Correspondentemente, i+2 = PeriodB + 2. Para ArrayResize(c1b,PeriodB);

E na verdade ... Substitua seu "i+" por 0,2,3.


Obrigado, eu fiz tudo como você disse, mas agora por que as encomendas não estão sendo feitas?

Eu tentei com e sem normalização.

   double c1b[];
   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,1);
   double c1b_2=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,2);
   double c1b_3=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,3);
   
   double c1s[];
   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,1);
   double c1s_2=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,2);
   double c1s_3=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,3);

 //if (NormalizeDouble(c1s_1,4)>NormalizeDouble(c1s_2,4)&&NormalizeDouble(c1s_2,4)<NormalizeDouble(c1s_3,4))
 if (c1s_1>c1s_2&&c1s_2<c1s_3)
     {                                          // 
      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))
if (c1b_1<c1b_2&&c1b_2>c1b_3)
     {                                          // 
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }
 
gordeef:

Desculpe, eu não respondi imediatamente, meu caderno morreu completamente. Espero que meu dente não doa mais, é uma coisa assustadora. Confesso, estava culpando Babon, ele funciona bem, mas o indicador de falha NMAZZ, não me lembro onde o baixei, mas em um gráfico ainda funciona, mas o coloquei em três gráficos (5M, 30M, 4H) e todos, 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 reversão ou correção, sim você está certo, é sempre uma reversão, mas se a 30M, 1H e 4H o bastão muda de cor, se não for uma reversão, então a correção é certa e podemos ter algum lucro.
Sim... Dente dolorido faz maravilhas... Onde quer que você vá com ele... :) Se você gosta de um indicador e quer trabalhar com ele - seja no iCustom, ou no código do Expert Advisor, eu acho. Mas sobre a tendência TP - tenha cuidado, você pode comprá-la no final da mudança, ou seja, antes da inversão. Então o alce ficará pendurado no ar (como eu ontem com um dente ruim... :))). Estou trabalhando na definição do esgotamento da tendência no momento, espero compartilhar meus resultados.
 
Craft:


Obrigado, fez tudo como você disse, mas agora por que os pedidos não estão sendo feitos?

Tentei com e sem normalização.


Bem, então apenas um "unpriming" após ambos se é para ver se o erro está neste bloco ou não (Incluindo Opn_B e Cls_S) Uma linha e você saberá tudo.

Não sei, talvez você os reatribua (Opn_B e Cls_S) depois ou use variáveis completamente diferentes ao abrir.

 
artmedia70:
Sim... Um dente ruim pode fazer maravilhas... Onde quer que você vá com ele... :)

Você ainda não tentou o tratamento. Eles dizem que funciona.
 
Vinin:

Você já tentou um tratamento? Dizem que isso ajuda.
Ah, é verdade! Você vive e aprende... ;) Somente à noite não encontramos nenhum dentista em Zakolyuchinsk. Tive de usar remédios populares...
 

Pessoal, entendo que os milagres não acontecem, mas não posso ganhar... Já estou olhando debaixo da mesa para ver se o Hottabych está sentado lá... :)

Tentei exibir alguns dados da EA na janela indicadora e decidi exibir tendências na mesma janela. Calculo as tendências com minha função, que retorna valores int -1, 0 e +1. Assim, a tendência para baixo = 1, flat = 0, up trend = 1. Notei que as setas aparecem como desejam, mas não na direção de tendências em diferentes TFs. Assim, comentei as setas por muito tempo e as substituí pela saída do valor retornado pela função tendência. Em dois lugares do código, coloquei a saída do estado devolvida por esta função. Ele retorna seu estado corretamente; no canto superior esquerdo do gráfico, os valores da função são exibidos diretamente após a chamada desta função. Abaixo, na janela indicadora, os valores das funções também são exibidos. Numericamente tudo está correto, mas em algum lugar leva o quarto valor da função, que por definição retorna apenas três números... Então, neste quarto valor, a janela indicadora exibe a mensagem "Foda-se"... Eu mesmo já escrevi por raiva... :)

Ajudar-me a entender qual é o problema? Não quero acreditar em Hassan Obdurahman ibn Hottab... :):)

   ObjectCreate("trM15",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("trM15",OBJPROP_XDISTANCE,x*10);
   ObjectSet("trM15",OBJPROP_YDISTANCE,y*10);
   
   ObjectCreate("ArrowM15",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ArrowM15",OBJPROP_XDISTANCE,x*17);
   ObjectSet("ArrowM15",OBJPROP_YDISTANCE,y*10);
   
   if (trM15==1)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",Lime);
//         ObjectSetText("ArrowM15",CharToStr(241),10,"Wingdings",Lime);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",Lime);
      }
   if (trM15==-1)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",OrangeRed);
//         ObjectSetText("ArrowM15",CharToStr(242),10,"Wingdings",OrangeRed);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",OrangeRed);
      }
   if (trM15==0)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",OrangeRed);
//         ObjectSetText("ArrowM15",CharToStr(240),10,"Wingdings",OrangeRed);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",OrangeRed);
      }
   else
      {
         ObjectSetText("trM15","Хрен вам",9,"Tahoma",LightGray);
//         ObjectSetText("ArrowM15",CharToStr(240),10,"Wingdings",LightGray);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",LightGray);
      }

Aqui já tentei verificar todos os quatro estados, não apenas -1, 1 e mais...

E isso é o que me resulta - senão

trM15 é uma variável, à qual é atribuído um valor retornado pela função tendência

Na foto você pode ver que os valores são devolvidos corretamente, mas a "inscrição engraçada" é impressa, o que só é possível se

Minha cabeça já está nas costuras...

 
artmedia70:

Pessoal, entendo que milagres não acontecem, mas não posso ganhar... Já estou olhando debaixo da mesa para ver se o Hottabych está sentado lá... :)

Tentei exibir alguns dados da EA na janela indicadora e decidi exibir tendências na mesma janela. Calculo as tendências com minha função, que retorna valores int -1, 0 e +1. Assim, a tendência para baixo = 1, flat = 0, up trend = 1. Notei que as setas aparecem como desejam, mas não na direção de tendências em diferentes TFs. Assim, comentei as setas por muito tempo e as substituí pela saída do valor retornado pela função tendência. Em dois lugares do código, coloquei a saída do estado devolvida por esta função. Ele retorna seu estado corretamente; no canto superior esquerdo do gráfico, os valores da função são exibidos diretamente após a chamada desta função. Abaixo, na janela indicadora, os valores das funções também são exibidos. Numericamente é correto, mas o quarto valor da função, que por definição retorna apenas três números, é retirado de algum lugar... Então, neste quarto valor, a janela indicadora exibe a mensagem "Vá se foder". Eu mesmo já escrevi por raiva... :)

Ajudar-me a entender qual é o problema? Não quero acreditar em Hasan Obdurahman ibn Hottab... :):)

Aqui já tentei verificar todos os quatro estados, não apenas -1, 1 e mais...

E isso é o que me resulta - senão

trM15 é uma variável, à qual é atribuído um valor retornado pela função tendência

Na figura você pode ver que os valores são devolvidos corretamente, enquanto a "inscrição engraçada" é exibida que somente se

Minha cabeça já está nas costuras...



Isso mesmo.

ObjectCreate("trM15",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("trM15",OBJPROP_XDISTANCE,x*10);
   ObjectSet("trM15",OBJPROP_YDISTANCE,y*10);
   
   ObjectCreate("ArrowM15",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ArrowM15",OBJPROP_XDISTANCE,x*17);
   ObjectSet("ArrowM15",OBJPROP_YDISTANCE,y*10);
   
   if (trM15==1)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",Lime);
//         ObjectSetText("ArrowM15",CharToStr(241),10,"Wingdings",Lime);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",Lime);
      }
   else if (trM15==-1)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",OrangeRed);
//         ObjectSetText("ArrowM15",CharToStr(242),10,"Wingdings",OrangeRed);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",OrangeRed);
      }
   else if (trM15==0)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",OrangeRed);
//         ObjectSetText("ArrowM15",CharToStr(240),10,"Wingdings",OrangeRed);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",OrangeRed);
      }
   else
      {
         ObjectSetText("trM15","Хрен вам",9,"Tahoma",LightGray);
//         ObjectSetText("ArrowM15",CharToStr(240),10,"Wingdings",LightGray);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",LightGray);
      }

Você pode tentar esta variante

 
Vinin:


É isso mesmo.

Você poderia tentar isto

OK. Obrigado, Victor. Até agora, está funcionando corretamente. Até agora, porque não o tenho seguido há muito tempo, mas NUNCA tive uma tendência que me permitisse ter uma tendência. É agora:


Eu sabia que sempre havia um feiticeiro-mago mais poderoso para um feiticeiro-queridinho. :)

Claro, é tudo uma piada, mas... Victor, eu não quero apenas copiar a solução certa, mas descobrir e entender onde está o problema, qual é a razão para o comportamento de um código tão incompreensível?

 
artmedia70:
Sim... Um dente ruim pode fazer maravilhas... Onde quer que você vá com ele... :) Se você gosta de um indicador e quer trabalhar com ele - seja código iCustom ou EA, eu acho. Mas sobre a tendência TP - tenha cuidado, você pode comprá-la no final da mudança, ou seja, antes da inversão. Então o alce ficará pendurado no ar (como eu ontem com um dente ruim... :))). Estou trabalhando na definição do esgotamento da tendência no momento, espero compartilhar meus resultados.

Sim, estou tentando ser cauteloso quanto a reversões e correções como está. Mas em relação ao esgotamento da tendência, também estou interessado nele, percorri o fórum e olhei a CodeBase, mas não encontrei nenhum índice sobre este tema. Será interessante ler seus resultados. Tenho outra pergunta, eles me enviaram um EA que controla minhas perdas e lucros, como na foto deveria funcionar, mas a pergunta é, ele tem um lucro de 15 pontos e vejo que o preço pode subir ainda mais, se eu aumentar o lucro em uma ou outra profissão, ele pode quebrar os cálculos gerais e o funcionamento do EA?