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

 
ToLik_SRGV:

O bug é óbvio; ele abre posições em cada tick, já que a ordem de perda na história não está indo a lugar algum, então ele o encontra em cada tick e preenche os valores das variáveis de controle com os mesmos valores, e então o bloco de abertura de negócios aciona.


Como fazer para que não o procure novamente, ou melhor, não procure algo que já tenha sido trabalhado

 
FoxUA:

Como faço para que ele não o procure novamente, ou melhor, não procure algo que já tenha sido trabalhado?

Retire este bloco:

for(int cnt=OrdersHistoryTotal();cnt>0;cnt--)
     {
 OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY);
{if(OrderMagicNumber()== mag &&
OrderSymbol()==Symbol()) 
{ if (OrderType() == OP_BUY )  {b=1; if (OrderClosePrice()==OrderTakeProfit()) bt=1; 
if (OrderClosePrice()==OrderStopLoss()) bs=1; bl=OrderLots()*100; break;}
if (OrderType() == OP_SELL)  {s=1; if (OrderClosePrice()==OrderTakeProfit()) st=1; 
if (OrderClosePrice()==OrderStopLoss()) ss=1; sl=OrderLots()*100; break;}
            }
            
            
         }
      }

E substitui-la por esta:

   for(int cnt=OrdersHistoryTotal();cnt>0;cnt--){
      static int num_ticket;
      if(!OrderSelect(cnt-1, SELECT_BY_POS, MODE_HISTORY))break;
      if(OrderMagicNumber()== mag && OrderSymbol()==Symbol()){      
      if(num_ticket != OrderTicket())num_ticket = OrderTicket(); else break;
         if(OrderType() == OP_BUY){
            b=1;
            if(OrderClosePrice()==OrderTakeProfit())bt=1;
            if(OrderClosePrice()==OrderStopLoss())bs=1;
            bl=OrderLots()*100;
            num_ticket = OrderTicket();
            break;
         }
         if(OrderType() == OP_SELL){
            s=1;
            if(OrderClosePrice()==OrderTakeProfit())st=1; 
            if(OrderClosePrice()==OrderStopLoss())ss=1;
            sl=OrderLots()*100;
            num_ticket = OrderTicket();
            break;
         }
      }
   }

Difere em que, entre outras coisas, lembra-se do número do bilhete do último negócio perdido, respectivamente, verifica-o, e não permite a abertura pelo mesmo sinal.

 
ToLik_SRGV:

Jogar esta unidade fora:


Muito obrigado pelo teste, que parece estar funcionando.

 
Abzasc:

Algo parecido, acho eu.

SZY O botão de inserção de código "SRC" é desajeitado de usar, não é fácil de ler.


Muito obrigado! Eu escrevi int para UseHourTrade2 ao invés de boole ))
 

Boa tarde, amigos.

Gostaria de consultá-lo sobre este assunto:

Atualmente estou trabalhando em um indicador, que se transfere para a janela das leituras do primeiro par de moedas (ZigZag), formado sobre o segundo par de moedas.

Mas, eu encontrei um problema:

por exemplo, se houver uma grande "lacuna" nas citações: um par é citado como 1,4237, e o outro como 0,8345, então estes indicadores aparecem "espalhados" pela tela, o que não é muito conveniente visualmente ...

Como você realizaria a conversão do indicador "coordenadas" do segundo par, levando em conta as cotações do primeiro par (como fazer o preço "relativo")?

Muito obrigado antecipadamente pelo conselho, recomendação.

 
Morzh09:

Boa tarde, amigos.

Gostaria de consultá-los sobre este assunto:

Atualmente estou trabalhando em um indicador, que se transfere para a janela das leituras do primeiro par de moedas (ZigZag), formado sobre o segundo par de moedas.

Mas, eu encontrei um problema:

por exemplo, se houver uma grande "lacuna" nas citações: um par é citado como 1,4237, e o outro como 0,8345, então estes indicadores aparecem "espalhados" pela tela, o que não é muito conveniente visualmente ...

Como você realizaria a conversão do indicador "coordenadas" do segundo par, levando em conta as cotações do primeiro par (como fazer o preço "relativo")?

Muito obrigado antecipadamente pelo conselho, recomendação.

Veja o link. A escala em si é feita ali de uma forma original.

https://www.mql5.com/ru/code/7933

 

Olá!

Você pode me dizer como simplificar isso?

se (Saldo > 600)

{

Lot_mod = 0,1;

}

se (Saldo > 700)

{

Lot_mod = 0,11;

}

se (Saldo > 800)

{

Lot_mod = 0,12;

}

se (Saldo > 900)

{

Lot_mod = 0,13;

}

E assim por diante.... Porque está muito espalhado nesta forma.

Obrigado!

 
Lim1:

Olá!

Você pode me dizer como isso pode ser simplificado -

E assim por diante.... Está um pouco espalhado demais desta maneira.

Obrigado!





Uma equação da forma y=a*x+b ajudará
 
Lim1:

Olá!

Você poderia me dizer como simplificar isto -





determinar a fórmula para calcular o lote e pronto, caso contrário você terá que se preocupar com
 

Lim1, experimente assim:

int BalanceExcessIn100s = MathFloor( ( Balance - 600 ) / 100.01 );
Lot_mod = BalanceExcessIn100s * 0.01 + 0.1;