Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 723

 
Igor Makanu:

non può.

usare iBars() per vedere la storia disponibile

HH: Se non mi sbaglio, nel tester, quando si avvia l'Expert Advisor sono disponibili 1000 barre, poi con la generazione di nuovi dati il numero di barre aumenterà. Il tester modella la storia di tutti i TF a cui è indirizzato, cioè, se si è eseguito il test su H1 e durante il test si è acceduto ai dati in TF M1, allora quando si avvia sarà disponibile per 1000 barre su H1, e quindi 60 * 1000 = 60.000 barre M1

devi leggere più articoli come questohttps://www.mql5.com/ru/articles/1511

Ho un'idea su come farlo.

Puoi far partire un EA e non fare trading per un mese.

e il mese successivo inizierà solo il trading.

La storia sarà accumulata e il coefficiente di varianza sarà calcolato prima del trading.


come ti piace il metodo?



Ma come faccio a registrare che "il primo mese non è stato scambiato"...

Farò dei test su diversi periodi.

Non voglio dover fissare la data a mano tutte le volte.

Non voglio continuare a correggere la data a mano.

 
multiplicator:

Ho capito come fare.

puoi far partire l'EA e non fare trading per un mese.

Questo è all'incirca ciò di cui hai bisogno per il tuo problema, ma ancora una volta, usa iBars() e saprai quanta storia è disponibile per l'EA nel tester

 

multiplicator:
счётчик, что ли включить, дней...

Igor Makanu:

ma ancora una volta usate iBars() e saprete quanta storia è disponibile per l'EA nel tester

esattamente!

quando iBars() diventa > 30.000 - calcola la varianza e poi permette all'EA di fare trading.

grazie a tutti quelli che hanno risposto.

 

Ciao! Aiuto per un trader principiante inesperto! Ho un EA ma non ha uno stop loss! Chi può aggiungere uno stop loss a un EA (e se possibile gratuitamente!)

 
Tem4ik:

Ciao! Aiuto per un trader principiante inesperto! Ho un EA ma non ha uno stop loss! Chi può aggiungere uno stop loss a un EA (e se possibile gratuitamente!)


Posta qui il codice (se non è decompilato) e forse qualcuno ti aiuterà.

 
#define  list "Cryptocurrency Market\\List.csv"

enum FILE_LOCATION
{
   LOCATE_TERMINAL = 0,
   LOCATE_COMMON = FILE_COMMON,
};

void GetLocalSource(FILE_LOCATION &dir)
{
   GetLocalList(FileOpenEx(list, FILE_WRITE|FILE_READ|FILE_CSV|dir));
}

int FileOpenEx(const string fname, int flags, int delimeter =';', uint codepage = CP_ACP)
{
   bool ex;
   if(flags > 4095)
      ex = FileIsExist(fname, FILE_COMMON);
   else
      ex = FileIsExist(fname);
   if(!ex) return -1;
   return FileOpen(fname, flags, delimeter, codepage);
}

bool GetLocalList(const int handle)
{
   if(handle == INVALID_HANDLE) {Print("Handle err: ", handle, " | ", GetLastError()); return false;}
...
}

Non riesco a trovare il file tramiteFileIsExist, la funzione non vuole vederlo. Ho già mischiato questo file sia nella directory generale che in quella del terminale - il risultato non è cambiato

2019.01.06 16:11:14.957 CoinMarketCap EURUSD,Daily: Handle err: -1 | 5020

La funzione che scrive List.csv lo apre tramite la stessa sostituzione della macro lista

Qual è l'errore?

 
Ilya Prozumentov:

Non riesco a trovare il file tramite FileIsExist, la funzione non vuole vederlo. Ho già mischiato questo file sia nella directory generale che in quella del terminale - il risultato non è cambiato

2019.01.06 16:11:14.957 CoinMarketCap EURUSD,Daily: Handle err: -1 | 5020

La funzione che scrive List.csv lo apre tramite la stessa sostituzione della macro lista

Qual è l'errore?

Prova questo#define list "Files\Cryptocurrency Market\List.csv"

Il file dovrebbe essere nella cartella Files

 
Vladimir Pastushak:

Prova questo#define list "Files\Cryptocurrency Market\List.csv"

Il file dovrebbe essere nella cartella Files

Non ha funzionato.


P.S Problema trovato, c'è uno spazio alla fine di un nome di file già esistente

 

Salve.

Potete dirmi come determinare la data (in formato data) dell'inizio della settimana e della fine della settimana? Ho bisogno che l'oscillatore si azzeri alla fine della settimana e inizi a contare da zero all'inizio della nuova settimana. Al momento so come impostarlo a zero per ogni giorno, ma non ho idea di come impostarlo a zero per ogni settimana. Questo è il modo in cui resetto ogni giorno.

void Calculate(int i)
  {
   double summ;
   datetime startTime  = StringToTime(TimeToString(Time[i],TIME_DATE)+" "+StartTime); // StartTime=00:10
   datetime endTime    = StringToTime(TimeToString(Time[i],TIME_DATE)+" "+EndTime);   // EndTime=23.50
   datetime currentTime= StringToTime(TimeToString(Time[i],TIME_DATE)+" "+TimeToString(Time[i],TIME_MINUTES));
//Print("Start = ",TimeToString(startTime,3));
//Print("End = ",TimeToString(endTime,3));
   if(CheckTimer(i,startTime,endTime,currentTime,0))
     {
      summ = MainBuffer[i+1];
      summ+= InfluenceBuffer[i];
      MainBuffer[i]=summ; 
     }
   else
     {
      summ=0.0;
      MainBuffer[i]=summ;
      }
  }

Grazie

 
Gerkl:

Potete per favore consigliarmi come determinare la data (in formato data) dell'inizio della settimana e della fine della settimana?

//1. для времени datetime t
if(TimeDayOfWeek(t))==1) // Понедельник
if(TimeDayOfWeek(t))==5) // Пятница

//2. для текущего времени
if(DayOfWeek() = 1) // Понедельник
if(DayOfWeek() = 5) // Пятница

Molto probabilmente avete bisogno della variante №1, quindi nell'indicatore nel ciclo di calcolo, dove cercate le barre, usate la seguente struttura:

if(TimeDayOfWeek(Time[i]))==1) // Понедельник
if(TimeDayOfWeek(Time[i]))==5) // Пятница
avete il tempo giusto in Time[i] dopo aver controllato la condizione