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

 
Frostr:
Ya lo he destripado... Hay un histograma, así que si no encuentras la manera de hacerlo con barras, tendrás que usarlo...
¿Prefiere las barras a los candelabros? Es una pregunta interesante, pero no quiero perder el tiempo con ella. De hecho, una barra es también un histograma con etiquetas de Apertura y Cierre adjuntas a ella
. Si no le importan los colores de estas etiquetas, puede utilizar este método como en H.A. Simplemente calcule el ancho de la barra en píxeles (es posible, lo he comprobado pero no recuerdo dónde está en la Ayuda) y establezca el ancho de la barra, mientras que Apertura y Cierre serán del color especificado en las propiedades del gráfico.
 

¿Por qué se ignora el método virtual Compare en la clase CListNode?

#include <Arrays\List.mqh>
#define  SIZE 10

class CData : public CObject
  {
public:
   int m_data;
  };

class CListNode : public CList
  {
public:
   virtual int Compare(const CObject *node,const int mode=0) const {
      int _test=1;
      return(_test);
   }
  };

int OnInit() {
        CListNode *node=new CListNode;
        if(CheckPointer(node)==POINTER_INVALID) {
           Print("Не могу создать объект");
           return(INIT_FAILED);
        }
        else Print("Объект создан, работаем дальше");

        MathSrand(GetTickCount());
        for(int i=0;i<SIZE;i++) {
           CData *data=new CData;
           if(data==NULL) {
              Print("Нет возможности получить указатель");delete node;return(INIT_FAILED);
           }
           printf("Узел %i, данные узла %i",i,data.m_data=MathRand());
           node.Add(data);
        }
        
        node.Sort(0);
        int _total=node.Total();
        for(int i=0;i<_total;i++) {
           CData *data=node.GetNodeAtIndex(i);
           if(data==NULL) {
              Print("Нет возможности получить указатель");delete node;return(INIT_FAILED);
           }
           printf("Узел %i, данные узла %i",i,data.m_data);
        }

        if(CheckPointer(node)==POINTER_DYNAMIC) {Alert("Удаляем объект");delete node;}
        else Alert("Non-dynamic object");
   return(INIT_SUCCEEDED);
}
Comprobado en el depurador, siempre utiliza Compare from CObject
 

Hola, escribí un EA como este. ¿Por qué informa de una señal de venta casi cada segundo?

//+------------------------------------------------------------------+

//| Peresechenie TM.mq4 ||

//| Popov Vladimir...

//| http://vk.com/id143715412 |

//+------------------------------------------------------------------+

#property copyright "Popov Vladimir"

#enlace de propiedad "http://vk.com/id143715412"


doble Precio de venta;

doble TakeProfit;

doble StopLoss;


cadena externa TimeFrame = "marco temporal actual";

extern int MediaLongitud = 20;

extern int Precio = PRICE_CLOSE;

extern double ATRMultiplier = 2.0;

extern inttern ATRPeriod = 100;

extern bool Interpolar = true;



doble PrecioAlto, PrecioBajo, PrecioMedio;

doble HighesBuffer[];

doble LowesBuffer[];

//+------------------------------------------------------------------+

//| función de inicialización de expertos |

//+------------------------------------------------------------------+

int init()

{

si (Dígitos == 3 || Dígitos = 5)

{

TakeProfit *= 10;

StopLoss *= 10;

}

return(0);

}

//+------------------------------------------------------------------+

//| función de desinicialización experta |

//+------------------------------------------------------------------+

int deinit()

{





return(0);

}

//+------------------------------------------------------------------+

int inicio()

{

PriceHigh = iCustom (Symbol (), 0, "Time", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);

PriceLow = iCustom (Symbol (), 0, "Time", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);

PriceMiddle = iCustom (Symbol (), 0, "Time", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 0, 0);


if(Ask <= PriceLow)

{

Alerta("Señal de compra");

}

if(Oferta >= PrecioAlto)

{

Alerta("Señal de venta");

}

return(0);

}

//+------------------------------------------------------------------+

 

¿Pueden decirme si es posible guardar automáticamente el informe después de las pruebas?

Sólo necesito hacer muchas pruebas en modo automático (pienso hacerlo a través de la optimización sin GA) y guardar el informe completo (incluyendo la imagen) en el disco duro.

 
tuner:

¿Pueden decirme si es posible guardar automáticamente el informe después de las pruebas?

Sólo necesito hacer muchas pruebas en modo automático (pienso hacerlo a través de la optimización sin GA) y guardar el informe completo (incluyendo la imagen) en el disco duro.


Existe la función TesterStatistics() yOnTester()

Échales un vistazo, puede que te ayude

 
Pr0t0tip:

Hola, escribí un EA como este. ¿Por qué informa de una señal de venta casi cada segundo?



Intenta sustituir

if(Ask <= PriceLow)

 {

 Alert("Сигнал к покупке");

 }

 if(Bid >= PriceHigh)

 {

 Alert("Сигнал к продаже");

 }

 return(0);

en

int static flag=0;
if(Ask <= PriceLow && flag<1)

 {

 Alert("Сигнал к покупке");
flag=1;
 }

 else if(Bid >= PriceHigh && flag>-1)

 {

 Alert("Сигнал к продаже");
flag=-1;
 }
else flag=0;

 return(0);
 
Vinin:


Hay una función TesterStatistics() y OnTester()

Échales un vistazo, puede que te ayude.


Gracias por el consejo, pero no parece que sirva de nada ya que lo que se necesita es el propio informe en su forma original (htm) con una imagen. Parece que no hay una solución preparada. Voy a intentar hacer un script en autoit, que en el probador especificado número de veces presiona el botón "Inicio" y después de cada ejecución va a la pestaña "Informe" y guarda los resultados en el archivo
 

Hola, por favor ayúdenme con el siguiente problema: a partir de la versión 625, los valores de las funciones Alert (...), Print(...), Comment(...) no se muestran en el gráfico del indicador en el probador de MT4; estos valores se muestran durante el lanzamiento del indicador para el comercio real o a través del depurador. Por lo tanto, resulta imposible controlar los cambios de parámetros en los datos históricos utilizando la función Print(...) al menos. No tuve problemas con la compilación 610, ya que todos los valores se mostraron en la pestaña "Expertos" del terminal.

¿Tal vez, el código debe ser reelaborado de alguna otra manera similar a MQL5? No sé qué hacer, todavía tengo que usar la vieja construcción...

 

Hola. ¿Alguien se ha encontrado ya con este problema?

Tengo varios EAs en la carpeta, pero el terminal (MT 4, build 625) no los tiene. Y los que están en el terminal no están en la carpeta. ¿Es un milagro?



 
Ale-xander:

Hola. ¿Alguien se ha encontrado ya con este problema?

Tengo varios EAs en la carpeta, pero el terminal (MT 4, build 625) no los tiene. Y los que están en el terminal no están en la carpeta. ¿Es un milagro?



No hay milagros.

Archivo --> Abrir Carpeta de Datos --> En la ventana que se abre --> MQL4 --> y ahí encuentras las carpetas a las que estás acostumbrado. El enlace a este artículo en la página principal del foro. Me da pereza hacerlo.