[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 222

 
ramirez17:

Favor indicar um erro.


divisão por 0 - deve haver uma divisão zero no diário de bordo

no primeiro passe

i+Sell_bars-1
você está fora do tamanho permitido de barras
 
ramirez17, é mais fácil encontrar máximos/minima em estocásticos e substituir a fórmula estocástica por sua relação
 
maxstah:

Olá, você poderia me dizer onde encontrar um indicador que refaz as barras diárias para que elas comecem em um horário diferente?

Por exemplo: O horário do terminal é 00:00. Nos parâmetros de entrada do indicador colocamos: +4. Agora os bares diários começam às 16:00.

Agradecemos antecipadamente.

O MT4 tem um conversor incorporado. Serviço -> Arquivo de cotações.
 

Olá.

Eu tenho uma pergunta como iniciante:

como obter os dados atuais de Lucro para as posições abertas; como obter os dados atuais de Saldo.

 
Roger:
Assim, o novo Pinóquio está procurando por um Campo de Maravilha confiável. Não seja ridículo).

Tipo, o esperto petrosiano quer fazer uma piada...))
 

Pessoal, onde está o erro.... que eu já contatei... aqui está o código...

Ao negociar em termenal com spread flutuante(mais um dígito adicionado) o assessor escreve um erro, lote errado ... e com spread fixo, tudo está bem e negocia ...

 GBPUSD,H1: OrderSend error 131

mas aqui está o próprio código.... onde está o erro????

 if(ExistPositions() > 0)   {
   for(cnt=0;cnt<OrdersTotal();cnt++)  { 
   OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC && OrderType()==OP_BUY)  {
         if(Ask-OrderOpenPrice() > (TrailingStop * Point))  { 
            if(OrderStopLoss() < (Ask - TrailingStop * Point)) { 
               OrderModify(OrderTicket(),
                           OrderOpenPrice(),
                           Ask - TrailingStop * Point,
                           Ask + sTakeProfit * Point,0,Aqua);
            return(0);  } // close for if(OrderStopLoss() < (Ask - TrailingStop * Point))
                        } // close for if(Ask-OrderOpenPrice() > (TrailingStop * Point))
                } // close for if(OrderSymbol()==Symbol() && OrderType()==OP_BUY)
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC && OrderType()==OP_SELL) {
                        if(OrderOpenPrice() - Bid > (TrailingStop * Point))   { 
                                if(OrderStopLoss() > (Bid + TrailingStop * Point))   { 
                           OrderModify(OrderTicket(),
                                       OrderOpenPrice(),
                                       Bid + TrailingStop * Point,
                                       Bid - sTakeProfit * Point,0,Magenta);
            return(0);  } 
                        } // close for if(OrderOpenPrice() - Bid > (TrailingStop * Point))
                 } // close for if(OrderSymbol()==Symbol() && OrderType()==OP_SELL)
          } // close for for(cnt=0;cnt<total;cnt++)
   } // close for if(TradesThisSymbol > 0)
}

bool ExistPositions() {
        for (int i=0; i<OrdersTotal(); i++) {
                if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
                        if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) {
                                return(True);
                        }
                } 
        } 
        return(false);
}



void OpenBuy() { 
   double ldLot, ldStop, ldTake; 
   string lsComm; 
   ldLot = GetSizeLot(); 
   ldStop = GetStopLossBuy(); 
   ldTake = GetTakeProfitBuy(); 
   lsComm = GetCommentForOrder(); 
   OrderSend(Symbol(),OP_BUY,ldLot,Ask,Slippage,ldStop,ldTake,lsComm,MAGIC,0,clOpenBuy); 
   if (UseSound) PlaySound(NameFileSound); 
} 
void OpenSell() { 
   double ldLot, ldStop, ldTake; 
   string lsComm; 

   ldLot = GetSizeLot(); 
   ldStop = GetStopLossSell(); 
   ldTake = GetTakeProfitSell(); 
   lsComm = GetCommentForOrder(); 
   OrderSend(Symbol(),OP_SELL,ldLot,Bid,Slippage,ldStop,ldTake,lsComm,MAGIC,0,clOpenSell); 
   if (UseSound) PlaySound(NameFileSound); 
} 
string GetCommentForOrder() {   return(Name_Expert); } 
double GetSizeLot() {   return(Lots); } 
double GetStopLossBuy() {       return (Bid-sStopLoss*Point);} 
double GetStopLossSell() {      return(Ask+sStopLoss*Point); } 
double GetTakeProfitSell() {    return(Bid-sTakeProfit*Point); } 
double GetTakeProfitBuy() {     return(Bid+sTakeProfit*Point); } 

return(0);

//+------------------------------------------------------------------+
 
Vovo4ka:

Tipo, o esperto petrosiano quer fazer uma piada...))

www.dukascopy.com mt4 e tecnologia java, o depósito mínimo é de 1000 greenbacks, eu mesmo descobri recentemente.
 
todem:

www.dukascopy.com mt4 e tecnologia java, no mínimo dept 1000 verde, me descobri recentemente.

Muito obrigado.
 
Se o indicador está em um loop infinito com sono, então você precisa inserir uma função como if(!deinit)?
 
Vovo4ka:

Gente onde o erro.... já está endereçado...aqui está o código...

ao negociar em térmicas com spread flutuante (mais um dígito adicionado) o assessor escreve um erro, lote errado.

mas aqui está o próprio código.... onde está o erro????


fazer a normalização do lote

double GetSizeLot() {   return(NormalizeDouble(Lots,2)); } 
Razão: