pedidos em aberto com intervalo de 10pip - página 3

 
    &&  OrderMagicNumber()  == 0           // my magic number

0 é o número mágico padrão, portanto sua condição não excluirá nenhuma negociação aberta manualmente

         Tip   =OrderType();                    // Type of selected order
         Price =OrderOpenPrice();               // Price of selected order
         SL    =OrderStopLoss();                // SL of selected order 
         TP    =OrderTakeProfit();               // TP of selected order
         Lot   =OrderLots();                     // Amount of lots

Aqui você está armazenando os valores da última ordem selecionada. Se você quiser armazenar os valores dolastTicket, você precisará re=selecioná-lo.

Por que você faz um loop através dos pedidos para encontrar o último pedido, você não faz nada com o resultado?

Seus 2 blocos de código são totalmente independentes um do outro

 
GumRai:

0 é o número mágico padrão, portanto sua condição não excluirá nenhuma negociação aberta manualmente

Aqui você está armazenando os valores da última ordem selecionada. Se você quiser armazenar os valores dolastTicket, você precisará re=selecioná-lo.

Por que você faz um loop através dos pedidos para encontrar o último pedido, você não faz nada com o resultado?

Seus 2 blocos de código são totalmente independentes um do outro




GumRai: obrigado por sua resposta, de acordo com seus pontos fortes

OrderMagicNumber() == 0 ------------ em nenhum lugar colocá-lo 0 porque eu estava testando meu código, então eu o coloquei sem o número do valor, obrigado pelas recomendações e correções

OrderMagicNumber() == 1234

lastTicket coloquei-o no final do meu pedido


lastTicket=OrderSend(Symbol(),OP_BUY,mylot(),Ask,0,0,0, "My Comment",magic,0,Green);

if(lastTicket>0)
{
bool b=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+(StopLoss*Point),Digits),NormalizeDouble(Ask-(TakeProfit*Point),Digits),0,Red);
}



mas não sei se realmente entendi bem porque tudo que quero que minha ea faça é colocar vários tipos de ordem de venda, então quero que a ea obtenha o maior preço aberto no símbolo do gráfico atual e abra 10pip acima dele.e qualquer comércio abaixo da última ordem atual rejeitada.

Então, para conseguir o que eu quero, eu o faço passo a passo. Primeiro eu tento conseguir o último pedido aberto primeiro, seguindo o fomular WHRoeder me deu.

Por isso, meu loop through order não é apenas para definir 1 comércio aberto, mas múltiplos negócios abertos, então é por isso que eu quero ter o último bilhete aberto alto.



// Orders accounting 

{
     datetime lastTime  = 0;
    int      lastTicket = -1; // None open.
    for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
        OrderSelect(0, SELECT_BY_POS,MODE_TRADES)                 // Only my orders w/
    &&  OrderMagicNumber()  == 0           // my magic number
    &&  OrderSymbol()       == Symbol()                 // and my pair.
    &&  OrderOpenTime()     >=  lastTime
    &&  OrderTicket()       >   lastTicket
    ){
      lastTime   = OrderOpenTime();
      lastTicket = OrderTicket();
    }
 
}

         Tip   =OrderType();                    // Type of selected order
         Price =OrderOpenPrice();               // Price of selected order
         SL    =OrderStopLoss();                // SL of selected order 
         TP    =OrderTakeProfit();               // TP of selected order
         Lot   =OrderLots();                     // Amount of lots
   
////////////////////////////////////////////////////////////////////////////////////////////////////////
//---------------------------------------- 5 ------------------------------------//
/*this is the poinnt where main formular or trading system EA-MA is based*/
//---------------------------------------------------------------------------
// Trading criteria
       
rsi1=iRSI(NULL,0,14,PRICE_CLOSE,1);
rsi2=iRSI(NULL,0,14,PRICE_CLOSE,0); 
     
 if(rsi2>70 && Ask > High[1] + (10*pips2dbl) )
  {
      Opn_S=true;
     } 
     else 
   if(rsi2>70 && Ask < High[1] + (10*pips2dbl)) 
      {
      Opn_S=false;
     }


lastTicket=OrderSend(Symbol(),OP_BUY,mylot(),Ask,0,0,0,"My Comment",magic,0,Green);

         if(lastTicket>0)
     {
      bool b=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+(StopLoss*Point),Digits),
                         NormalizeDouble(Ask-(TakeProfit*Point),Digits),0,Red);
     }
 

Por favor, tente não incluir longas linhas de código em seus postos, isso os torna difíceis de ler.

   if(lastTicket>0)
     {
      bool b=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+(StopLoss*Point),Digits),
                         NormalizeDouble(Ask-(TakeProfit*Point),Digits),0,Red);
     }

Não há nada que o impeça de usar 2 linhas como acima

 
dan100:

WHRoeder este código está todo no meu cálculo de execução de pedidos, por favor, peço ajuda para modificar meus erros e me fazer passar. obrigado por sua vontade de ajudar



dan100:

WHRoeder este código está todo no meu cálculo de execução de pedidos, por favor, peço ajuda para modificar meus erros e me fazer passar. obrigado por sua vontade de ajudar






GumRai agradece por suas correções. mas eu consegui acima do código certo

 
dan100: por favor, ainda estou esperando por sua ajuda.WHRoeder
Você vai ficar esperando muito tempo.
  1. Eu lhe disse o que você precisa fazer, você não o fez.
  2. Eu lembrei aqui que você ainda não o tinha feito.
  3. E agora você pergunta novamente, mas ainda não o fez.
 
WHRoeder:
dan100: por favor, ainda estou esperando por sua assistência.WHRoeder
Você vai estar esperando muito tempo.
  1. Eu lhe disse o que você precisa fazer, você não o fez.
  2. Eu lembrei aqui que você ainda não o tinha feito.
  3. E agora você pergunta novamente, mas ainda não o fez.



WHRoeder eu não entendia mais esta é toda a parte lógica da minha ea e também onde está, por enquanto, meu conhecimento de código.

mas se você puder me permitir enviar todo o código da ea para você eu estarei bem por favor, por favor WHRoeder por favor me ajude eu sei que você pode.estou esperando por seu

aprovação e link para enviar os códigos ea inteiros.


além disso, formalmente antes de me dar esta fórmula......

  1. Encontre o comércio aberto com o preço aberto mais alto.
  2. Se o mercado não tiver alcançado o preço + 10 pips, devolva
  3. abrir um novo pedido.


eu só testei o último preço apenas com o preço médio móvel de cruzamento ASK ou BID e mais tarde descubro que um dia as ordens abertas abaixo do preço alto do gráfico atual, então é isso que eu quero corrigir

não tenho nenhum teste de código alto, apenas MA e Ask e 10 pontos, portanto não uso código novamente nos testes.

 
dan100:

GumRai agradece por suas correções. mas eu consegui acima do código certo

Primeiramente, não está claro o que você está tentando fazer

Você diz

"mas não sei se realmente entendi bem porque tudo que quero que minha ea faça é colocar vários tipos de ordem de venda, então quero que a ea obtenha o maior preço aberto no símbolo do gráfico atual e abra 10pip acima dele.e qualquer comércio abaixo da última ordem atual rejeitada.

Então,para conseguir o que eu quero, eu o faço passo a passo. primeiro tento conseguir a última ordem aberta primeiro, seguindo o fomularWHRoederme deu".

Então, o que você quer encontrar?

A ordem com o maior preço aberto?

ou

A ordem que foi aberta mais recentemente?

Como alguém pode ajudá-lo quando você não é capaz de descrever o que deseja?

     datetime lastTime  = 0;
    int      lastTicket = -1; // None open.
    for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
        OrderSelect(0, SELECT_BY_POS,MODE_TRADES)                 // Only my orders w/
    &&  OrderMagicNumber()  == 0           // my magic number
    &&  OrderSymbol()       == Symbol()                 // and my pair.
    &&  OrderOpenTime()     >=  lastTime
    &&  OrderTicket()       >   lastTicket
    ){
      lastTime   = OrderOpenTime();
      lastTicket = OrderTicket();
    }

Este código encontra a última ordem aberta, mas não armazena o preço em nenhum lugar

      
rsi1=iRSI(NULL,0,14,PRICE_CLOSE,1);
rsi2=iRSI(NULL,0,14,PRICE_CLOSE,0); 
     
 if(rsi2>70 && Ask > High[1] + (10*pips2dbl) )
  {
      Opn_S=true;
     } 
     else 
   if(rsi2>70 && Ask < High[1] + (10*pips2dbl)) 
      {
      Opn_S=false;
     }

Aqui você dá valor à Opn_S, mas não faz nada com ela

   lastTicket=OrderSend(Symbol(),OP_BUY,mylot(),Ask,0,0,0,"My Comment",magic,0,Green);

Aqui não há condições para abrir um pedido e você escreve em excesso o valor do lastTicket.

Seu código não tem lógica, são apenas 3 seções de código que são totalmente alheias umas às outras

 
GumRai agradece novamente por suas indicações e pelo resumo. o que eu quero encontrar é

preço aberto mais alto no símbolo do gráfico atual e abrir 10pip acima dele se sua compra/abrir 10pips abaixo se sua venda

por favor, me ajude com isso

 
dan100:
GumRai agradece novamente por suas indicações e pelo resumo. o que eu quero encontrar é

maior preço aberto no símbolo do gráfico atual

por favor, me ajude com isso

Por que você precisa de ajuda com isso?

Se você puder escrever o código para encontrar o pedido com o último (mais alto) OrderOpenTime, deve ser uma questão simples encontrar o pedido com o mais alto OrderOpenPrice.

É uma substituição simples.

 
GumRai:

Por que você precisa de ajuda com isso?

Se você puder escrever o código para encontrar o pedido com o último (mais alto) OrderOpenTime, deve ser uma questão simples encontrar o pedido com o mais alto OrderOpenPrice.

É uma substituição simples.



Sim, eu escrevo meus códigos e alguns eu pesquiso, mas quando não vejo o resultado desejado, procuro por soluções, embora saiba que já estou na metade do caminho, ainda com erros

às vezes, por mais simples ou pequenos que sejam, pode ser difícil resolvê-los. por favor, GumRai me ajude, eu ficarei agradecido.