Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 455

 

Olá!


O robô abre e fecha pedidos com base em certos sinais, mas é necessário que um pedido pendente seja colocado na mesma direção, mas somente um, depois que o pedido for fechado.

Isto é, depois que o pedido pendente é feito, acionado e fechado, nada mais tem que acontecer e o robô está esperando por um sinal para abrir um pedido regular.


Você pode me dizer como implementar isto?

 
Snower: Bom dia!

O robô abre e fecha ordens com base em certos sinais, então eu preciso que o robô coloque uma ordem pendente na mesma direção, mas apenas uma.

Isto é, após a ordem pendente ter sido colocada, acionada e fechada, nada mais precisa acontecer, o robô está esperando por um sinal para abrir uma ordem normal.

Você pode me dizer como isto pode ser implementado?

É muito simples. Em dois para loops você analisa 1) o histórico de pedidos e 2) os pedidos em andamento. Com base na análise você descobre a situação e usa declarações condicionais para realizar a ação desejada. ou você precisa de mais detalhes?

 
STARIJ:

É tão simples quanto isso. Em dois para loops, você analisa 1) o histórico dos pedidos e 2) os pedidos em andamento. Com base na análise, você descobre a situação e usa declarações condicionais para executar a ação necessária. ou você precisa de mais detalhes?

Eu ficaria muito grato se você pudesse elaborar.

 
Snower: Eu ficaria muito grato se você pudesse elaborar.

Que parte você quer que eu explique? Ou toda ela?

 
LRA:

Que parte você quer que eu escreva? Ou todas elas?

os laços em si, os "se" que eu posso arranjar.

 
Vladislav Andruschenko:
))) Eu trabalho há 10 anos e nunca tive tais pensamentos. Você gosta de situações difíceis.

agora eles serão

 

Qual é o problema com este código? Às vezes ele abre 1 comércio, às vezes 2?

Eu deveria ter no máximo 1 comércio por par, mas devo ter feito asneira em algum lugar


...
if(!Orderex(_Symbol))
{
   OrderSend(NULL,OP_SELL,lot,Bid,30,Bid+stop*Point,Bid-take*Point,NULL,magicf,0,clrRed);
}
...
bool Orderex(string symbol)
{
   for(int i=OrdersTotal(); i>0; i--)
      {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==symbol && OrderMagicNumber()==magicf) return true;
      
      
      
      }


   return false;
}
 
Roman Sharanov:

Qual é o problema com este código? Às vezes ele abre 1 comércio, às vezes 2?

Eu deveria ter no máximo 1 comércio por par, mas devo ter feito asneira em algum lugar


for(int i=OrdersTotal()-1; i>=0; i--)
 
Konstantin Nikitin:

E ainda mais interessante é isto

for(int i = OrdersTotal(); i-- >=0;)
 
Ahhhh, sim, a conta é do zero :)
Razão: