Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 239

 
Antonius:


¿Cuál es el problema? Funciona.

 
r772ra:


¿Cuál es el problema? Funciona.


El error realmente no estaba en el código, debería haber puesto "Todos los ticks" en lugar de "Por precios de apertura" como modelo de prueba. Es mucho tiempo para probar así, por supuesto.

Muchas gracias por la ayuda. Perdón por tomarme mi tiempo con semejante estupidez)

 
Antonius:


El error realmente no estaba en el código, debería haber puesto "Todos los ticks" en lugar de "Por precios de apertura" como modelo de prueba. Es mucho tiempo para probar así, por supuesto.

Muchas gracias por la ayuda. Perdón por tomarme mi tiempo con semejante estupidez)

Para comprobar los precios de apertura, sustituya el 0 por el 1 en las líneas para comprobar la dirección de la vela. Pero entonces mirará la primera barra para ver la dirección. Con 0, sólo tienes precios de apertura y cierre iguales.
 

Dime cómo enseñar al experto a extraer los datos correctamente:

Le pido que encuentre el valor del último precio. Lo encuentra, pero lo emite con cuatro decimales y redondea el quinto. El quinto carácter debe tenerse en cuenta para el correcto funcionamiento del robot.

También redondea un poco el precio medio. También redondea el precio medio al cuarto carácter.

Obtengo números diferentes con la calculadora.

NormalizeDouble() ha intentado aplicarse, pero aún no he obtenido ningún 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:

Dime cómo enseñar al experto a extraer los datos correctamente:

Le pido que encuentre el valor del último precio. Lo encuentra, pero lo emite con cuatro decimales y redondea el quinto. El quinto carácter debe tenerse en cuenta para el correcto funcionamiento del robot.

También redondea un poco el precio medio. También redondea elprecio medio al cuarto carácter.

Obtengo números diferentes con la calculadora.

NormalizeDouble() ha intentado aplicarse, pero aún no he obtenido ningún resultado.

¿Dónde ves todo esto?
 
artmedia70:
¿Dónde ves todo esto?


No se puede evitar el redondeo. Pero la cuestión de qué redondeo a partir del 5º o 4º dígito
en el código de abajo:

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


No se puede evitar el redondeo. Pero la cuestión es si hay que redondear a partir de la 5ª o 4ª cifra
en el código siguiente:

Lo intenté de esta manera

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

string DoubleToStr( valor doble, dígitos int)
Convierte un valor numérico en una cadena de texto, que contiene la representación de caracteres del número en el formato de precisión especificado.

 

Hola a todos, tengo esta tarea:

Determinar la aparición de una nueva barra (sintética), utilizando un mínimo de código y sin utilizar variables ligadas a la hora de apertura de la barra. La solución es la siguiente:

if (Bid>Open[0] || Bid<Open[0]) return;
¿Cuáles son las posibles dificultades al utilizarlo en el probador y en la demostración?
 
dmitriy086:

Hola a todos, tengo esta tarea:

Determinar la aparición de una nueva barra (sintética), utilizando un mínimo de código y sin utilizar variables ligadas a la hora de apertura de la barra. Lo resolví de la siguiente manera:

¿Cuáles son los posibles inconvenientes de su uso en el probador y en la demostración?


Cuando se negocia con sintéticos no se tiene una sola barra para este instrumento, sino un conjunto de instrumentos para cada uno de los cuales se puede tratar de identificar una nueva barra. Cuantos más instrumentos haya en el comercio, más probable será el error o el deslizamiento en el tiempo, porque el EA se cuelga de un par y ve otros ticks sólo cuando llega un tick para este instrumento.
Puedes usar variables globales, pero no ayuda mucho porque si rastreas un nuevo tick en otro par de divisas sin el robot, sigues sin poder operar porque no hay ningún tick en tu par. Si no tienes muchos instrumentos, lo más fácil es escribir un robot, teniendo en cuenta que estará presente en todas partes a la vez.

¿Alguien sabe si es posible no mostrar todos los valores de los búferes en una ventana de indicador separada? Es esa línea blanca en la esquina superior izquierda de la ventana del indicador, es molesto ver tantos dígitos innecesarios en los 8 buffers utilizados.

 
Desead:


¿Alguien sabe si es posible no mostrar todos los búferes en una ventana indicadora separada? Es la línea blanca que se escribe en la esquina superior izquierda de la ventana del indicador, es molesto ver tantos números innecesarios en los 8 buffers utilizados.


Inite SetIndexLabel(...,"), pero el buffer también desaparecerá de la ventana de datos.