AJUDE QUEM PUDER!!! - página 4

 

Gostaria de conhecer um Expert Advisor como este... abre 2 ordens pendentes diferentes e fecha o resto quando uma delas aciona...

costumava haver uma dupla base de código pendente 2 chamada ... agora não há ...

 
Techno:
O que ele quer dizer é que ele tem todas as operações em todas as ordens misturadas em um loop, com uma iteração afetando significativamente o resultado da outra, e ele não consegue entender porque tudo isso não funciona.

Portanto, primeiro temos de separar as costeletas das moscas. Eu não pensei em tal caos :-)
 
sllawa3:

Gostaria de conhecer um Expert Advisor como este... abre 2 ordens pendentes diferentes e fecha o resto quando uma delas aciona...

havia um 2 pendente no código foi chamado ... não mais ...


loop through the open orders by OrderType() and set the counter:

int contagem=0;

if(OrderType()<2) conta +++;

if(count==0)

{ aqui está um seletor - assim que você se deparar com OrderType()>1 - delete it: OrderDelete(.....); se a exclusão for bem sucedida (veja a documentação), configure active: OrderSend(...); } Elementar, Watson!

Eu o enganei um pouco: if(OrdersTotal()==0) {place 2 pending orders} and then check with the order type selector : once you've found one <2, look for the second >2 and delete it

 

Aqui está um loop para verificar o estado das ordens, depois disso faz verificações e fechamentos e modificações, depois de cada ação de retorno do operador para fazer o loop atualizar o estado das ordens

for(int i=0;i<OrdersTotal();i++)
        {
          if(OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MAGA)
          switch(OrderType())
          {
          case 0:DB=1;break;
          case 1:DS=1;break;
          case 4:ZB=1;break;
          case 5:ZS=1;break;
          }
        }
 
OK... Eu entendo que você não pode me ajudar... é inútil dar conselhos até que eu os veja de qualquer forma... Vou procurar por um semelhante (também não funciona com este ciclo de verificação... tudo é igual... e mesmo com vários loops por operação...)
 
QUALQUER LAÇO QUE NÃO COMECE MOSTRARÁ O ÚLTIMO VALOR DA VARIÁVEL. E NÃO VAI COMEÇAR SE NÃO HOUVER ORDEM
 
sllawa3:
ok... achei que você não vai ajudar muito... é inútil dar conselhos até eu ver de qualquer forma... vou procurar por um semelhante ( também não funciona com este loop de verificação... tudo é o mesmo... e mesmo com vários loops por operação...)

Você se tornou preguiçoso... escreva uma função (ou duas, se você não sabe como) que retorna o número de ordens no mercado (histórico) de acordo com os parâmetros dados: símbolo, mágico, tipo de ordem, ou seja, em qualquer combinação...

então, a cada tick (ou outro período de tempo em que a EA começa) você define o número de ordens no mercado e ordens pendentes e, usando suas combinações, executa as seguintes ações

mercado == 0 e ordens pendentes == 0

mercado === 0 e ordens pendentes == 2 não fazem nada

mercado === 1 e ordens pendentes == 1 apagar uma ordem pendente

mercado === 1 e pausas == 0 isca

não posso acreditar que é tão difícil fazer ...


Desculpe. é hora de esquecer a programação processual - use funções...

uma variável economiza o último valor, é ridículo

 

NÃO HÁ NENHUM PROBLEMA NA HISTÓRIA, MAS COMO SABER SE ESTÁ ABERTO OU NÃO? SE O SELETOR MANTIVER O ÚLTIMO VALOR ATÉ QUE SEJA REINICIADO.

É MASTERIA.

 
sllawa3:
NÃO HÁ NENHUM PROBLEMA NA HISTÓRIA, MAS COMO SABER SE ESTÁ ABERTO OU NÃO? SE O SELETOR MANTIVER O ÚLTIMO VALOR ATÉ QUE SEJA REINICIADO.
já lhe foi dito 5 vezes como fazê-lo por 3 pessoas, se você não entender, procure um já pronto, ou peça a alguém que o escreva para você
 
NÃO É SÓ ESTA EA QUE É O PROBLEMA, É QUALQUER EA... QUE ATÉ QUE O SELETOR SEJA REINICIADO (ATÉ QUE A ORDEM APAREÇA) ELE TERÁ O ÚLTIMO VALOR PRESO NELE
Razão: