Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 589

 
Frostr:
L'ho già sventrato... C'è un istogramma, quindi se non riesci a trovare un modo per farlo con le barre, dovrai usarlo...
Preferite le barre ai candelieri? Domanda interessante, ma non voglio perdere tempo. Infatti, una barra è anche un istogramma con le etichette Open e Close attaccate ad essa
. Se non vi interessa il colore di queste etichette, potete usare questo metodo come in H.A. Basta calcolare la larghezza della barra in pixel (è possibile, ho controllato ma non ricordo dov'è nella Guida) e impostare la larghezza della barra, mentre Open e Close saranno del colore specificato nelle proprietà del grafico.
 

Perché il metodo virtuale Compare sovrascritto nella classe CListNode viene ignorato?

#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);
}
Controllato nel debugger, usa sempre Compare from CObject
 

Ciao, ho scritto un EA come questo. Perché riporta un segnale di vendita quasi ogni secondo?

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

//| Peresechenie TM.mq4 |

//| Popov Vladimir |

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

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

#proprietà copyright "Popov Vladimir"

#proprietà link "http://vk.com/id143715412"


doppio SellPrice;

doppio TakeProfit;

doppio StopLoss;


extern string TimeFrame = "time frame corrente";

extern int HalfLength = 20;

extern int Price = PRICE_CLOSE;

extern double ATRMultiplier = 2.0;

extern inttern ATRPeriod = 100;

extern bool Interpolate = true;



doppio PriceHigh, PriceLow, PriceMiddle;

doppio HighesBuffer[];

doppio LowesBuffer[];

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

//| funzione di inizializzazione dell'esperto |

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

int init()

{

se (cifre == 3 || cifre == 5)

{

TakeProfit *= 10;

StopLoss *= 10;

}

ritorno(0);

}

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

//| funzione di deinizializzazione esperto |

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

int deinit()

{





ritorno(0);

}

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

int start()

{

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);


se(Ask <= PriceLow)

{

Alert("Segnale di acquisto");

}

se(Bid >= PriceHigh)

{

Alert("Segnale di vendita");

}

ritorno(0);

}

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

 

Potete dirmi se è possibile salvare automaticamente il rapporto dopo il test?

Ho solo bisogno di fare un sacco di test in modalità automatica (ho intenzione di farlo attraverso l'ottimizzazione senza GA) e di salvare il rapporto completo (compresa l'immagine) su HDD.

 
tuner:

Potete dirmi se è possibile salvare automaticamente il rapporto dopo il test?

Ho solo bisogno di fare un sacco di test in modalità automatica (ho intenzione di farlo attraverso l'ottimizzazione senza GA) e di salvare il rapporto completo (compresa l'immagine) su HDD.


C'è la funzione TesterStatistics() eOnTester()

Dagli un'occhiata, può essere d'aiuto

 
Pr0t0tip:

Ciao, ho scritto un EA come questo. Perché riporta un segnale di vendita quasi ogni secondo?



Prova a sostituire

if(Ask <= PriceLow)

 {

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

 }

 if(Bid >= PriceHigh)

 {

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

 }

 return(0);

su

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:


C'è una funzione TesterStatistics() e OnTester()

Dagli un'occhiata, potrebbe aiutarti.


Grazie per il consiglio, ma non sembra aiutare, poiché è il rapporto stesso nella sua forma originale (htm) con un'immagine che è necessaria. Non sembra esserci una soluzione pronta. Proverò a fare uno script in autoit, che nel numero di volte specificato dal tester preme il pulsante "Start" e dopo ogni esecuzione va alla scheda "Report" e salva i risultati nel file
 

Per favore, aiutatemi con il seguente problema: a partire dalla build 625, i valori delle funzioni Alert (...), Print(...), Comment(...) non vengono visualizzati sul grafico dell'indicatore nel tester MT4; questi valori vengono visualizzati durante il lancio dell'indicatore per il trading reale o attraverso il debugger. Quindi, diventa impossibile monitorare i cambiamenti dei parametri sui dati storici usando almeno la funzione Print(...). Non ho avuto problemi con la build 610, poiché tutti i valori sono stati visualizzati nella scheda "Experts" del terminale.

Forse, il codice dovrebbe essere rielaborato in qualche altro modo simile a MQL5? Non so cosa fare, devo ancora usare la vecchia build...

 

Salve. Qualcuno ha già incontrato questo problema?

Ho diversi EA nella cartella, ma il terminale (MT 4, build 625) non li ha. E quelli che sono sul terminale non sono nella cartella. È un miracolo?



 
Ale-xander:

Salve. Qualcuno ha già incontrato questo problema?

Ho diversi EA nella cartella, ma il terminale (MT 4, build 625) non li ha. E quelli che sono sul terminale non sono nella cartella. È un miracolo?



Nessun miracolo.

File --> Apri cartella dati --> Nella finestra che si apre --> MQL4 --> ed è lì che si trovano le cartelle a cui sei abituato. Il link a questo articolo sulla pagina principale del forum. Sono solo troppo pigro per farlo.