Eseguire lo script attraverso Expert Advisor - pagina 2

 
Shaun:

Storia vera, sono nuovo, al sito e anche alla codifica. Mai codificato prima.
iniziare qui
 
qjol:
inizia qui

Grazie per queste informazioni.

Ad essere onesti, sono venuto nel forum di trader/codifica per ottenere la risposta da qualcuno che l'ha già fatto e che potrebbe eventualmente aiutarmi, non per imparare a codificare tutto da solo da zero.

 
Shaun:

Grazie per queste informazioni.

Ad essere onesti, sono venuto nel forum di trader/codifica per ottenere la risposta da qualcuno che l'ha già fatto e che potrebbe eventualmente aiutarmi, non per imparare a codificare tutto da solo da zero.

Mostra il tuo Script, mostra il tuo EA forse qualcuno avrà pietà di te e li combinerà . . .
 
Shaun:

Grazie per queste informazioni.

Ad essere onesti, sono venuto nel forum di trader/codifica per ottenere la risposta da qualcuno che l'ha già fatto e che potrebbe eventualmente aiutarmi, non per imparare a codificare tutto da solo da zero.

Bene, mostra il tuo codice e cercheremo di aiutarti, ma ovviamente sono sicuro che non ti aspetti che io faccia tutto il codice per te
 

Grazie Ragazzi!

Seguendo i vostri consigli, ho scritto qualcosa del genere all'interno del mio EA:

if(MyCondition)
{
  PlaySound("my_alert.wav");
    if(MessageBox("Do you really want to run the script?", 0, MB_YESNO|MB_ICONQUESTION)!=IDNO)
     { 
      MyScript();
      DisableAllEA();
      Sleep(3000);    
     }
  }

In una certa situazione, definita da MyCondition, questo suona il mio alert, così posso sentire che devo controllare cosa sta succedendo.

Esce una casella di messaggio che mi chiede se voglio eseguire lo script - che è uno script di chiusura di tutte le posizioni.

Quando clicco sul pulsante [YES], lo script viene eseguito - chiude tutte le posizioni - e disabilita il pulsante [Experts] in MT4.

Naturalmente, non è necessario disabilitare gli Esperti, a meno che non si abbia una ragione per farlo.

Se nel prossimo ciclo il tuo EA non trova la condizione, non attiverà lo script.

Ovviamente, questo è solo un workaround e non una soluzione perfetta, perché l'EA continua a fare il loop su ogni tick.

E non puoi disabilitare Experts finché lo script non è stato eseguito, perché lo script è all'interno dell'EA, non è autonomo.

P.S.

Affinché questo funzioni, devi includere quanto segue all'inizio del tuo EA:

#include <WinUser32.mqh>
 

Ho appena pensato a un'altra soluzione!

Puoi assegnare un tasto di scelta rapida (HOTKEY) al tuo script.

Così, puoi emulare l'evento della tastiera.

Quindi, meglio:

if(MyCondition)
{
      EnableScript();
      DisableAllEA();
      Sleep(3000);
}

Puoi includere il tuo alert.wav nello script stand alone, e anche nella casella del messaggio.

E puoi decidere se abilitare gli Esperti o no, dopo la tua azione sulla situazione.

In questo modo, non si rischia l'overstacking.

Naturalmente, questo ha bisogno di più studio sugli eventi chiave.

La funzione per l'evento di tastiera Ctrl+E è:

void DisableAllEA() {
   keybd_event(17, 0, 0, 0); // CTRL down
   keybd_event(69, 0, 0, 0); // E down
   keybd_event(69, 0, 2, 0); // E up
   keybd_event(17, 0, 2, 0); // CTRL up
}

Con un po' di googling, potete trovare i codici numerici per ogni tasto.

Oppure, puoi usare questo link: https: //www.mql5.com/en/code

Naturalmente, keybd_event non fa parte di mql4, ecco perché è necessario:

#include <WinUser32.mqh>
 

E, a proposito!

Qualcuno si è mai stancato di implementare un EA sul grafico come indicatore?

Dovrebbe funzionare altrettanto bene!

E si può avere qualsiasi numero di indicatori in esecuzione su un grafico!

Ho provato a implementare degli script come indicatori, e funziona benissimo!

 
Dadas:

E, a proposito!

Qualcuno si è mai stancato di implementare un EA sul grafico come indicatore?

Dovrebbe funzionare altrettanto bene!


Non puoi piazzare operazioni da un indicatore, solo da script e EA.
 
RaptorUK:

Non è possibile effettuare operazioni da un indicatore, solo da script e EAs.


Quindi, un EA potrebbe essere eseguito come uno script? In un loop?

Solo che, quando è in un ciclo infinito, il computer alla fine si blocca.

C'è un modo per innescare uno script in un ciclo controllato da qualche ticker, come ogni 50ms o qualcosa del genere?

Non dai tick di MT4?

 
RaptorUK:

Non è possibile piazzare operazioni da un indicatore, solo da script ed EA.


E un altro pensiero:

Quindi si può usare la funzione evento della tastiera per fare ordini tramite Script.

1. Scrivete uno Script per piazzare automaticamente gli ordini.

2. Assegnare una HOTKEY ad esso.

3. Nell'EA in esecuzione come Indicatore definisci l'evento tastiera.

Poi, puoi fare lo stesso per gli ordini di chiusura.

Ecco fatto! Un EA in esecuzione come indicatore e che fa il suo lavoro!

L'unico lato negativo di questo modo è che non puoi disabilitare un indicatore con un evento da tastiera - solo rimuoverlo manualmente dal grafico.