[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 45

 
Stells:

Boa tarde.

Por favor, ajude-me a extrair valores de Up_Line e Down_Line do indicador ExTrendv2 (anexo) do Expert Advisor.

Estou tentando da seguinte maneira:

Para Up_Line iCustom(NULL, 0, "ExTrendv2", 0, 0,1)

para Down_Line iCustom(NULL, 0, "ExTrendv2", 0, 1,1)

falha.


Um EA com tal indicador não pendura o terminal?
 

Não parece desligar no testador.

Só que ainda não consigo extrair os valores, simplesmente não faz sentido.

 
Olá, estou tentando testar o Expert Advisor em um símbolo e 4 prazos ao mesmo tempo - tenho um pequeno problema - erro 129 - preço errado tanto para abrir como para fechar, o trade thread parece estar separado antes de enviar o orer e enquanto(IsTradeContextBusy() || !IsTradeAllowed()){int Interval = MathRand()+1000;
Print("Trade thread is busy. Repetir a verificação em "+DoubleToStr((Interval/1000),0)+" seg");
Sleep(Interval);} RefreshRates(); Alguém sabe o que é este material e como lidar com ele?
 
Stells:

Não parece desligar no testador.

Só que ainda não consigo extrair os valores, simplesmente não faz sentido.


Tente desta forma, não há parâmetros.

Up_Line iCustom(  NULL, 0, "ExTrendv2", 0,1);
Down_Line iCustom(NULL, 0, "ExTrendv2", 1,1);

Embora o indicador recalcule tudo a cada tique.

 
Dimoncheg:
Olá a todos, estou tentando testar o Expert Advisor em um símbolo e 4 prazos ao mesmo tempo - tenho um pequeno problema - erro 129 - preço errado tanto para abrir como para fechar, o trade thread parece estar separado antes de enviar o orer e depois de fechar enquanto(IsTradeContextBusy() || !IsTradeAllowed()){int Interval = MathRand()+1000;
Print("Trade thread is busy. Repetir a verificação em "+DoubleToStr((Interval/1000),0)+" seg");
Sleep(Interval);} RefreshRates(); Alguém sabe o que é este material e como lidar com ele?
ERR_INVALID_PRICE 129 Preço incorreto


Normalizar o preço aos Dígitos antes de enviar o pedido ao servidor

 
Vinin:


Tente desta forma, não há parâmetros

Embora o indicador faça um recálculo completo em cada tick.

Lamentei ter colocado isso na tabela. O terminal entrou em profunda reflexão, e depois de 15 minutos eu o matei
 
artmedia70:
ERR_INVALID_PRICE 129 Preço incorreto


Normalizar os preços para Dígitos antes de enviar o pedido ao servidor



Os preços são naturalmente normalizados por NormalizeDouble(Ask,Digits) e NormalizeDouble(Bid,Digits), para o envio de pedidos eu tentei também a função de Igor Kim, que está aqui - o mesmo erro ocorre, porque a função não a processa, ela apenas tenta enviar o pedido cinco vezes e pronto. O erro não ocorre a cada comando para enviar uma ordem, a maioria das ordens ainda estão abertas. Tenho a sensação de que este problema tem algo a ver com o fluxo comercial, pois em um determinado caso o erro ocorre quando a EA quer enviar várias ordens simultaneamente em diferentes intervalos de tempo de um símbolo e uma é geralmente enviada, enquanto o resto não obtém sucesso com este erro.
 
Dimoncheg:

Os preços são naturalmente normalizados por NormalizeDouble(Ask,Digits) e NormalizeDouble(Bid,Digits), para o envio de pedidos eu tentei também a função de Igor Kim, que está aqui - o mesmo erro ocorre, porque a função não a processa, ela apenas tenta enviar o pedido cinco vezes e pronto. O erro não ocorre a cada comando para enviar uma ordem, a maioria das ordens ainda estão abertas. Tenho a sensação de que este problema tem algo a ver com o fluxo comercial, pois em um determinado caso o erro ocorre quando a EA quer enviar várias ordens simultaneamente em diferentes períodos de tempo de um símbolo, mas uma ordem é geralmente enviada, mas as outras falham.

Imediatamente antes de usar o Ask and Bid, realize RefreshRates()
 
//-------------------------------------------------------------------+
extern int    TotalOrders    = 1;
//-------------------------------------------------------------------+
// Global variables
int Cnt = 0;              // counter variable, used in for() loops
    // only perform analysis and open new order if we have not reached our TotalOpenOrders max
    if(TotalOpenOrders() < TotalOrders)
    {
//+------------------------------------------------------------------+
//|-----------------------//  Orders Count  //-----------------------|
//+------------------------------------------------------------------+
// This function returns the total amount of orders the expert advisor has open  
int TotalOpenOrders()
{
  Cnt=OrdersTotal();
  int TotalOpenOrders = 0;
  if(Cnt==0)
  {
    return(0);
  }
    else
    {
    for(;Cnt>=0;Cnt--)
    {
      RefreshRates();
      OrderSelect(Cnt,SELECT_BY_POS);
      if(OrderMagicNumber()==Magic)
      {
      TotalOpenOrders++;
      }
    }
  }
  return(TotalOpenOrders);
}
 
artmedia70:
Lamentei ter colocado isso na tabela. O terminal entrou em profunda reflexão, depois de cerca de 15 minutos eu o matei.

Você não olha para o código antes de colocar algo para cima.
Razão: