Problemi con Time() - pagina 2

 

Anche questo non funziona ...

Day() == 1 || Day() == 2 || Day() == 3 || Day() == 4 

RaptorUK ti risponde già lassù facendo riferimento a TimeDayOfWeek(). La differenza tra Day(), TimeDayOfWeek() e DayOfWeek() sono (leggere attentamente)

int Day() = Restituisce il giorno corrente del mese, cioè il giorno del mese dell'ultima ora conosciuta del server.

int DayOfWeek() = Restituiscel'attuale giorno della settimana su base zero (0-Domenica,1,2,3,4,5,6) dell'ultimo orario noto del server.

int TimeDayOfWeek(datetime Time) = Restituisce il giorno della settimana su base zero (0 significa domenica,1,2,3,4,5,6) per la data specificata.


Quindi Day() = 1 potrebbe essere qualsiasi giorno da lunedì a domenica.

BTW, oggi è il 31 maggio, la funzione Day() restituirà 31 (data) mentre DayOfWeek() restituirà 4 (giovedì).

Domani è il 1° giugno, la funzione Day() restituirà 1 (Data), e la funzione DayOfWeek() restituirà 5 (venerdì).

Usate questo come script:

Alert ("TimeDay of local time ",TimeDayOfWeek(TimeLocal())," and TimeDay of server time ",TimeDayOfWeek(TimeCurrent()));
Alert ("Day () is ",Day()," and DayOfWeek is ", DayOfWeek ());
 
toCFx:

LOL!

Sto iniziando a pensare che la maggior parte delle funzioni basate sul "Tempo" in MT4 sono seriamente difettose.

Voglio dire, se resetto tutta la mia logica di controllo della posizione a qualcosa di banale come: TimeHour(TimeCurrent()) == 23 && TimeHour(TimeCurrent()) == 59, e non sono in grado di chiudere un solo trade (l'EA semplicemente ignora il codice!), allora direi che MT4 ha alcuni problemi che devono essere corretti riguardo a questo tipo di funzioni.

LOL non pensi che se le funzioni basate sul tempo di MQL4 hanno questi gravi difetti qualcun altro probabilmente se ne sarebbe già accorto?

Forse potresti provare a correggere il tuo codice difettoso prima di affermare che le funzioni sono difettose

nel tuo criterio di chiusura prova a cambiare:

TimeHour(TimeCurrent()) == 23 && TimeHour(TimeCurrent()) == 59

a:

if(TimeHour(TimeCurrent()) == 23 && TimeMinute(TimeCurrent()) == 59)

toCFx:

Il codice non può essere più semplice! Sto istruendo l'EA ad aprire il maledetto trade tra le 00:00 e le 00:05. Non è una cosa difficile da codificare. Un bambino di sei anni potrebbe codificarlo. Eccolo ancora una volta: [b]TimeHour(TimeCurrent()) == 00 && TimeHour(TimeCurrent()) <= 05[/b].

Inoltre potresti provare a correggere anche questo lol

cambiare:

TimeHour(TimeCurrent()) == 00 && TimeHour(TimeCurrent()) <= 05

a:

if(TimeHour(TimeCurrent()) == 0 && TimeMinute(TimeCurrent()) <= 5)

 

Caro CFx,

Le mie scuse se ho sproloquiato. Ho una brutta giornata. Penso che abbiamo un altro forumer che potrebbe dover reinstallare il suo PC perché non legge bene le mie risposte.

1. Se volete chiudere i trade tra lunedì e giovedì, tutti alle 23:57, e il venerdì alle 21:57

   if (
       (DayOfWeek () >= 1 && DayOfWeek() <= 4 && TimeHour(TimeCurrent()) >= 23 && TimeMinute(TimeCurrent()) >= 57)
       || (DayOfWeek() == 5                   && TimeHour(TimeCurrent()) >= 21 && TimeMinute(TimeCurrent()) >= 57)
      )
      {
      // close it
      }

E puoi modificare lo stesso codice per Open Trade.

Leggi questo su come testare https://www.mql5.com/en/articles/1512


2. Questo è importante: hai parlato di "strumenti". Se sei così gentile da elaborare cosa intendi per "strumenti" - va bene menzionare il suo nome qui. Noi usiamo solo MetaEditor. Ci sono molti forumer qui che usano alcuni strumenti online là fuori e ci hanno fatto correggere gli errori. Devi dirci di cosa si tratta, perché il tuo codice potrebbe essere pieno di errori - per esempio la tua logica è corretta ma usi un tipo sbagliato di funzioni mql4.

... who uses a tool for helping me build EAs. That tool allows the use of some MQL structure, but it does not execute on explicit MQL functions. It simply takes MQL code, evaluates whether the MQL based condition is true/false, and then executes a custom function such as OpenBuy, OpenSell, CloseBuy, CloseSell, DeletePendingBuy, DeletePendingSell, etc. But, it does not run MQL code explicitly. For example, you can(not) use the Print or Comment function to get something to appear on the chart window of MT4 (just one example).


3. Mi sembra che ti piaccia molto scrivere pagine lunghe, non c'è niente che io possa fare per questo, tranne, per favore, tenerlo a mente:

Questo è il mio primo post. Per prima cosa, vi prego di notare(e) che non sono uno sviluppatore MQL.

così non avrai qualche imbarazzo, specialmente dopo che hai detto ...

Non sono uno sviluppatore MQL, ma sono molto bravo a sviluppare costrutti logici e so individuare un problema sistemico quando lo percepisco.

Siamo sempre qui per aiutare, anche leggendo i tuoi lunghi saggi.

Ecco il tuo - molto lungo - primo post.

Ciao Comunità MQL4!

Questo è il mio primo post. Per prima cosa, vi prego di non dire che non sono uno sviluppatore di MQL. Sono un trader, che usa uno strumento che mi aiuta a costruire EAs. Questo strumento permette l'uso di alcune strutture MQL, ma non esegue funzioni MQL esplicite. Prende semplicemente il codice MQL, valuta se la condizione basata su MQL è vera/falso, e poi esegue una funzione personalizzata come OpenBuy, OpenSell, CloseBuy, CloseSell, DeletePendingBuy, DeletePendingSell, ecc. Ma non esegue esplicitamente il codice MQL. Ad esempio, è possibile utilizzare la funzione Print o Comment per far apparire qualcosa sulla finestra del grafico di MT4 (solo un esempio).

Quindi, conosco un po' di MQL, che è appena sufficiente per permettermi di utilizzare lo strumento di sviluppo EA che uso per costruire i miei EA. Finora, ho costruito 10 EA utilizzando lo strumento e ho abbandonato 7 di loro a causa della non profittabilità, che è circa il 30% meglio del mio rapporto di prototipi di successo che ero solito ottenere con la costruzione di sistemi di trading in Excel. In genere mi aspetto che 7-8 idee su 10 non saranno così redditizie come previsto, lasciando 2-3 progetti abbastanza redditizi per iniziare il processo di ottimizzazione. Ok, basta parlare di me e di come mi muovo.

Ecco il mio problema e spero di essere venuto nel posto giusto per un aiuto!

Sto eseguendo questo codice [b]per chiudere i trade:[/b]

Day() == 1 || Day() == 2 || Day() == 3 || Day() == 4 && TimeHour(TimeCurrent()) >=23 && TimeMinute(TimeCurrent()) >=57 || Day() == 5 && TimeHour(TimeCurrent()) >=21 && TimeMinute(TimeCurrent()) >=57

Nota: Il problema è che tutte le compravendite rimangono aperte dal lunedì al giovedì, fino alle 23:57. Inoltre, tutte le compravendite rimangono aperte il venerdì fino alle 21:57.


Sto anche eseguendo questo codice attraverso un blocco MQL [b]per aprire le compravendite:[/b]

TimeHour(TimeCurrent()) == 00 && TimeMinute(TimeCurrent()) <= 05

Nota: L'unica compravendita che si apre tra 00:00 e 00:05, è la primissima compravendita del back-test, quando si clicca sul pulsante Tester Start. Quella compravendita si apre esattamente alle 00:00. Tuttavia, nessuno degli altri trade si apre tra le 00:00 e le 00:05, più avanti nella settimana.

In sintesi:

- Una compravendita si apre dopo aver cliccato sul pulsante Tester Start alle 00:00.
- Nessuna compravendita viene poi chiusa alle 23:57 (M-Gio), o alle 21:57 (Ven).
- Nessuna compravendita è mai aperta successivamente tra le 00:00 e le 00:05.

Tutti gli orari mostrati sopra hanno un ampio flusso di tick disponibile. Quindi, non ci sono lacune nei dati utilizzati da Tester.

Qualsiasi aiuto sarebbe apprezzato. Perché queste compravendite non riescono a chiudersi all'ora codificata? Perché non vengono eseguite compravendite quando c'è sempre un segnale di compravendita disponibile tra le 00:00 e le 00:05, dal lunedì al venerdì?

Grazie!
cfx

 
   if( DayOfWeek()<1 || DayOfWeek()>5 || TimeMinute(TimeCurrent()) < 57 )
      return(0);
   else if( TimeHour(TimeCurrent()) >= 23  || ( DayOfWeek() == 5 && TimeHour(TimeCurrent()) >= 21) ){
     //Close
   }
 
CFx:

Non ho usato dichiarazioni di stampa per questo scopo.

Perché no? Aprite il vostro codice in MetaEditor, aggiungete alcune funzioni di stampa per dirvi cosa sta succedendo . . .

MT4 non ha un debugger quindi uno degli unici strumenti a nostra disposizione è Print . . . un altro è Comment . . e questo è tutto.

 
RaptorUK:

Perché no? Aprite il vostro codice in MetaEditor, aggiungete alcune funzioni di stampa per dirvi cosa sta succedendo . . .

MT4 non ha un debugger, quindi uno degli unici strumenti a nostra disposizione è Print ... un altro è Comment . . e questo è tutto.


Io uso spesso Alert() anche per questo scopo
 

Gli strumenti. Parlaci degli strumenti, non essere imbarazzante, ho imparato da RaptorUK, dabbler, e dai commenti di SDC l'altro giorno. Quindi, per favore, diteci .

:D

 
SDC:

Anche io uso spesso Alert() per questo scopo
Non lo faccio . . . ecco perché l'ho dimenticato . . . grazie per la correzione :-)
 
onewithzachy:

LOL. Sei tu che sei irreale. Questo vostro codice ...

... non tornerà mai vero.

Sei tu che devi sviluppare ulteriormente il "tuo" costrutto logico.

E costruire questo ...


Forse dovresti provare a leggere l'OP. Ti dice chiaramente che non sono uno sviluppatore di MQL. Inoltre, c'è un'enorme (enorme) distinzione tra essere in grado di costruire logicamente un linguaggio di programmazione ed essere in grado di costruire logicamente un sistema di trading costantemente redditizio. Sfortunatamente, in questo settore, si trovano un sacco di programmatori online che non hanno una sola idea di ciò che serve per ricercare, progettare, architettare, costruire, ingegnerizzare, integrare e implementare un sistema di trading intelligente che funzioni effettivamente in qualsiasi condizione di mercato (toro, orso e transizione). Quindi, capisco la tua incapacità di capire da dove vengo. Ho costruito quel sistema di trading intelligente e l'ho fatto con Excel (tra tutte le cose).

È stato redditizio a tempo pieno per gli ultimi 3,27 anni in modo costante, mentre ha prodotto risultati di gran lunga migliori della media negli ultimi 7 anni su base part-time, mentre era ancora in fase di progettazione, costruzione e ottimizzazione - un sistema di trading completamente integrato, di supporto alle decisioni, progettato con input da un quadro di indicatori personalizzati al 100%. Non ci sono indicatori standard vecchi di oltre 50 anni nel mio sistema, poiché ogni indicatore in uso in tutto il sistema proviene da un nuovo design e concetto di indicatore che ho creato da zero attraverso anni di ricerca e test. L'unica cosa che mi resta da fare è scrivere un libro su questo.

Quindi, in termini di progettazione di sistemi di trading che funzionano, direi che probabilmente non hai visto gente come me su questo forum da un po' di tempo - se mai l'hai vista. Chi conosci che ha creato una nuova classe di progettazione di indicatori? Non sto parlando di prendere un indicatore esistente, modificarlo e dargli un nuovo nome - questo si chiama far progredire l'attuale generazione di indicatori. Sto parlando di un nuovo concetto di indicatore basato su una teoria del mercato che non è stata discussa in pubblico su larga scala? Si chiamano [b]Delta Differential Class Indicators[/b] e non si basano sulle teorie di mercato tradizionali di qualsiasi cosa abbiate mai visto prima, ve lo assicuro.

Il mio interesse in MQL è quello di scoprire se gli indicatori di classe D2 hanno valore nei time-frame più bassi, dato che il sistema prototipo da cui provengono utilizza solo dati giornalieri, settimanali, mensili e annuali, per produrre un singolo (1) segnale di trading ogni 24 ore, che è stato tra il 91% e il 99% preciso su un obiettivo specifico negli ultimi 3,27 anni. Questo significa circa 850+ segnali di trading tra il 91-99% di accuratezza del target, in un range di target tra 17 e 67 pips per 24 ore (mediana di base).

L'attuale prototipo NON è automatizzato ed è troppo complesso da gestire per MQL. OOP, sarebbe l'ambiente ottimale per esso, ma sono stato troppo occupato con altre cose che mi sono concesse, per sedermi abbastanza a lungo per imparare C, o C++.

Questo test, è un POC per scoprire se una manciata di miei indicatori può funzionare bene al di sotto della barra giornaliera. Se riesco a trovare una giustificazione tecnica per automatizzare i time frame inferiori utilizzando i miei progetti, allora posso giustificare il tempo che avrei bisogno di spendere per imparare OOP, e trasformare il prototipo in un'applicazione proprietaria stand-alone per Windows Trading (non in vendita in nessun caso).

I commercianti commerciano. I programmatori programmano. Io NON sono un programmatore............ ancora.

 
onewithzachy:

Anche questo non funziona ...

RaptorUK ti risponde già lassù facendo riferimento a TimeDayOfWeek(). La differenza tra Day(), TimeDayOfWeek() e DayOfWeek() sono (leggere attentamente)

int Day() = Restituisce il giorno corrente del mese, cioè il giorno del mese dell'ultima ora conosciuta del server.

int DayOfWeek() = Restituiscel'attuale giorno della settimana su base zero (0-Domenica,1,2,3,4,5,6) dell'ultimo orario noto del server.

int TimeDayOfWeek(datetime Time) = Restituisce il giorno della settimana su base zero (0 significa domenica,1,2,3,4,5,6) per la data specificata.


Quindi Day() = 1 potrebbe essere qualsiasi giorno da lunedì a domenica.

BTW, oggi è il 31 maggio, la funzione Day() restituirà 31 (data) mentre DayOfWeek() restituirà 4 (giovedì).

Domani è il 1° giugno, la funzione Day() restituirà 1 (Data), e la funzione DayOfWeek() restituirà 5 (venerdì).

Usate questo come script:


Ho usato DayOfWeek(), come mostrato in uno dei miei post, e ancora non ha funzionato correttamente.