Ter o preço aberto da vela a uma hora específica. - página 2

 
Kane59:

Ok, eu inseri seu código no meu EA e ele funciona perfeitamente! Eu sorri quando vejo o EA executar como eu queria!!!

Muito obrigado, muito obrigado ......

Está no backtest porque o mercado está fechado...

Mas há um problema:

Ea Abrir posições corretamente, mas comprar nunca é fechado e vender imediatamente fechado quando aberto.

Você não quer saber se seu OrderClose() falhou e se tem porque falhou ? por que não está verificando o valor de retorno da função OrderClose() e relatando quaisquer erros ? você pode descobrir que tanto a BuyClose() como a Sell estão tentando fechar imediatamente, mas a Buy OrderClose() falhou...

O que são valores de retorno da função Function Return ? Como eu os utilizo ?

 

Não há erro na guia Diário.


Vou colocar valores de retorno. Posso fazer isso?

Close = CloseOrder(....)

if (Close < 1)

Print ("Close Failed", GetLastError())
 
Kane59:

Não há erro na guia Diário.


Vou colocar valores de retorno. Posso fazer isso?

Fechar tem um significado diferente . . OrderClose() devolve um bool . .

if ( ! OrderClose(....) )

Print ("Close Failed", GetLastError())
 
RaptorUK:

Fechar tem um significado diferente . . OrderClose() devolve um bool . .


Ok ok eu farei isso, obrigado :)
 

Eu inseri:

if(OrdersTotal()>0)
            { 
               for(int i=OrdersTotal()-1; i>=0; i--)
               {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
                  {
                     if(OrderMagicNumber() == MagicSH && OrderOpenTime() > iTime(Symbol(), PERIOD_H1, 1))
                     {
                        if(OrderType() == OP_BUY)
                        {
                           OrderClose(OrderTicket(),LotsSH, bid, 300, CLR_NONE);
                           {
                              if(! OrderClose(OrderTicket(),LotsSH, bid, 300, CLR_NONE))
                              {
                                 Print ("Close Buy Failed", GetLastError());
                              }
                           }
                        }
                        if(OrderType() == OP_SELL)
                        {
                           OrderClose(OrderTicket(),LotsSH, ask, 300, CLR_NONE);
                           {
                              if(! OrderClose(OrderTicket(),LotsSH, ask, 300, CLR_NONE))
                              {
                                 Print ("Close Sell Failed", GetLastError());

Nenhum erro foi cometido.

 
Kane59:

Eu inseri:

Nenhum erro foi cometido.

Você não pode fechar a mesma encomenda duas vezes . .

 OrderClose(OrderTicket(),LotsSH, bid, 300, CLR_NONE);            //  first attempt to close
    {
    if(! OrderClose(OrderTicket(),LotsSH, bid, 300, CLR_NONE))       //  second attempt to close
 

Eu resolvi o problema, as condições do loop não estavam codificadas corretamente.

Mais uma vez, obrigado.

 

Olá a todos,

usei o código dado pela WHRoeder, mas vejo com o tempo que a EA leva apenas um "#define" para ser uma referência para as 4 horas diferentes.

    #define HR0900 23400    // 9*3600
    #define HR1500 54000
    #define HR1900 68400
    #define HR2300 59800

Eu tentei de maneira diferente:

Construí uma arraysize com Int que são referência de vela e é a mesma coisa, apenas uma é considerada sem o número 4, como posso resolvê-la?

 
Kane59:

Ok, eu inseri seu código no meu EA e ele funciona perfeitamente! Eu sorri quando vejo o EA executar como eu queria!!!

O que você fez para quebrar o códigodoWHRoeder?
 
Kane59:

. . . como posso resolvê-lo?

Acho que você precisa mostrar seu código.