Il mio approccio. Il nucleo è il motore. - pagina 80

 
Александр:

Il tuo post deve essere preso come una domanda di partecipazione all'implementazione?

Anch'io stavo guardando questo thread, ma sembra che tu non abbia letto attentamente il mio post precedente.

Se attraverso il freelance, per favore fatelo. Qual è il budget? In quale punto ti è sembrato che leggessi distrattamente?

 
Dmitry Fedoseev:

Se attraverso il freelance, per favore fatelo. Qual è il budget? In quale punto hai pensato che non stavo leggendo attentamente?

Mi asterrò dal suggerire il freelance.

Mi asterrò dall'offerta di freelance, ma mi asterrò dal prestare attenzione qui:

Forum sul trading, sistemi di trading automatico e test di strategia

Il mio approccio. Nucleo - Motore.

Alexander, 2018.12.16 16:12

Le mie competenze in MQL e nella programmazione in generale sono piuttosto modeste. ....

...Se c'è un modo per accelerare i risultati senza andare troppo in profondità, perché non approfittarne?

 

Esempio di un'animazione personalizzata disegnata dall'EA nella finestra del motore:

Codice di controllo nell'EA:

void OnTimer()
  { 
   static int q1,a,b; 
   //------------------------------------
   if(!a)LOAD_CANVAS_Last_10_bars(); 
   //---------------------------------
   if(!b) q1++;
   if(q1 == 200)b = 1;
   if(b)q1--;
   if(!q1)b = 0;  
   //------------- 
   ELLIPSE(q1,q1,q1+q1*2,q1+q1,clrBlue);          
   //------------------------------------
  }

Aggiunte 14 funzioni di disegno dalla classe CCanvas al blocco di disegno del motore. Queste funzioni sono chiamate dall'Expert Advisor. Per questo, le funzioni wrapper delle funzioni di disegno sono state aggiunte nel file Connection_Properties.mqh

Potete disegnare cerchi, rettangoli, triangoli, archi, ellissi e linee.

Prima di chiamare le funzioni di disegno, dobbiamo specificare su quale tela disegneranno (per esempioLOAD_CANVAS_Last_10_bars();).

La tecnologia è ancora allo stato grezzo. Non appena l'avrò debuggato, posterò un esempio pronto.

 
Александр:

Buon pomeriggio.

Sto cercando di costruire una barra degli strumenti per controllare l'abilitazione/disabilitazione delle funzioni di trading personalizzate e, rispettivamente, correggere alcuni dei loro parametri.

Ho affrontato l'impossibilità di attivare/disattivare il pannello a causa dell'assenza dell'evento ChartEvent nello Strategy Tester, quando ho implementato il pannello nel codice dell'Expert Advisor.

O l'impossibilità di aprire ordini nel caso in cui il pannello sia implementato nel codice dell'indicatore.

Discussione qui: https://www.mql5.com/ru/forum/294890

Peter mi ha offerto il suo aiuto nello sviluppo del pannello, che non ho potuto rifiutare.

Quindi attualmente il pannello si presenta così

o così, quando tutti i pulsanti sono premuti:

sotto ogni pulsante i suoi parametri, che possono essere modificati dalle frecce su/giù o modificando il campo di modifica.

Per i pulsanti "Now" il valore è .Locking(false); per tutti gli altri pulsanti .Locking(true);

Per il pulsante "Trailing", aggiungete un altro parametro (interruttore) con i valori All/Each.

Inoltre, dobbiamo aggiungere un elenco a discesa nel pannello con una scelta di timeframe e una finestra con una lista di ordini aperti dal simbolo corrente con indicazione del profitto di ogni ordine (incluso lo swap) e una croce davanti a ciascuno di essi per chiuderlo.

Peter, questa descrizione è sufficiente per il tuo TOR?

Ecco il pannello.

Per favore, fai degli aggiustamenti all'aspetto, e spiega dove posizionare esattamente l'interruttore "All/Each", e anche la lista di rilascio con i tempi (presumo in alto al centro).

Pulsanti premuti:


 

Per quanto riguarda lo scambio del tester, sto risolvendo quel problema proprio ora. Voglio rifare completamente la comunicazione tra l'EA e il motore. Per implementarlo attraverso "oggetti di comunicazione" (oggetti MT la cui descrizione delle stringhe è usata per la trasmissione di dati tra programmi).

Questo può essere un modo veloce e versatile di comunicazione per la comunicazione normale e per la comunicazione in modalità test dell'EA.

L'attuale approccio alla comunicazione sovraccarica la coda di eventi OnChartEvent(). L'invio e la ricezione di messaggi tra l'EA e il motore è ritardato se ci sono troppi eventi, e questo può essere visto visivamente. Comunicare attraverso gli oggetti MT dovrebbe eliminare questo problema, perché la ricezione e l'invio di messaggi saranno fatti al di fuori della coda di eventi OnChartEvent().

In teoria, questo dovrebbe funzionare...

 
Реter Konow:

Ecco il pannello.

Per favore, fai delle correzioni all'aspetto, e spiega dove esattamente mettere l'interruttore "All/Each", così come la lista dei tempi (immagino in alto al centro).

Penso che sarebbe meglio fare il pannello per tutta la larghezza dell'area di lavoro (ci sarà più meta per la lista degli ordini).

I campi di modifica con le etichette Lot, Profit e accanto ai pulsanti "Now" dovrebbero avere i centesimi (formato 0.00).

Ho sperimentato e sono giunto alla conclusione che sarebbe meglio sostituire il campo con la lista dei timeframe con Label e due pulsanti ("-" e "+"). Posizionare all'altezza della fila superiore di pulsanti. Etichetta al centro, pulsante "-" a sinistra, pulsante "+" a destra dell'etichetta. Ci sarà spazio in basso per una lista di ordini aperti.

Posiziona gli interruttori All/Each sotto i pulsanti "Trailing" al livello dell'etichetta "Profit".

Questa è la mia visione, ma per quanto ho capito, dopo aver letto il forum e visto il tuo lavoro, hai il desiderio e la capacità di disegnare, quindi non mi opporrò ai tuoi suggerimenti.

 
Александр:

1. Penso che sarebbe meglio fare il pannello per tutta la larghezza dell'area di lavoro (ci sarebbe più meta per la lista degli ordini).

2. I campi di modifica con le etichette Lot, Profit e accanto ai pulsanti "Now" dovrebbero avere i centesimi (formato 0.00).

3. Ho sperimentato e sono arrivato alla conclusione che è meglio sostituire il campo con la lista dei timeframe con Label e due pulsanti ("-" e "+"). Posizionare all'altezza della fila superiore di pulsanti. Etichetta al centro, pulsante "-" a sinistra, pulsante "+" a destra dell'etichetta. Sotto ci sarà uno spazio per la lista degli ordini aperti.

4. Posiziona gli interruttori All/Each sotto i pulsanti Trailing al livello dell'etichetta Profit.

5. Questa è la mia visione, ma ho capito che, dopo aver letto il forum e visto il tuo lavoro, hai il talento e la capacità di disegnare, quindi non mi opporrò ai tuoi suggerimenti.

1. cioè fare in modo che il pannello si adatti automaticamente alla larghezza del grafico? O solo alla larghezza del grafico?

2. Sarà fatto.

3. Non capisco bene. Vuoi dire che i tempi devono essere impostati nel campo di inserimento con i pulsanti +/-? E non dovremmo fare una finestra separata con l'elenco degli ordini? Tutto sul pannello?

4. L'interruttore potrebbe essere un semplice pulsante che cambia il testo quando viene premuto/premuto?

5. Aggiungere elementi grafici.

(Un piccolo cursore potrebbe essere trasformato in un interruttore. Il cursore andrebbe a destra/sinistra)

 
Реter Konow:

Per quanto riguarda lo scambio del tester, sto risolvendo quel problema proprio ora. Voglio rifare completamente la comunicazione tra l'EA e il motore. Voglio implementarlo attraverso "oggetti di comunicazione" (oggetti MT la cui descrizione delle stringhe è usata per trasferire dati tra programmi).

Questo può essere un modo veloce e versatile di comunicazione per la comunicazione normale e per la comunicazione in modalità test dell'EA.

L'attuale approccio alla comunicazione sovraccarica la coda di eventi OnChartEvent(). L'invio e la ricezione di messaggi tra l'EA e il motore è ritardato se ci sono troppi eventi, e questo può essere visto visivamente. La comunicazione attraverso gli oggetti MT dovrebbe eliminare questo problema, perché la ricezione e l'invio dei messaggi saranno fatti al di fuori della coda degli eventi OnChartEvent().

In teoria, dovrebbe funzionare...

Non sono sicuro di capire bene il punto.

Ho capito bene che hai intenzione di implementare la comunicazione tra l'EA e il pannello in modalità di test attraverso gli eventi OnChartEvent()?

Se è così, le possibilità di successo non sono molto alte, perché gli eventi OnChartEvent() non sono generati per l'EA nel tester (solo per l'indicatore).

https://www.mql5.com/ru/forum/294890/page4#comment_9914750 qui è stato suggerito di sostituire gli eventi OnChartEvent() con gli eventi OnTick().

Ho provato, ma fa sì che tutti gli oggetti compositi (SpinEdit, ComboBox e altri) smettano di funzionare. L'unico metodo che permette di cambiare i valori delle variabili nel tester Button.Pressed() e solo per i pulsanti indipendenti (pulsanti non inclusi in qualche oggetto complesso come SpinEdit)

SimplePanel проблема при переключении таймфрейма
SimplePanel проблема при переключении таймфрейма
  • 2018.12.16
  • www.mql5.com
В составе стандартного пакета MT4 имеется пример создания панели управления "Simple Panel...
 
Александр:

Non sono sicuro di capire bene il punto.

Ho capito bene che vuoi realizzare la comunicazione tra l'EA e il pannello in modalità test attraverso gli eventi OnChartEvent()?

Se è così, le possibilità di successo non sono molto alte, perché gli eventi OnChartEvent() non sono generati per l'EA nel tester (solo per l'indicatore).

https://www.mql5.com/ru/forum/294890/page4#comment_9914750 qui è stato suggerito di sostituire gli eventi OnChartEvent() con gli eventi OnTick().

Ho provato, ma fa sì che tutti gli oggetti compositi (SpinEdit, ComboBox e altri) smettano di funzionare. L'unico metodo che permette di cambiare i valori delle variabili nel tester Button.Pressed() e solo per i pulsanti indipendenti (pulsanti non inclusi in qualche oggetto complesso come SpinEdit)

È una lunga spiegazione. Ma, fidatevi della mia esperienza. Il metodo di comunicazione funzionerà.

Il pannello sarà su un grafico regolare. L'Expert Advisor nel tester. Il pannello troverà l'Expert Advisor nello Strategy Tester, creerà MT-objects e attraverso la loro descrizione "comunicherà" con l'EA.

OnChartEvent() funziona sul grafico regolare. Non lo fa nel tester. Ma non impedisce la sincronizzazione dei valori dei parametri.

Sono sicuro che funzionerà.

Sarà questione di una settimana.

 
Реter Konow:

È una lunga spiegazione. Ma, fidatevi della mia esperienza. Il metodo di comunicazione funzionerà.

Il pannello sarà su un grafico normale. L'Expert Advisor nel tester. Il pannello troverà l'Expert Advisor nello Strategy Tester, creerà MT-objects e attraverso la loro descrizione "comunicherà" con l'EA.

OnChartEvent() funziona sul grafico regolare. Non lo fa nel tester. Ma non impedisce la sincronizzazione dei valori dei parametri.

Sono sicuro che funzionerà.

Sarà questione di una settimana.

Non funzionerà.

Motivazione: