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

 
dimon74:
É assim que funciona para mim. Uma posição é fechada pela TP, enquanto que para definir uma nova ordem pendente precisamos do valor TP+n*Point. E aqui temos uma discrepância: OrderTakeProfit () me dá quatro dígitos (vejo em Alerta) e minha corretora quer cinco. Eu tentei muitas coisas, mas parece que há mais por vir. Se você tem alguma idéia, por favor, me dê algumas idéias. Obrigado de antemão!
Alert() e Print() produzem 4 casas decimais por padrão, enquanto 8 é realmente usado. Para a saída correta para o "console", use DoubleToStr().
 
dimon74:
É assim que funciona para mim. A posição é fechada pela TP, enquanto uma nova ordem pendente precisa do valor de TP+n*Point para ser definida. Aqui temos uma discrepância: OrderTakeProfit () me dá quatro dígitos (vejo em Alerta) e minha corretora quer cinco. Eu tentei muitas coisas, mas parece que há mais por vir. Se você tem alguma idéia, por favor, me dê algumas idéias. Obrigado de antemão!

string DoubleToStr( valor duplo, dígitos int)

Converte um valor numérico para uma cadeia de texto contendo a representação de caracteres do número no formato de precisão especificado.

Isto para prever deve ajudar.

É que tanto o Alerta() como o Imprimir() produzem valores de saída de 4 dígitos. Portanto, seu problema é diferente.

 

Não consigo entender por que, nesta forma

for(int a=0;a<8;a++)
// тут что нить делаем
for(int a=0;a<8;a++)
// еще чо нить делаем

Diz que a variável já foi definida, então por que ela recebe 0 novamente na repetição? E eles estão em diferentes partes de código, primeiro em se, segundo em outro...

 
Abzasc:

Não consigo entender por que, nesta forma

Diz que a variável já foi definida, então por que ela recebe 0 novamente na repetição? E eles estão em diferentes partes de código, primeiro em se, segundo em outro...


int a;
for(a=0;a<8;a++)
// тут что нить делаем
for(a=0;a<8;a++)
// еще чо нить делаем
Então, por que definir a mesma variável duas vezes?
 
Vinin:

Por que definir a mesma variável duas vezes?

Para reler

 for(int a=0;a<8;a++)
 aJPY[a]=iCustom(NULL,PERIOD_M15,"Indexes",a,0);

Isto é, se a condição é uma, leia, se outra... merda. Entendi. Mas é um caso específico, eu não preciso deste fragmento em outro caso.

Não sei como anular uma variável para que ela possa ser usada em outro fragmento de código. Se a condição é uma, chamamos um indicador e se outro - outro... ...porque não há variáveis suficientes...

 
Abzasc:

Para reler

Isto é, se a condição é uma, leia, se outra... merda. Entendi. Mas é um caso específico, eu não preciso deste fragmento em outro caso.

Não sei como anular uma variável para que ela possa ser usada em outro fragmento de código. Se a condição é uma, chamamos um indicador e se outro - outro... ...porque não há variáveis suficientes...


Não, temos que descobrir de alguma forma. Parece não haver código suficiente. Eu estava falando apenas de uma coisa. Declarar uma variável e usar (com pré-inicialização) são coisas diferentes. Uma mesma variável pode carregar valores funcionais muito diferentes, o principal é não misturar o quê e onde.
 

Deixe-me tentar elaborar. Há um indicador, sem amortecedores. É necessário valores de outro indicador em 4 arrays. Estou tentando anexar

   int    counted_bars=IndicatorCounted();
   // считать только последний вызов
   int limit;
   if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0;i<limit;i++)
Se houver uma nova barra, todas as arrays são recalculadas. Se não houver uma nova barra, apenas a 0-ésima. Mas nós recalculamos tudo da mesma forma, ou seja, chamamos ambos de "se" e "se".
 
Abzasc:

Deixe-me tentar elaborar. Há um indicador, sem amortecedores. É necessário valores de outro indicador em 4 arrays. Estou tentando anexá-lo.

Se houver uma nova barra, recalculamos todas as matrizes. Se não houver barra, recalculamos apenas a 0-ésima. Mas nós recalculamos tudo da mesma forma, ou seja, chamamos ambos de "se" e de "se".


Eu prefiro uma abordagem diferente

   int    counted_bars=IndicatorCounted();
   // считать только последний вызов
   int limit=Bars-counted_bars-1;
   if(Bars-counted_bars>2)
      limit = //.......................
   for(int i=limit;i>=0;i--)

Embora, é uma questão de gosto. Mas pelo menos eu posso explicar cada linha

 
Vinin:


Eu prefiro uma abordagem diferente

É uma questão de gosto, no entanto. Mas pelo menos eu posso explicar cada linha

Vamos colocar as coisas desta maneira. Então, se limite = 0, se escrevermos array 0, 1, 2, senão - array 0. E um erro variável.

Ou devemos escrever uma matriz de 1, 2, ou então - matriz 0?

De qualquer forma, - não posso usar a variável 2 vezes, esse é o problema. No entanto, só o uso 2 vezes, no "se" e em outros casos. Não está nem mesmo em variáveis compartilhadas no topo do código.

 
Abzasc:

Que seja assim. Então, se limite = 0, se escrevermos array 0, 1, 2, senão - array 0. E um erro variável.

Ou se escrevermos array 1, 2, ou então - array 0?

De qualquer forma, - não posso usar a variável 2 vezes, esse é o problema. No entanto, só o uso 2 vezes, no "se" e em outros casos. Não está nem mesmo em variáveis compartilhadas no topo do código.


Dê-me o código completo. Você pode me enviar pessoalmente. Vou tentar ajudar.