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

 
Antonius:


Qual é o problema, ele funciona.

 
r772ra:


Qual é o problema, ele funciona.


O erro realmente não estava no código, eu deveria ter colocado apenas "All ticks" em vez de "By opening prices" como o modelo de teste. É um longo tempo para testar assim, é claro.

Mais obrigado pela ajuda! Desculpe por tomar meu tempo com tamanha estupidez)

 
Antonius:


O erro realmente não estava no código, eu deveria ter colocado apenas "Todos os carrapatos" em vez de "Abrindo preços" como modelo de teste. É um longo tempo para testar, é claro.

Mais obrigado pela ajuda! Desculpe por tomar meu tempo com tamanha estupidez)

Para testar os preços de abertura, substitua 0 por 1 nas linhas para verificar a direção das velas. Mas então ele olhará para a primeira barra para ver a direção. Com 0, você tem apenas os mesmos preços de abertura e fechamento.
 

Diga-me como ensinar ao especialista como extrair os dados corretamente:

Eu lhe peço que encontre o valor do último preço. Ele o encontra, mas o produz com quatro casas decimais, e arredonda a quinta. O quinto personagem deve ser levado em conta para a correta operação do robô.

Ele também arredonda um pouco o preço médio. Ele também arredonda o preço médio para o quarto personagem.

Eu recebo números diferentes com a calculadora.

NormalizeDouble() tentou aplicar, mas ainda não obtive nenhum resultado.

int Oldticketnumber;
double Unused = 0;
int Ticketnumber = 0;
RefreshRates();
for(int cnt = OrdersTotal()-1; cnt >= 0; cnt --)               //Для всехоткрытых ордеров
 {
  if (OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES))  // Выбираем со всего масива ордеров
  if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)//Выбирам ордера експерта
   {
   if(OrderType()==OP_BUY)                                              
    {

     BuyAP += OrderOpenPrice()*OrderLots();          // Средневзвешаная цена всех позиций  
  
     Oldticketnumber = OrderTicket();                               // присваиваем тикеты
     if (Oldticketnumber > Ticketnumber)                         //  ищем последний тикет 
      {
      LastPrise = OrderOpenPrice();                         // присваиваем последнюю цену
      Unused = LastPrise;                                       // задаем цену переменной
      Ticketnumber = Oldticketnumber;                          // последный заданый тикет
      }
// далее по  тексту---------------------------------------------------------------------

if (BuyLots != 0)       // Если есть ордера BUY, то вычисляется их средняя цена открытия
    BuyAP /= BuyLots;      

 
Limita:

Diga-me como ensinar ao especialista como extrair os dados corretamente:

Eu lhe peço que encontre o valor do último preço. Ele o encontra, mas o produz com quatro casas decimais, e arredonda a quinta. O quinto personagem deve ser levado em conta para a correta operação do robô.

Ele também arredonda um pouco o preço médio. Ele também arredonda opreço médio para o quarto personagem.

Eu recebo números diferentes com a calculadora.

NormalizeDouble() tentou aplicar, mas ainda não obtive nenhum resultado.

Onde você vê tudo isso?
 
artmedia70:
Onde você vê tudo isso?


Não há como fugir do arredondamento. Mas a questão de qual arredondamento a partir do 5º ou 4º dígito
no código abaixo:

Comment("Средняя цена Buy ",BuyAP, " Sell ",SellAP, " Последняя цена " ,LastPrise);
                                                                              // принтуем
 
Limita:


Não há como fugir do arredondamento. Mas a questão é se devemos arredondar a partir do 5º ou 4º dígito
no código abaixo:

Eu tentei desta maneira

Comment("Средняя цена Buy ",DoubleToStr(BuyAP,5), " Sell ",DoubleToStr(SellAP,5), " Последняя цена " ,DoubleToStr(LastPrise,5));

string DoubleToStr( valor duplo, dígitos int)
Converte um valor numérico em uma cadeia de texto, contendo a representação de caracteres de número no formato de precisão especificado.

 

Olá a todos, eu tenho esta tarefa:

Determinar a aparência de uma nova barra (sintética), usando um mínimo de código e não usando variáveis vinculadas ao tempo de abertura da barra. A solução é a seguinte:

if (Bid>Open[0] || Bid<Open[0]) return;
Quais são as possíveis armadilhas ao usar no testador e na demonstração?
 
dmitriy086:

Olá a todos, eu tenho esta tarefa:

Determinar a aparência de uma nova barra (sintética), usando um mínimo de código e não usando variáveis vinculadas ao tempo de abertura da barra. Resolvi isso da seguinte maneira:

Quais são as possíveis armadilhas de utilizá-lo no testador e na demonstração?


Ao comercializar sintéticos você não tem uma única barra para este instrumento, mas um conjunto de instrumentos para cada um dos quais você pode tentar identificar uma nova barra. Quanto mais instrumentos no comércio, mais provável é o erro ou deslizamento no tempo, pois o EA pendura em um par e só vê outros carrapatos quando chega um carrapato para este instrumento.
Você pode usar variáveis globais, mas isso não ajuda muito porque se você rastrear um novo tick em outro par de moedas sem o robô, você ainda não pode negociar porque não há tick em seu par. Se você não tem muitos instrumentos, a maneira mais fácil é escrever um robô, levando em conta que ele estará presente em todos os lugares ao mesmo tempo.

Alguém sabe se é possível não exibir todos os valores dos amortecedores em uma janela indicadora separada? É aquela linha branca no canto superior esquerdo da janela indicadora, é irritante ver tantos dígitos desnecessários nos 8 tampões utilizados.

 
Desead:


Alguém sabe se é possível não exibir todos os amortecedores em uma janela indicadora separada? Esta é a linha branca que está escrita no canto superior esquerdo da janela indicadora, é irritante ver tantos números desnecessários quando são usados 8 buffers.


Inite SetIndexLabel(...,"), mas o buffer também irá desaparecer da janela de dados.
Razão: