como posso obter o preço mais alto após a abertura do pedido. - página 6

 

Eu consertei o primeiro número ( eu cometi erro Obrigado diostar)

// eu devo colocar if(OrderTotal()>0){
if ((lastOpenedOpenPriceBuy()-0.0030)>MarketInfo("EURUSD",MODE_BID))
{ SELL("EURUSD",S_EURUSD_LS_1,S_EURUSD_TP_1,S_EURUSD_SL_1,S_EURUSD_TS_1, "if ( (lastOpenedOpenPriceBuy()-0.0030>MarketInfo(EURUSD,MODE_BID) )" ) ;}
}

para o segundo:

if ((lastOpenedOpenedPriceBuy()-lastOpenedOpenedPriceSell() )>=0.0060) &&( lastClosedClosePrice()<beforelastClosedClosePrice()) )
{ CLOSESHORT("EURUSD") ;}

Não sei o que devo fazer:

para sua informação a função CLOSESHORT é:

int CLOSESHORT(string symbol_c) {
CloseAllPositions(symbol_c,OP_SELLL,MagicNumberShort);
CloseAllPositions(symbol_c,OP_SELLL,MagicNumberShort);
return(0);
}


Obrigado

 

Agora estou confuso.

Você está respondendo sobre a primeira função lastOpenedOpenedPriceBuy()

Talvez eu só consiga lidar com isso por enquanto. Então, que consertos você estava fazendo exatamente. Como é o código agora?

 
diostar:

Agora estou confuso.

Você não é o único ... pare de perder seu tempo.
 
RaptorUK:
Você não é o único ... pare de desperdiçar seu tempo.

este fio é provavelmente um dos mais longos. E depois de 6 páginas, confuso. Não, eu digo que isso não é um "desperdício".

(Significa apenas seu tempo para uma nova direção, uma nova vida, um novo começo. Para todos).

 
Também dediquei tempo a este tópico, acrescentei código e fiz sugestões. . quando você arrasta o cavalo para a água, aromatize-o com feno e adicione algumas maçãs e ainda assim o cavalo não quer beber, é hora de perceber que o cavalo não quer beber . . quer é um gotejamento intravenoso para sua ingestão de água . . nesse ponto, no que me diz respeito, o cavalo está por conta própria.
 
RaptorUK:
Também dediquei tempo a este tópico, acrescentei código e fiz sugestões. . quando você arrasta o cavalo para a água, aromatize-o com feno e adicione algumas maçãs e ainda assim o cavalo não quer beber é hora de perceber que o cavalo não quer beber . . . quer é um gotejamento intravenoso para sua ingestão de água . . nesse ponto, no que me diz respeito, o cavalo está por conta própria.

Estou vendo. A recompensa final pode não estar "destinada" a ter o cavalo alimentado, então a recompensa para aqueles que tentaram, tem que ser algo mais.

Agradeça ao cavalo por isso.

 

Obrigado diostar por sua ajuda.

agora tenho 85% de correção dos bugs. vamos ver:

1- criamos 4 funções ( por favor, veja no final desta página)

*lastOpenedOpenedPriceBuy()

* lastOpenedOpenedPriceSell()

*lastClosedClosePrice()
*beforelastClosedClosePrice()

2- Enfrentamos o primeiro problema quando usávamos:

if (  ((lastOpenedOpenPriceBuy()-0.0030)>MarketInfo("EURUSD",MODE_BID))  ) 
   {  SELL("EURUSD",S_EURUSD_LS_1,S_EURUSD_TP_1,S_EURUSD_SL_1,S_EURUSD_TS_1,"if (  ( (lastOpenedOpenPriceBuy()-0.0030)>MarketInfo(EURUSD,MODE_BID) )  )") ;}
  if (  ((lastOpenedOpenPriceSell()+0.0030)<MarketInfo("EURUSD",MODE_BID))  ) 
   {  BUY("EURUSD",B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1,"if (  ( (lastOpenedOpenPriceSell()+0.0030)<MarketInfo(EURUSD,MODE_BID) )  )") ;}

Corrigimo-la, acrescentando :

if(OrdersTotal()>0){
  if (  ((lastOpenedOpenPriceBuy()-0.0030)>MarketInfo("EURUSD",MODE_BID))  ) 
   {  SELL("EURUSD",S_EURUSD_LS_1,S_EURUSD_TP_1,S_EURUSD_SL_1,S_EURUSD_TS_1,"if (  ( (lastOpenedOpenPriceBuy()-0.0030)>MarketInfo(EURUSD,MODE_BID) )  )") ;}
  if (  ((lastOpenedOpenPriceSell()+0.0030)<MarketInfo("EURUSD",MODE_BID))  ) 
   {  BUY("EURUSD",B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1,"if (  ( (lastOpenedOpenPriceSell()+0.0030)<MarketInfo(EURUSD,MODE_BID) )  )") ;}
  }

3- A segunda edição é:

if ( ((lastOpenedOpenPriceBuy()-lastOpenedOpenPriceSell())>=0.0060)&&(((lastOpenedOpenPriceBuy()+lastOpenedOpenPriceSell())/2)<MarketInfo("EURUSD",MODE_BID))
         &&(lastClosedClosePrice()< beforelastClosedClosePrice()) )  
   {  CLOSESHORT("EURUSD") ;}

se eu remover &&(lastClosedClosePrice()< beforelastClosedClosePrice()) . então tudo vai dar certo

não há problema com :

*((lastOpenedOpenedPriceBuy()-lastOpenedOpenedPriceSell())>=0,0060)

*(((lastOpenedOpenedPriceBuy()+lastOpenedOpenedPriceSell())/2)<MarketInfo("EURUSD",MODE_BID))

único problema vindo com &&(lastClosedClosePrice()< beforelastClosedClosePrice())

tome um exemplo:

se a ordem número 5 abriu e foi para venda, então a ordem número 6 abriu e fechou, então a ordem número 7 abriu e foi para compra.

O caso será (lastClosedClosePrice()< beforelastClosedClosePrice())

( Pedido número 6 < Pedido número 4 ) // uma vez que o pedido número 5 ainda não fechou.

O que devo fazer ? Eu não sei. Eu tentei usar if(OrderHistoryTotal()>0){entãoinsira todas as condições mas de nenhuma maneira }

double lastOpenedOpenPriceBuy()
  {
   double ret = 0;
   datetime time=0;
   for(int i=0; i<OrdersTotal(); i++) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()==OP_BUY && OrderOpenTime()>time) {
         time = OrderOpenTime();
         ret = OrderOpenPrice();
      }
   }
   
   return(ret);
  }


double lastOpenedOpenPriceSell()
  {
   double ret = 0;
   datetime time=0;
   for(int i=0; i<OrdersTotal(); i++) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()==OP_SELL && OrderOpenTime()>time) {
         time = OrderOpenTime();
         ret = OrderOpenPrice();
      }
   }
   
   return(ret);
  }



double lastClosedClosePrice()
  {
   double ret = 0;
   datetime time = 0;
   for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
      OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
      if(OrderType()<2 && OrderCloseTime()>time) {
         time = OrderCloseTime();
         ret = OrderClosePrice();
      }
   }
   
   return(ret);
  }


double beforelastClosedClosePrice()
  {
   double ret = 0;
   double ret2 = 0;
   datetime time = 0;
   for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
      OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
      if(OrderType()<2 && OrderCloseTime()>time) {
         time = OrderCloseTime();
         ret = ret2;
         ret2 = OrderClosePrice();
      }
   }
   if(ret==0) {
      ret = ret2;
   }
   
   return(ret);
  }
 
double lastOpenedOpenPriceBuy()
  {
   double ret = 0;
   datetime time=0;
   for(int i=0; i<OrdersTotal(); i++) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()==OP_BUY && OrderOpenTime()>time) {
         time = OrderOpenTime();
         ret = OrderOpenPrice();
      }
   }
   
   return(ret);
  }

Isto NÃO foi sugerido, e "nós" não criamos isto. Isto é 100% seu.