[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 248

 
Bicus:

O que é isso? Está passando por todas as ordens da história, não está? É claro que o corpo do laço pode, de alguma forma, ser limitado por datas, etc.

O que eu quis dizer na minha pergunta foi: existe algum truque para armazenar apenas as últimas encomendas fechadas na história do testador, ou seja, a forma como é feito na história real?

Na história real, funciona da mesma maneira. Todas as ordens do histórico da conta são pesquisadas.

A história não é corrigida. É o mesmo para esta conta e só pode ser atualizado com novos eventos.

 
artmedia70:

Parece que já é entediante... É elementar, Watson:

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int start()
{
if (ObjectFind("MyPriceLine")<0) ObjectCreate("MyPriceLine", OBJ_HLINE, 0, 0, Ask+20*Point) ;
ObjectSet("MyPriceLine", OBJPROP_PRICE1, Ask+20*Point);
return(0);
}

//+------------------------------------------------------------------+
Obrigado pela tão esperada resposta! Não consigo entender, como isso me ajudará a resolver meu problema? Como faço para que as linhas desenhem acima e abaixo Pergunte e da mesma EA ao mesmo tempo?
 
globad:
Obrigado pela resposta há muito esperada! Não consigo ver como isso me ajudará a resolver meu problema? Como faço para que as linhas desenhem acima e abaixo Pergunte e da mesma EA ao mesmo tempo?
Dê às linhas nomes diferentes .
 
Vovo4ka:

Pessoal, ajudem, a condição é a seguinte: três velas em alta, depois há uma "aquisição" .......aqui está o código onde está o erro...aqui está o código onde está o erro...

onde está o erro?
 
sergeev:
qual é o problema?

não funciona assim....... não abre posições.... embora eu veja pela história que deveria abrir, mas não abre posições... apenas se mantém em silêncio e sem erros
 
Como faço para abrir um comércio não mais do que, digamos, um por hora?
 
artmedia70:
Dê às linhas nomes diferentes .

De alguma forma...?

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int start()
{
if (ObjectFind("MyPriceLine1")<0) ObjectCreate("MyPriceLine1", OBJ_HLINE, 0, 0, Ask+20*Point) ;
ObjectSet("MyPriceLine1", OBJPROP_PRICE1, Ask+20*Point);
if (ObjectFind("MyPriceLine2")>0) ObjectCreate("MyPriceLine2", OBJ_HLINE, 0, 0, Ask-20*Point) ;
ObjectSet("MyPriceLine2", OBJPROP_PRICE1, Ask-20*Point);
return(0);
}
//+------------------------------------------------------------------+
 
Vovo4ka:
Rapazes, como faço para abrir um negócio não mais do que, digamos, uma vez por hora?

Por exemplo, assim:

//+----------------------------------------------------------------------------+
datetime SecondsAfterOpenLastPos(string sy, int op, int mn) 
{
   datetime t;
   int      i, k=OrdersTotal();

   if (sy=="0") sy=Symbol();
   for (i=0; i<k; i++) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol()!=sy)        continue;
         if (OrderType()!=op)          continue; 
         if (OrderMagicNumber()!=mn)   continue; 
         if (t<OrderOpenTime()) t=OrderOpenTime();
         }
      }
  return(TimeCurrent()-t);
}
//+----------------------------------------------------------------------------+

Chamada como esta:

if (SecondsAfterOpenLastPos(NULL, OP_SELL, Magic)>=(Period()*3)*60) {
   // --- код, если прошло три минуты и более с момента открытия ... 
   // ... последней позиции Sell  с магиком Magic  на текущем символе ---
   }
Espero que você possa transformar minutos em horas ... :)
 
globad:

De alguma forma...?

Não pergunte, verifique com um testador... :)
 
globad:

De alguma forma...?

if (ObjectFind("MyPriceLine1")<0) ObjectCreate("MyPriceLine1", OBJ_HLINE, 0,0, Ask+20*Point);
                                     ObjectSet("MyPriceLine1", OBJPROP_PRICE1, Ask+20*Point);
if (ObjectFind("MyPriceLine2")>0) ObjectCreate("MyPriceLine2", OBJ_HLINE, 0,0, Ask-20*Point);
                                     ObjectSet("MyPriceLine2", OBJPROP_PRICE1, Ask-20*Point); 
ObjectFind retorna -1 se a linha ainda não tiver sido criada, ou seja, você também deve escrever ObjectFind("MyPriceLine2" )<0 no segundo se
Razão: