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

 
webip:
Pessoal, por favor, ajudem-me. Já se passaram 5 dias e eu não consigo entender. Fiz minha EA para modificar a ordem de parada de perda quando os critérios necessários acionam. E pare de perder - o que deve ser definido, aproveite a última ordem fechada. Mas quando a modificação começa, o robô sempre estabelece um Stop Loss de 1,0000. Eu não entendo o que está errado. Eu já embrulhei meus miolos. Alguém tem algumas variantes, como tirar proveito do pedido anterior e colocar o stop loss do pedido atual?

Bem... parece que você está armazenando-a em uma variável do tipo int, enquanto você quer que ela seja um duplo.

A tomada da ordem atual pode não ser necessariamente definida para a parada da perda da ordem anterior. Pode ser colocado em um lugar onde não deveria estar.

 
artmedia70:

Bem... Parece que você a está armazenando em uma variável do tipo int, enquanto que você deveria armazená-la em dobro.

E não é necessariamente que você possa colocar o atual na parada do anterior... Pode ser colocado em um lugar onde não deveria estar.


mas é onde você pode colocá-lo. Também pensei que estava memorizando no tipo errado no início, mas depois verifiquei e estava tudo bem.
 
webip:
mas é onde você pode colocá-lo. Também pensei que estava memorizando no tipo errado no início, mas depois verifiquei e estava tudo bem.

Armazene em uma variável dupla, muito provavelmente você armazena o preço em uma variável int, assim a parte fracionária é cortada.
 
artmedia70:
Armazene em uma variável dupla, muito provavelmente você armazena o preço em uma variável int, assim a parte fracionária é cortada.


Verifiquei novamente. Não entendia nada, mas todas as variáveis estão em seu lugar. O único problema agora é que quando o critério de modificação de uma ordem é acionado, o gráfico do Testador de Estratégia simplesmente congela. O que eu devo fazer? Acho que memorizamos tudo em dobro.
 
webip:

Verifiquei novamente. Eu não entendi nada, mas todas as variáveis estão em seu lugar. O único problema agora é que, quando o critério de modificação de uma ordem é acionado, o gráfico do Testador de Estratégia simplesmente congela. O que eu devo fazer? Acho que memorizamos tudo em dobro.

Esqueci de trancar a geladeira na cozinha :)

Bem, o que mais posso lhe dizer em um lugar vazio?

Assim? Ou você tem certeza de que armazena os preços em uma variável com tipo duplo?

 
artmedia70:

Eles esqueceram de trancar a geladeira na cozinha :)

Bem, o que mais posso lhe dizer sobre os ossos nus?



Não. A geladeira está fechada. :))

Não sei qual é o problema. Eu fiz todas as variáveis corretamente. Aqui está a peça onde ela é modificada. Talvez você entenda qual é o problema.

int modify_2(int tip)
 {

 int ticket;  //номер ордера
 double 
 price,   //Цена открытия
 tp;     //Новое значение цены
 double ts;
 bool modify=false;
 double take;
 
  for(int n=1;n<=OrdersTotal();n++)
   {
    ticket=mas_ord[n][1];
    if(mas_ord[n][4]!=tip)
     continue;
    price=mas_ord[n][6];
    tp=mas_ord[n][2];                          
    
    switch(tip)
     {

      case 0:
     OrderSelect(1,SELECT_BY_POS,MODE_HISTORY);
      take=OrderTakeProfit();
       ts=take;
       modify=true;
       break;
      
      case 1:
       ts=Ask+Level_sell_138*Point;
       modify=true;        
     } 
    //--------------
    if(modify==false)
     continue;
    
    bool ans=OrderModify(ticket,price,ts,tp,0);
    
    if(ans==false)
     { 
      n--;
     }
     else ord_2=true;
   }
   return;
 }
 
webip:


Não. A geladeira está fechada. :))

Eu não sei qual é o problema. Eu fiz todas as variáveis corretamente. Aqui está a peça onde são feitas as modificações. Talvez você consiga descobrir qual é o problema.

Isto é de um livro didático ou algo assim?

for(int n=1;n<=OrdersTotal();n++)

Você precisa passar pelas ordens desta forma:

for(int n=0;n<OrdersTotal();n++)

Assim, o resto das matrizes flutuarão...

Eu procuraria a última ordem fechada tentando pesquisar através da história, não apontando explicitamente para 1

E assim por diante ... Não posso olhar mais longe - primeiro, sem integridade de código é improvável que ajude, e segundo, são sete da manhã e ainda nem sequer fui para a cama...

 
webip:


Não. A geladeira está fechada. :))

Eu não sei qual é o problema. Eu fiz todas as variáveis corretamente. Aqui está a peça onde são feitas as modificações. Talvez você consiga descobrir qual é o problema.

Tente n fazer o dobro! Não faria mal, mas poderia ajudar a resolver o problema.
 
artmedia70:

Isto é de um livro didático?

Você tem que ultrapassar as ordens como esta:

Assim, o resto das matrizes flutuarão...

Eu procuraria a última ordem fechada tentando pesquisar através da história, não apontando explicitamente para 1

E assim por diante ... Não posso procurar mais - primeiro, dificilmente me ajudaria sem a integridade do código, e segundo, são 7 da manhã e ainda nem sequer fui para a cama...



Também funcionou bem com este excesso. E, nessa última ordem fechada, apontei diretamente para saber se o programa funciona bem (e funciona como merda). E como estou testando no testador (e sei que a ordem em que estou interessado abrirá primeiro), meu código é muito longo, não poderei copiá-lo aqui:)
 
webip:


Não. A geladeira está fechada. :))

Eu não sei qual é o problema. Eu fiz todas as variáveis corretamente. Aqui está a peça onde são feitas as modificações. Talvez você consiga descobrir qual é o problema.

A matriz

mas_ord

Que tipo você tem?

De que tipo são as variáveis preço, tp, take variables? Por que devemos adivinhar aqui?