[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 556

 


É claro que é melhor mudar para a matriz de leitura/escrita

1. Não altere o tamanho do conjunto em 1 a cada iteração, é melhor fazê-lo com menos freqüência, por exemplo, aumente-o em incrementos de 50 ou 100, se necessário

2. É melhor usar o DoubleToStr() para a impressão de cheques.

3. não entendo porque uma variável de string é usada para a leitura

 
Vinin:


É melhor, é claro, mudar para a matriz de leitura/escrita

1. Não altere o tamanho da matriz em 1 a cada iteração, é melhor fazê-lo com menos freqüência, por exemplo, aumente-o em incrementos de 50 ou 100, se necessário

2. Para impressão de cheques, é melhor usar DoubleToStr()

3. não entendo porque uma variável de string é usada para a leitura

1. não funciona de outra forma. escreve linhas nulas, como para 4 colunas deve ser atualizado a cada vez

2. ok.

3. um aviso especial, agora ele lê tudo corretamente. mas acontece que uma linha nula é redundante, e uma corrida extra. mas o valor não está lá, então ele preenche a linha nula de acordo.

 
orb:

1. não funciona de outra forma. escreve linhas nulas, como para 4 colunas que você tem que atualizar a cada vez

2. ok.

3. um aviso especial, agora ele lê tudo corretamente. mas acontece que uma fila nula é extra, enquanto uma fila nula é extra. e o valor não está lá, respectivamente a fila nula é preenchida.


Com tal abordagem, haverá grandes freios.
 
Vinin:

Com esta abordagem, haverá muitos freios.

Entendo, até agora é mais fácil para mim escrever desta maneira.

Você pode me dizer como se livrar do "enquanto" é executado mais uma vez?

 
orb:

Entendo, até agora é mais fácil para mim escrever desta maneira.

como posso me livrar de mais uma vez enquanto sou executado?



Eu não consegui me livrar dele. Mas eu não usei variáveis de corda
 
Entendi. Pode, então, ArrayResize(); ser aplicado menos que o contador de laço, será que ele removerá esta corda da matriz?
 
orb:
Entendi. Pode, então, o ArrayResize(); ser aplicado menos do que a contagem de ciclos, será que ele removerá esta cadeia do array?

Sim, vai.

Quanto menos vezes você usar esta função, mais rápido ela funcionará. Reservar 100 elementos e ler através do controle da matriz ultrapassada. Se necessário, aumente novamente a matriz em 100 elementos. Ao mesmo tempo, você mantém o número real de elementos baixados. Após um download completo do array, você faz um novo ArrayResize(), mas pelo número real de elementos baixados.

Mas as funções para trabalhar com arrays funcionam mais corretamente. Você deve primeiro salvar o número de elementos da matriz em um arquivo, e depois a própria matriz

Leia primeiro o número de elementos, defina o tamanho da matriz. Faça o download da matriz. E sem laços

 
Vinin:

Sim, vai.

Quanto menos vezes você usar esta função, mais rápido ela funcionará. Reservar 100 elementos e ler através do controle da matriz ultrapassada. Se necessário, aumente novamente a matriz em 100 elementos. Ao mesmo tempo, você mantém o número real de elementos baixados. Após um download completo do array, você faz um novo ArrayResize(), mas pelo número real de elementos baixados.

Mas as funções para trabalhar com arrays funcionam mais corretamente. Você deve primeiro salvar o número de elementos da matriz em um arquivo, e depois a própria matriz

Leia primeiro o número de elementos, defina o tamanho da matriz. Faça o download da matriz. E sem laços

Obrigado! Vou ter isso em mente para o futuro.
 

Favor aconselhar como resolver o problema corretamente:

Há uma projeção dos níveis de suporte/resistência do TF mais antigo para o TF atual. É necessário determinar qual dos níveis foi o último a ser testado pelo preço. Eu tentei fazer isso através das bandeiras:

int start()
{ 
      int limit;
      int counted_bars=IndicatorCounted();
      if(counted_bars>0) counted_bars--;

      limit=Bars-counted_bars;
      if(limit>barsToProcess)
         limit=barsToProcess;

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

{
 
  bool flag_R[], flag_S[], S[];

   double Level_Re = iCustom(NULL,0,"........",0,i); // для каждого бара получаем значения со старшего ТФ
   double Level_Su = iCustom(NULL,0,"........",1,i); // для каждого бара получаем значения со старшего ТФ

{
   if (iHigh(Symbol(),0,i)>=Level_Re)              // проверяем тестирование ценой уровня Re
   {flag_R[i]=true; flag_S[i]=false; S[i]=true;}   // выставляем флаги
   
   if (iLow(Symbol(),0,i)<=Level_Su)               // проверяем тестирование ценой уровня Su
   {flag_R[i]=false; flag_S[i]=true; S[i]=true;}   // выставляем флаги


   if (S[i]==false) {flag_R[i]=flag_R[i+1]; flag_S[i]=flag_S[i+1];} // если тестирования не было - берем предыдущее значение

   if (flag_R[0]==true) Print("Re zone tested"); if (flag_S[0]==true) Print("Su zone tested");
   
}
}

return(0);
}

mas o registro não mostra nada.... [Se eu definir, por exemplo, Print(Level_Re), então rodando por toda a matriz, o log parará no valor do nível para a última barra, ou seja, os próprios níveis são calculados corretamente, mas com as bandeiras algo não funciona para mim.... ]

Qual é o erro? Ou qual é a melhor maneira de fazer isso?

 
alkador:

para T-G

tente assim:

data de vencimento=TimeCurrent()+MaxSecLiveTime;

OrderSend(Symbol(), OP_BUYSTOP, Lots(), PriceBuy, 0, 0, 0, EA_Comment, Magic, expiration, CLR_NONE);


e qual é a diferença:

extern int MaxSecLiveTime = 120;
OrderSend(Symbol(), OP_BUYSTOP, Lots(), PriceBuy, 0, 0, 0, EA_Comment, Magic, TimeCurrent()+MaxSecLiveTime, CLR_NONE);