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

 
GSB:

Non ho obiezioni sui principi, ma l'uomo vuole eseguire l'Expert Advisor nel tester, quindi le tue opzioni non gli vanno bene.

Usate la mia variante, funzionerà sia nella realtà che nel tester, ma finché non avranno fatto una funzione per tener conto automaticamente dell'ora legale, definite il tempo di transizione per quest'anno come

Da marzo 2013 a novembre 2014 funzionerà e sarà testato correttamente. Imposta il turno secondo il tuo broker


Non guarderò dove è scritto che il tempo è generato nel tester, lo sapete voi stessi. Ma nell'aiuto dice specificamente che

 var2=StrToTime("17:35");      // возврат текущей даты с указанным временем

Mentre non dice nulla di specifico su StringToTime().

L'unica cosa da prendere in considerazione è il tempo sul tester (del server DC). E di conseguenza quando si fa il test si dovrebbe avere una storia dello stesso tipo di account su cui questo gufo funzionerà.

 
AlexeyVik:


Non cercherò dove si dice che il tempo viene generato nel tester, lo sapete da soli. Ma nell'aiuto dice specificamente che

Mentre non dice nulla di specifico su StringToTime().

L'unica cosa da prendere in considerazione è il tempo sul tester (del server DC). E così, quando si fanno i test, è necessario avere una storia dello stesso tipo di account su cui questo gufo funzionerà.


Alexey, non ho nessuna domanda sulla funzione StrToTime() La domanda è diversa. Tornerà l'ora giusta, ma 21 ore di oggi sono 22 ore prima del 9 marzo. Ecco perché ho scritto delle funzioni che tengono conto correttamente del DST del broker.

Senza di esso, se un Expert Advisor funziona secondo un certo orario è impossibile da testare. Tutto è spostato di un'ora. Non ci sono problemi nel trading reale ma ci sono problemi con il tester. È da molto tempo che chiedo agli sviluppatori di abilitare la funzione che calcola i turni di tempo. Hanno implementato TimeGMT(), ma è legato all'ora locale e al fuso orario del computer. E devi avere un turno di frenata. E il loro DST è diverso dal nostro. I broker spostano la prima domenica di novembre la seconda domenica di marzo e la Russia (se sarà...) l'ultima domenica di ottobre l'ultima domenica di marzo. Quindi dovete scrivere le vostre funzioni per ora.

 
GSB:

Non ho obiezioni sui principi, ma l'uomo vuole eseguire l'Expert Advisor nel tester, quindi le tue opzioni non gli vanno bene.

Utilizzare la mia variante, funzionerà sia in reale che in tester, ma fino a quando non hanno fatto una funzione per prendere automaticamente in considerazione l'ora legale, determinare il tempo di transizione a questo anno come

Da marzo 2013 a novembre 2014 funzionano e testano correttamente. Imposta il turno secondo il tuo broker

Ok, grazie, vi farò sapere il risultato.
 

È necessario controllare sui grafici < h4 il tempo dell'ultima barra del venerdì corrente e il venerdì prima dell'8 marzo. Se questi tempi coincidono, il valore di hrd è costante e non dipende dal cambio di orario inverno-estate e allora tutto è semplice e funzionerà correttamente durante i test indipendentemente dal cambio di orario inverno-estate

datetime tc=TimeCurrent();
datetime te=StrToTime("20:45");                    //   время конца сессии по котировкам брокера минус 15 минут или сколько вам надо до конца сессии
if(TimeDayOfWeek(tc)==5 && tc>te) {  CloseAll(); } //    закрытие пятницу позже указанного времени 

ma se questi due tempi sono diversi (differiscono di 1 ora) allora come ho scritto prima.

 
GSB:

Dovremmo controllare sul grafico M1 il tempo dell'ultima barra del venerdì corrente e del venerdì precedente all'8 marzo. Se questi tempi coincidono, allora il valore di hrd è costante e non dipende dal passaggio all'orario invernale-estivo, e allora tutto è semplice e funzionerà correttamente durante i test indipendentemente dalla transizione inverno-estate

ma se questi due tempi sono diversi (differiscono di 1 ora) allora come ho scritto prima.


Perché c'è un tempo di 15 minuti nel codice, cioè vuoi dire che 15 minuti prima della fine della sessione i portafogli iniziano a spostarsi? Ho certamente notato tali momenti su mt4 a fresch e ho visto buoni livelli su alcune coppie di valute.
 

Per esempio, voglio chiudere i trade anche 1 minuto prima della fine della sessione, perché quando un ordine viene lasciato per il fine settimana, succede che il lunedì il prezzo di apertura può saltare di 100, o 200, o anche più pip.

Non l'ho ancora testato, lo farò più tardi.

 
Se il broker è in Russia e io sono in Ucraina, allora non c'è l'ora legale o il cambio dell'ora invernale, allora non c'è neanche il cambio dell'ora del server per me, solo l'ora locale?
 
GSB:

Beh, questo non dovrebbe funzionare nel tester.

Le funzioni sono basate sul tempo corrente, e quello che ho scritto sopra funzionerà perché TimeCurrent() e TimeDayOfWeek() funzionano correttamente. Dovete solo aggiungere la funzione per passare all'ora legale e invernale, cioè il parametro hrd. La commutazione di solito avviene secondo l'orario americano DST (prima domenica di novembre seconda domenica di marzo), ma alcuni broker non fanno la commutazione, quindi dovreste usare il vostro


Senza entrare nel merito delle ipotesi, ho semplicemente eseguito l'Expert Advisor nello Strategy Tester e l'ho guardato. Funziona e si chiude.

 
belck:
Se il mio broker è in Russia e io sono in Ucraina, allora non c'è l'ora legale o il cambio dell'ora invernale, allora risulta che non c'è il cambio dell'ora legale al mio broker, ma solo l'ora locale?

Non c'è bisogno di confrontare l'ora del broker e la tua ora locale. Non importa quanto tu muova l'orologio, l'ora di fine della sessione del broker sul grafico non cambierà. La domanda riguardava il passaggio alle quotazioni estive dei broker l'8-9 marzo, e alcuni broker lo fanno, altri no.

Ho scritto - guardate i grafici delle ultime barre prima e dopo il 9 marzo, se sono uguali allora usate l'ultima opzione semplice, se differiscono di un'ora allora quella più complessa.

 

Ragazzi, tanto di cappello :) Sia DayOfWeek() TimeDayOfWeek(datetimedate) che formule simili funzionano correttamente nel tester. Tester modella il tempo del tick che elabora, ecco perché in DayOfWeek() che prende l'ultima ora conosciuta del server funziona anche. Più correttamente, naturalmente, usate TimeDayOfWeek(dt1)

In generale tutto è corretto, l'unica cosa che rimane è prendere in considerazione il tempo di transizione del broker all'orario invernale-estivo, se c'è, come ho scritto sopra.

Motivazione: