[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 573

 
//+------------------------------------------------------------------+
//|                                                       iTicks.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#include <WinUser32.mqh>
extern int  delay_MSecond = 2000;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   while(!IsStopped()){
      PostMessageA (WindowHandle (Symbol(), Period()), WM_COMMAND, 33324, 0);
      PostMessageA (WindowHandle (Symbol(), 0), RegisterWindowMessageA ("MetaTrader4_Internal_Message"), 2, 1);
      Sleep(delay_MSecond);
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

Come vengono fatte le richieste al tester di strategia? Come, per esempio, eseguire il seguente comando: "Esegui un test su un EA su un periodo di tempo specifico con un file impostato in modo specifico e, al termine, salva il rapporto".

 
alsu:
È difficile capire subito il codice di qualcun altro... Se dovessi indovinare, controllerei i valori Imin, Imax, Jmin, Jmax nella funzione Neuron.Study(). All'epoca 0, il valore 32 viene passato come lR, che viene poi utilizzato nell'indicizzazione (di solito si indicizzano gli array da 0 a size-1). È molto probabile che l'errore stia proprio qui.

In effetti, l'errore era legato a questi calcoli. Grazie
 
alkador:

Come vengono gestite le richieste al tester di strategia? Come, per esempio, eseguire il seguente comando: "Esegui un test su un EA ad un certo intervallo con un certo set file e, al termine, salva il report".

Configurazione all'avvio

Il terminale client può essere avviato con impostazioni predefinite. A tal fine, il nome del file di configurazione viene passato al terminale client come parametro.

Per esempio:

  terminal.exe config\start.ini terminal.exe test1.txt terminal.exe "C:\Program Files\MetaTrader 4\config\settings25.ini"

Se il percorso completo del file non è specificato (Drive:\SubDirectory\FileName), il file verrà cercato nella directory del terminale client. Il file di configurazione ha le seguenti linee:
[Parametro] = [Valore].

I commenti iniziano con un punto e virgola (;) e non sono valutati.

I parametri del file di configurazione possono essere suddivisi in diversi gruppi: impostazioni generali, impostazioni del server proxy(scheda "Server" nella tabella delle impostazioni del terminale), impostazioni FTP(scheda "Publish" nella tabella delle impostazioni del terminale), impostazioni degli Expert Advisor(scheda "Expert Advisors" nella tabella delle impostazioni del terminale), impostazioni di un singolo avvio di un Expert Advisor o di uno script, impostazioni del lancio di un tester di strategia.

Impostazioni comuni

  • Profilo - nome della sottodirectory nella directory dei profili. I grafici saranno aperti nel terminale client secondo il profilo specificato. Se questa opzione non è specificata, verrà aperto il profilo corrente.

  • MarketWatch - nome del file (cartella \symbolsets) che contiene l'elenco dei simboli da visualizzare nella finestra di osservazione del mercato. Tale file può essere ricevuto utilizzando il comando del menu contestuale della finestra "Market Watch - Symbolsets - Save As".

  • Login - numero dell'account a cui connettersi all'avvio. Se questo parametro manca, verrà usato il login corrente.

  • Password - password per il login. Questo parametro sarà ignorato se il terminale client memorizza i dati personali su disco e il numero di conto da collegare è nella lista.

  • Server - nome di un server commerciale a cui dovrebbe essere effettuata la connessione. Il nome del server coincide con il nome del file srv corrispondente memorizzato nella directory di configurazione. Questo parametro sarà ignorato se le informazioni sull'account da collegare sono salvate su disco.

  • AutoConfiguration - "true" o "false" a seconda che l'autoconfigurazione debba essere abilitata. Se questo parametro manca, verrà usato il valore delle impostazioni correnti del server.

  • DataServer - indirizzo del centro dati. Se l'autoconfigurazione del server è abilitata, questa voce può essere ignorata. Se questo parametro manca, verrà usato il valore delle impostazioni correnti del server.

  • EnableDDE - "true" o "false" a seconda che il server DDE debba essere abilitato. Se questo parametro è assente, verrà utilizzato il valore delle impostazioni correnti del server.

  • EnableNews - "true" o "false" a seconda che la ricezione di notizie debba essere permessa o meno. Se questo parametro non è presente, verrà usato il valore delle impostazioni correnti del server.

Esempio:

  impostazioni comuni Profile=test 3 MarketWatch=set2.set Login=12345 Password=xxxxxx Server=MetaQuotes-demo AutoConfiguration=false DataServer=192.168.0.1:443 EnableDDE=true EnableNews=false

Impostazioni proxy

  • ProxyEnable - "true" o "false" a seconda che il server proxy debba essere usato per connettersi con il server commerciale.

  • ProxyServer - indirizzo del server proxy.

  • ProxyType - tipo di server proxy. Può essere "HTTP", "SOCKS4" o "SOCKS5".

  • ProxyLogin - accesso al server proxy.

  • ProxyPassword - password per accedere al server proxy.

Se manca uno di questi parametri, vengono utilizzate le impostazioni correnti del terminale client (impostazioni proxy nella scheda "Server" della tabella delle impostazioni del terminale client).

Esempio:

  ; impostazioni proxy ProxyEnable=true ProxyServer=proxy.company.com:3128 ProxyType=HTTP ProxyLogin=user45 ProxyPassword=xxx

Impostazioni FTP

  • FTPEnable - abilita/disabilita la pubblicazione. I valori accettabili sono "vero" o "falso".

  • FTPPassiveMode - abilita/disabilita la modalità passiva. Valori accettabili "vero" o "falso".

  • FTPAccount - numero di conto i cui dati di stato devono essere inviati a FTP.

  • FTPServer - indirizzo del server FTP.

  • FTPLogin - login per l'autorizzazione sul server FTP.

  • FTPPassword - password per l'accesso al server FTP.

  • FTPPath - nome della directory sul server FTP dove il rapporto è collocato.

  • FTPPeriod - periodicità di invio del rapporto al server FTP in minuti.

Se manca uno dei parametri elencati, vengono utilizzate le impostazioni attuali del terminale client(scheda "Publishing" nella tabella delle impostazioni del terminale).

Esempio:

  ; impostazioni ftp FTPEnable=true FTPPassiveMode=false FTPAccount=12345 FTPServer=ftp.company.com FTPLogin=admin FTPPassword=pAssWOrd123 FTPPath=/inetpub FTPPeriod=10

Impostazioni degli esperti

  • ExpertsEnable - abilita/disabilita gli esperti.

  • ExpertsDllImport - attiva/disattiva l'importazione di DLL.

  • ExpertsDllConfirm - abilita/disabilita la conferma manuale delle chiamate di funzioni DLL.

  • ExpertsExpImport - permette/proibisce l'importazione di funzioni da Expert Advisors esterni o librerie MQL4.

  • ExpertsTrades - attiva/disattiva il trading EA.

  • ExpertsTradesConfirm - abilita/disabilita la conferma manuale delle operazioni di trading da parte dell'Expert Advisor.

Nota: tutti i parametri di un gruppo Expert Advisor possono assumere solo i valori "vero" o "falso".

Se uno dei parametri menzionati sopra è assente, vengono utilizzate le impostazioni correnti del terminale del cliente(scheda "Expert Advisors" nella tabella delle impostazioni del terminale).

Esempio:

  ; impostazioni degli esperti ExpertsEnable=true ExpertsDllImport=true ExpertsExpImport=true ExpertsTrades=true ExpertsTradesConfirm=false

Impostazioni di un singolo Expert Advisor e/o script

  • Symbol - nome del simbolo il cui grafico deve essere aperto subito dopo l'avvio del terminale. Dopo aver chiuso il terminale client le informazioni su questo grafico aggiuntivo non vengono salvate. Se il terminale viene riavviato senza un file di configurazione, questo grafico non verrà aperto. Se questo parametro è assente, non viene aperto alcun grafico aggiuntivo.

  • Periodo - periodo del grafico (M1, M5, M15, M30, H1, H4, D1, W1, MN). Se questo parametro è assente, viene usato H1.

  • Template - nome del file modello (directory \templates) da applicare al grafico.

  • Expert - nome dell'Expert Advisor da lanciare dopo l'avvio del terminale client. L'Expert Advisor inizia sul grafico aperto secondo i parametri Symbol e Period. Se il parametro Symbol manca, non viene aperto alcun grafico aggiuntivo e l'EA viene avviato sul primo grafico nel profilo corrente. Se non ci sono grafici nel profilo corrente, l'Expert Advisor non verrà avviato. Se questo parametro non è disponibile, non verrà avviato alcun esperto.

  • ExpertParameters - nome del file contenente i parametri EA (directory Experts/Presets). Tale file può essere creato nella finestra delle proprietà di Expert Advisor premendo il pulsante "Input parameters - Save". Di solito viene utilizzato per memorizzare i parametri che sono diversi da quelli predefiniti. Se questo parametro è assente, vengono utilizzati i parametri predefiniti.

  • Script - nome dello script da lanciare dopo l'avvio del terminale client. Lo script viene lanciato con le stesse regole dell'Expert Advisor (descritto sopra).

  • ScriptParameters - nome del file contenente i parametri dello script (directory Expertspresets). Questo file viene generato allo stesso modo di quello dell'Expert Advisor.

Esempio:

  Aprire il grafico ed eseguire l'esperto e/o lo script Symbol=EURUSD Period=H4 Template=popular.tpl Expert=MACD Sample ExpertParameters=macd.set Script=period_converter ScriptParameters=

Impostazioni di lancio di Strategy Tester

  • TestExpert - nome dell'Expert Advisor da lanciare per i test. Se questo parametro manca, non viene eseguito alcun test.

  • TestExpertParameters - nome del file contenente i parametri (directory \tester). Tale file può essere creato nella finestra delle proprietà dell'Expert Advisor, premendo il pulsante "Input parameters - Save". Di solito viene utilizzato per memorizzare parametri diversi da quelli di default. Altri parametri dell'EA sotto test dalle schede "Testing" e "Optimization" (e dalla scheda "Input parameters" nel caso in cui questo parametro sia assente) sono riempiti con i valori salvati automaticamente nel file \tester\[nome esperto].ini dopo l'ultimo test.

  • TestSymbol - nome dello strumento sui cui dati deve essere eseguito il test dell'Expert Advisor. Se questo parametro non è disponibile, viene utilizzato l'ultimo valore usato nel tester.

  • TestPeriod - periodo del grafico (M1, M5, M15, M30, H1, H4, D1, W1, MN). H1 è usato se questo parametro è assente.

  • TestModel - 0, 1 o 2 a seconda del modello di test (All ticks, Benchmarks, Open prices). Se questo parametro non è disponibile, viene utilizzato il valore 0 (Tutti i tick).

  • TestOptimization - attiva/disattiva l'ottimizzazione. I valori accettabili sono "vero" o "falso". Se questo parametro non è disponibile, viene utilizzato il valore "false".

  • TestDateEnable - abilita/disabilita l'opzione "Use dates". I valori accettabili sono "vero" o "falso". Se questa opzione non è disponibile, viene usato "false".

  • TestFromDate - data di inizio dell'intervallo di test come YYYY.MM.DD. Se questo parametro è assente, viene utilizzato "1970.01.01".

  • TestToDate - data finale dell'intervallo di test nella forma YYYY.MM.DD. Se questo parametro è assente, sarà 1970.01.01.

  • TestReport - nome del file del rapporto di prova. Il file verrà creato nella directory del terminale client. Il percorso relativo può essere specificato, per esempio: tester\MovingAverageReport". Se non viene specificata alcuna estensione nel nome del file di report, verrà utilizzata l'estensione ".htm". Se questo parametro non è specificato, il rapporto di prova non sarà generato.

  • TestReplaceReport - permette/impedisce la scrittura ripetuta del file di report. I valori accettabili sono "vero" o "falso". Se "false" è impostato e il file di report con questo nome esiste già, il nome del file di report sarà aggiunto con un numero di sequenza tra parentesi quadre. Per esempio, "MovingAverageReport[1].htm". Se questo parametro è assente, verrà usato "false".

  • TestShutdownTerminal - abilita/disabilita lo spegnimento del terminale dopo il test. I valori accettabili sono "vero" o "falso". Se questo parametro è assente, viene utilizzato il valore "false". Se l'utente ha premuto il pulsante "Stop" durante il test, il valore di questo parametro viene resettato a "false", poiché l'utente ha preso il controllo.

Esempio:

  TestExpert=Moving Average TestExpertParameters=ma0.set TestSymbol=EURUSD TestPeriod=H1 TestModel=2 TestOptimization=false TestDateEnable=true TestFromDate=1970.01.01 TestToDate=2006.06.06 TestReport=MovingAverageReport TestReplaceReport=false TestShutdownTerminal=true

 
AndEv:
Se qualcuno lo sa, ho una domanda: ho bisogno di uno script in loop che "prema" il pulsante "Refresh" una volta ogni 0,5 secondi nel grafico corrente e reinizializzi gli indicatori. "Ho provato a fare uno script in loop usando WindowRedraw(). Ho provato a fare uno script in loop usando WindowRedraw() e Sleep(500), ma gli indicatori non vengono reinizializzati.
Questa libreria contiene varie funzioni per il controllo di MT4. Comprese le funzioni di aggiornamento del grafico per Expert Advisors e indicatori. Ci sono anche funzioni autonome. Ho eseguito lo script una volta e questo è tutto. Si scarica e i grafici continuano ad aggiornarsi fino a quando non si scarica MT4.
 

Portato da

Armen63 18.02.2012 14:47 |

Ciao a tutti aiuto per favore non so come implementarlo ... qualcuno può per favore consigliare? xocu chtobi v sovetnike obshee chislo sell ili buy ordersov kontrolirovalos int Total1 = OrdersTotal();

if (Total1 <= MaxOrders || MaxOrders == 0) tak ya kontroliruyu v all tipi orders a nado po otdelnosti i dlya sell i dlya buy

 

a Armen63

int CountBuys() 
{
   int l_count_4 = 0;
   int l_ord_total_12 = OrdersTotal();
   for (int l_pos_8 = 0; l_pos_8 < l_ord_total_12; l_pos_8++) {
      OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
      if (OrderType() == OP_BUY) l_count_4++;
   }
   return (l_count_4);
}

int CountSells() 
{
   int l_count_4 = 0;
   int l_ord_total_12 = OrdersTotal();
   for (int l_pos_8 = 0; l_pos_8 < l_ord_total_12; l_pos_8++) {
      OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
      if (OrderType() == OP_SELL) l_count_4++;
   }
   return (l_count_4);
}
 

Ciao, cari utenti del forum!

Ho appena iniziato a imparare mql4 e ho deciso di scrivere il mio EA.

Sai come scrivere la seguente condizione nel codice: se gli ultimi tre prezzi ask sono più alti del precedente (ask3>ask2>ask1), allora piazza un ordine di acquisto

Spero di aver espresso chiaramente l'idea), se qualcosa è sbagliato, chiedete pure, specificherò)

Vi sarò molto grato per il vostro aiuto ))

 
come questo.
datetime ask=TimeCurrent();
   double ask1=0,ask2=0,ask3=0;
   ask1=Ask;
   if(ask!=TimeCurrent()){ask2=Ask;ask=TimeCurrent()}
   if(ask!=TimeCurrent()){ask3=Ask;}
   
Forse mi sbaglio, sto solo imparando.
 
openlive:
Per esempio, forse mi sbaglio - sto imparando


Se supponiamo che l'EA gestisca ogni tick, allora dovremmo fare le cose un po' diversamente.

int start(){
   static double ask1=1, ask2=-1, ask3=-1;
   ask3=ask2;
   ask2=ask1;
   ask1=Ask;

   if (ask3>0) {
      if (ask1>ask2) {
         if (ask2>ask3) {
             //условие выполнено для бай
         }
      }
      if (ask1<ask2) {
         if (ask2<ask3) {
             //условие выполнено для селл
         }
      }
   }
}
Motivazione: