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

 
Vinin:

Naturalmente, e quando mais.


mm, pensei, pedaços completados, bem, há 128 kilobytes fundidos - registrados. Como seria mais correto em caso de acidente. Embora para a história, é claro, o que quer que seja.

Eu simplesmente não consegui descobrir, eu estava baixando, mas não havia para onde ir até fechar o terminal ))

 
ToLik_SRGV
Obrigado pela dica sobre a impressão(), vou dar uma olhada.
 
sanyooooook:

Você pode alterar este parâmetro no inite, mas no início é duvidoso.


Obrigado, porque quando o TF na janela muda, o indicador reinicia, isso significa que é possível colorir novamente os amortecedores

E a questão é - em qualquer TF, a cor das linhas correspondentes a estocásticos de outras TFs é sempre a mesma cor. Isto é, se o estocástico horário é azul, que seja azul em todas as TFs.

É claro que podemos atribuir buffers da cor apropriada para o TF apropriado, mas então o programa de processamento se torna mais complicado. E queremos que ele leia um e o mesmo tampão em todas as condições.

 
ToLik_SRGV:

Imprimir() você precisa colocar aqui em primeiro lugar:

que, certifique-se de que a matriz c1b_1[i] esteja vazia, assim comparando em se zeros, compreensivelmente os negócios não são abertos.

E zeros lá porque o período médio na função iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i) (extern int AvgB=25;) é maior do que a própria matriz c1b, ArrayResize(c1b,PeriodB ) (extern int PeriodB=20;), de modo que não pode calcular a média de nada.


Sim, de fato "0", mas o que fazer, me diga - não funciona das duas maneiras (e períodos iguais definidos) experimentou ambas as opções (nova e antiga) Impressão("NormalizeDouble(c1b_1 ..., retorno nulo (mostra apenas o valor c1b[i], todas as outras incluindo c1s[i] - zeros), me ajude a trazer uma das opções para um estado de trabalho ou pelo menos compartilhar uma dica, quem verá a falha?

Novo:

// Торговые критерии   
   double c1b[];
   ArrayResize(c1b,PeriodB);
   double c1b_1[];
   ArrayResize(c1b_1,AvgB);
   for(i=1;i<=PeriodB;i++)
   {
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
   {
   c1b_1[i]=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i);
   }
   }
   
   double c1s[];
   ArrayResize(c1s,PeriodS);
   double c1s_1[];
   ArrayResize(c1s_1,AvgS);
   for(i=1;i<=PeriodS;i++)
   {
   c1s[i]=iCCI(NULL,0,PeriodS,PRICE_TYPICAL,i);
   {
   c1s_1[i]=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i);
   }
   }
   
   Print("NormalizeDouble(c1b_1[i],4) - ",NormalizeDouble(c1b_1[i],4));
   Print("NormalizeDouble(c1b_1[i+2],4) - ",NormalizeDouble(c1b_1[i+2],4));
   Print("NormalizeDouble(c1b_1[i+3],4) - ",NormalizeDouble(c1b_1[i+3],4)); 

if (NormalizeDouble(c1b_1[i],4)<NormalizeDouble(c1b_1[i+2],4)&&NormalizeDouble(c1b_1[i+2],4)>NormalizeDouble(c1b_1[i+3],4))
     {                                          // 
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
if (NormalizeDouble(c1s_1[i],4)>NormalizeDouble(c1s_1[i+2],4)&&NormalizeDouble(c1s_1[i+2],4)<NormalizeDouble(c1s_1[i+3],4))
     {                                          // 
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }

Antigo:

// Торговые критерии
   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,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[];
   ArrayResize(c1s,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,1);
   double c1s_2=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,2);
   double c1s_3=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,3);
   
   Print("NormalizeDouble(c1b_1,4) - ",NormalizeDouble(c1b_1,4));
   Print("NormalizeDouble(c1b_2,4) - ",NormalizeDouble(c1b_2,4));
   Print("NormalizeDouble(c1b_3,4) - ",NormalizeDouble(c1b_3,4));

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

Inteiro:

Arquivos anexados:
21_1.mq4  15 kb
 

Cavalheiros, estou me perguntando, se eu passar por quatro períodos de tempo para encontrar o sinal, os dados serão chamados a cada vez, com mais carga de CPU do que se houvesse, por exemplo, quatro janelas do mesmo indicador com diferentes períodos de tempo?

 
Rossi:

Cavalheiros, estou me perguntando, se eu percorrer quatro períodos de tempo para encontrar um sinal, os dados serão chamados a cada vez, com mais carga de CPU do que se houvesse, por exemplo, quatro janelas do mesmo indicador com diferentes períodos de tempo?


Depende de como ela é implementada.
 

int TimeMassive[15, 30, 60, 240] ;

for(int k=0; k<4; K++)

{

timeMassive[k] ;

for(int i=0; i<limit; i++)

Buffer[i]= iMA(NULL, prazo,..........................) ;

}

aproximadamente assim, sem alocar memória para cada período de tempo

 
O mesmo.
 
Rossi:

int TimeMassive[15, 30, 60, 240] ;

for(int k=0; k<4; K++)

{

timeMassive[k] ;

for(int i=0; i<limit; i++)

Buffer[i]= iMA(NULL, prazo,..........................) ;

}

aproximadamente assim, sem alocar memória para cada período de tempo


int TimeMassive[]={15, 30, 60, 240} ;

for(int k=0; k<4; K++)

{

timeframe= TimeMassive[k] ;

for(int i=0; i<limit; i++)

Buffer[i]= iMA(NULL, timeframe,..........................) ;

}
Isso é um pouco mais preciso
 
O que pode causar um transbordamento de pilha? Quando você abre uma posição com um take grande (o take é calculado a partir da volatilidade e multiplicado por 100, o tamanho é 41*100), um transbordo de pilha é registrado e... ... basta pegá-lo. Nenhuma outra posição é aberta até que esta feche, e esta, é claro, não fechará por causa do enorme TP... E a EA não funciona corretamente, pois deve fechar todas as posições quando o lucro total pré-definido das posições abertas for alcançado... Mas isso não acontece, ainda que esta posição tenha tido lucros enormes por muito tempo, cerca de dois mil pontos... Como posso lutar contra isso? Não se pode estar seguro contra a situação quando as posições abertas transbordam a pilha e tudo vai de cabeça para baixo...