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

 
Vinin:

Mas o cabeçalho do indicador também precisa ser editado. Todos os amortecedores devem ser capazes de armazenar o valor

E seria bom calcular a história, mas é claro que é uma questão de gosto. E para trabalhar com objetos de forma mais correta. Em cada tick são criados objetos com os mesmos nomes (ou criar um erro).

Eu consertei o cabeçalho.

com um amortecedor:

     UP_1Buffer[0] = uitog1v;
     UP_2Buffer[0] = uitog2v;
     UP_3Buffer[0] = uitog3v;
     DOWN_1Buffer[0] = ditog1v;
     DOWN_2Buffer[0] = ditog2v;
     DOWN_3Buffer[0] = ditog3v;

Entendi.

Muito obrigado pela ajuda.


Quanto às suas sugestões, eu gostaria de fazê-las, mas não posso fazê-las eu mesmo, infelizmente.

 
artmedia70:

Tente colocar em palavras o que você escreveu aqui:

Pessoalmente, logo à primeira vista encontrei seu enigma: se um não for igual a um, então feche a ordem...

Não olhei para o resto depois disso...

SZY e não tente, nem pense que é possível escrever uma boa EA em um ciclo...

Aqui está a idéia:

Ponto de entrada no mercado: a qualquer momento, se não houver posições pendentes, muito menos posições abertas.

O robô abre 2 posições pendentes, com distância igual em pips do preço atual (esta é uma variável personalizada PriceDistance).

As posições pendentes têm ambas o mesmo TP, SL, TS (como no espelhamento do preço atual.

E ambos pelo mesmo tempo (em perspectiva a variável "TimeStop").

All....

Na prática: as posições anteriores são fechadas (seja com tempo de expiração, seja no SL ou TP - não importa), o terminal é liberado, imediatamente após isso as mesmas posições são abertas com os mesmos parâmetros, mas, a partir do preço atual, em uma nova faixa. Mais adiante, de acordo com o ciclo.

A idéia é primitiva, 100% pluator, mas pretendo me mover nesta direção e conectá-lo a outros sinais, por exemplo Volumes a certos valores em certos intervalos de tempo....

É por isso que eu preciso do software com pressa....

Por isso me propus a tarefa de escrevê-lo...

 
Boa noite! Escreveu aqui a construção mais simples, para calcular o lucro disponível, em cada carrapato. Bem, isso não funciona! Olhei para ele por 10 minutos, comi o código com meus olhos. Não vejo nenhum erro. Aqui está o código.
//----
        double Profit;
for ( i=OrdersTotal();i>0;i--){ OrderSelect(i-1,SELECT_BY_POS );

if( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()&&OrderType( ) ==OP_SELL ||
      
 OrderMagicNumber( )==1000 &&OrderSymbol()==Symbol()&&OrderType( ) ==OP_BUY){
 
  
 Profit=Profit+OrderProfit( ) ;Alert ("i ", i ," Profit ", Profit);}}
 
 
//----
O número mágico está certo. Eu o verifiquei quatro vezes. Os parênteses, tudo o que pude pensar para olhar, tudo parece estar certo. Talvez eu esteja escrevendo/comparando uma ordem errada? Eu olhei a referência. Ajude-me, por favor! Não posso fazer isso sem você! Você pode me dizer o que poderia estar errado?
 
E você sabe, separadamente as três condições funcionam!!!
 double Profit;
for ( i=OrdersTotal();i>0;i--){ OrderSelect(i-1,SELECT_BY_POS );

if( OrderType( ) ==OP_SELL ){Alert ("i ", i ," OP_SELL ", Profit);}

if( OrderSymbol()==Symbol()){Alert ("i ", i ," Symbol() ", Profit ,Symbol(), OrderSymbol());}

if( OrderMagicNumber( )==2000  ) {Alert ("i ", i ," OrderMagicNumber( ) ", Profit , OrderMagicNumber( ));}



if( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()&&OrderType( ) ==OP_SELL ||
      
 OrderMagicNumber( )==1000 &&OrderSymbol()==Symbol()&&OrderType( ) ==OP_BUY){
 
  
 Profit=Profit+OrderProfit( ) ;Alert ("i ", i ," Profit ", Profit);}}
Estou chocado e confuso!!!
 
dkfl.zrjdktdbx:
Boa noite! Escrevi uma construção simples para calcular o lucro disponível em cada carrapato. Bem, isso não funciona! Olhei para ele com os olhos por 10 minutos. Eu não vejo o erro. O código da Magik está certo. Verifiquei-o quatro vezes. Os parênteses, tudo o que pude pensar, tudo parece estar certo. Talvez eu esteja escrevendo/comparando uma ordem errada? Eu olhei a referência. Ajude-me, por favor! Não posso fazer isso sem você! Você pode me dizer o que poderia estar errado?


Faltam alguns parênteses.

double Profit=0;
for ( i=OrdersTotal();i>0;i--){ OrderSelect(i-1,SELECT_BY_POS );

if( ( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()&&OrderType( ) ==OP_SELL ) ||
      
( OrderMagicNumber( )==1000 &&OrderSymbol()==Symbol()&&OrderType( ) ==OP_BUY ) ){
 
  
 Profit=Profit+OrderProfit( ) ;Alert ("i ", i ," Profit ", Profit);}}
 

Este parece ser o caso. Embora seja melhor mantê-lo simples.

double Profit=0;
for ( i=OrdersTotal();i>0;i--){ 
   OrderSelect(i-1,SELECT_BY_POS );
   if(OrderSymbol()==Symbol()) {
      if( OrderMagicNumber( )==2000 && OrderType( ) ==OP_SELL )  Profit+=OrderProfit( );
      if( OrderMagicNumber( )==1000 && OrderType( ) ==OP_BUY  )  Profit+=OrderProfit( );
   }
   Alert ("i ", i ," Profit ", Profit);
}
 

Eu tenho esta pergunta - em MT4: (2/3*9 == 2*9/3) ?

         Comment(
            "\n",
            "\n", "2/3*9        = ", 2/3*9,
            "\n", "2*9/3        = ", 2*9/3,
            "\n",
         "\n" );


Obrigado!

 
chief2000:

Eu tenho esta pergunta - em MT4: (2/3*9 == 2*9/3) ?


Obrigado!


Qual é o objetivo?

Confira com uma calculadora - você vai descobrir.

Veja a documentação - como as expressões são calculadas.

Você deve pelo menos ler um livro didático...

"É fácil ver que a ordem das expressões de cálculo em um programa é semelhante à ordem dos cálculos similares em matemática, mas difere nos tipos de cálculo de valores de expressões intermediárias, o que afeta significativamente o resultado final dos cálculos. Em particular (ao contrário das regras aceitas em matemática), a ordem dos operandos em uma expressão não é de pouca importância. Para mostrar isto, vamos dar um pequeno exemplo. Problema 6: Calcular os valores das expressões A/B*C e A*C/B para os números inteiros A, B e C.


Intuitivamente, espera-se que o resultado dos cálculos em ambos os casos seja o mesmo. No entanto, isto só é verdade para números reais. Ao calcular os valores das expressões compostas de operandos inteiros, o resultado intermediário é muito importante. Neste caso, a seqüência de operandos é de fundamental importância:

int A = 3; // Значение целого типа
int B = 5; // Значение целого типа
int C = 6; // Значение целого типа
int Res_1 = A/B*C; // Результат 0 (ноль)
int Res_2 = A*C/B; // Результат 3 (три)

Vamos rastrear o processo de cálculo da expressão A/B*C:

1. Primeiro (da esquerda para a direita) será calculado o valor da expressão A/B. De acordo com as regras acima, o valor de expressão (3/5) será o valor inteiro 0 (zero).

2. Calcular a expressão 0*C (zero multiplicado por C). O resultado é o valor inteiro 0 (zero).

O resultado geral (valor da variável Res_1) é um valor inteiro de 0 (zero).

Agora vamos ver como as coisas se desenvolvem ao calcular a expressão A*C/B.

1. Cálculo de A*C. O valor desta expressão é inteiro 18 (3*6=18).

2. Cálculo da expressão 18/B. A resposta é óbvia: (18/5) após descartar a parte fracionária, o resultado será um número inteiro 3 (três).

O resultado total (valor de Res_2) é o número inteiro 3 (três).

Este exemplo mostra um pequeno fragmento de programa que calcula os valores das variáveis do tipo inteiro. Se substituirmos estas variáveis por constantes, mas usarmos os mesmos valores, o resultado final será o mesmo. Ao calcular expressões, nas quais são usados números inteiros, você deve ter muito cuidado com o conteúdo das linhas de programa. Caso contrário, pode ocorrer um erro no programa, que é muito difícil de detectar mais tarde (especialmente em programas grandes). Este problema não ocorre em caso de cálculos, nos quais apenas números reais estão envolvidos. Entretanto, se você usar operandos de diferentes tipos em uma expressão complexa, o resultado final pode depender inteiramente de um fragmento gerado aleatoriamente contendo a divisão de inteiros.

O conceito e as propriedades gerais dos operadores são discutidos na seção Operadores, e o capítulo Operadores revela as autopropriedades de cada operador".

 
FileFlush é o mesmo que salvar um arquivo?
 
Roman.:


Qual é o problema?

Confira com uma calculadora - você vai descobrir.

Verifiquei - tanto a Casio como mesmo a calculadora da Microsoft dizem que 2/3*9=6.


 
chief2000:

Verificado - tanto a Casio como mesmo a calculadora da Microsoft dizem 2/3*9=6.



Bem. Qual é o problema?