Addio robot - ciao marasma - pagina 3

 

Ero in apprensione per il passaggio alle nuove build, ma si è scoperto che tutti gli indicatori, gli EA e gli script hanno funzionato come sono. Compilato, tuttavia, con una serie di avvertimenti. Ma il nuovo codice compilato funziona molto più velocemente. Le uniche nuove caratteristiche che uso sono OnTimer(), nuove opzioni per lavorare con i file, aumento del numero di buffer degli indicatori, alcune nuove funzioni (il loro aumento è solo una questione di tempo). Molto utile è il controllo degli overrun di array con l'indicazione delle stringhe nel codice. Una volta era: dividi per zero e guarda dove vuoi. E sarebbe ancora peggio se l'errore non si verificasse.

"Cosa c'è di nuovo in MQL4" può essere scritto per coloro che ricordano le vecchie cose. Niente più novellini?

Se si vuole dare loro una descrizione di MQL4 Lite, si può lasciare fuori dalla documentazione tutto ciò che è fondamentalmente nuovo e non necessario: strutture, classi, risorse, puntatori a oggetti, OOP, debugger, segnali, eventi grafici, tutte le funzioni che usano questa nuova conoscenza, ecc. Tutto ciò che sarà lasciato indietro non sarà molto più complicato del vecchio MQL4. Modificare leggermente il libro di testo per quello nuovo, che viene lasciato intatto.

.

 

Renat 09.09.2014 02:55 #

Si possono rifare metodicamente gli argomenti, spiegare la moltiplicazione delle funzioni, salvare il vecchio codice, correggere i bug, ecc. Questo è stato fatto molte volte, descritto in articoli e discusso nei forum. Ma è più facile e più preciso dire che l'autore ha assolutamente torto e sta inventando problemi dal nulla.

Risposta a Renat!

----------------------------------------------------------------

Stai cercando di inventare delle stronzate su di me!

Tu, come sviluppatore, servi le banche,

non la comunità! stai costruendo una macchina da corsa

con una bicicletta per bambini a pedali!

Quindi devo darvi i fatti.

Domanda:

Dove ha fatto User32. dll

con le funzioni per chiamare lo script dall'eXpert, l'indicatore.

Non c'è più niente! Qui sotto c'è la prova.

il linker stesso mi ha fatto un ehpert a pagamento, che

per chiamare lo script quando necessario.

ora lo script viene chiamato solo manualmente.

la chiamata stessa è circondata da diverse finestre-consente di chiamare

o vuoi invocare un secondo script - la finestra "vuoi lasciare il

Solo il trading manuale è possibile!

Cosa dovrebbe fare un robot e tutti i robot scrittori?

Non sono contro l'OOP e le prestazioni presumibilmente più veloci di MT4.

Se si voleva accelerare MT4, si sarebbe limitato il

Ne uso 5-6 e ottengo centinaia di date!

I simboli inutili sono spazzatura.

ed arrivano solo loro! È qui che la velocità e la reattività

Ma è un male per le banche!

Pansa

Importazione di funzioni da User32. Se il loro scopo non è più o meno immediatamente

// chiaro, allora documentarlo qui francamente non aiutare molto. Richiede

// "Allow DLL imports" deve essere attivato.

#importare "user32.dll"

int RegisterWindowMessageA(string MessageName);

int PostMessageA(int hwnd, int msg, int wparam, string Name);

void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo);

#importare

// Il parametro hWnd per tutte queste funzioni si ottiene usando WindowHandle().

// Per esempio, un EA/script può ottenere l'handle del proprio grafico usando

// WindowHandle(Symbol(), 0). Se l'EA/script sa che un altro grafico

// è aperto, allora il suo handle può essere ottenuto usando il simbolo noto e

// timeframe. Comportamento imprevedibile se ci sono più grafici per

// lo stesso simbolo e timeframe. AutomaticallyAcceptDefaults cancella

// la finestra di configurazione per il nuovo indicatore/EA/script simulando

// una pressione del tasto Enter dopo una piccola attesa. Un'attesa più lunga potrebbe

// dimostrano di essere più robusti. Niente di tutto questo è per i deboli di cuore...

void StartStandardIndicator(int hWnd, string IndicatorName, bool AutomaticallyAcceptDefaults = false)

{

int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message");

PostMessageA(hWnd, MessageNumber, 13, IndicatorName);

se (AutomaticallyAcceptDefaults) ClearConfigDialog();

}

void StartCustomIndicator(int hWnd, string IndicatorName, bool AutomaticallyAcceptDefaults = false)

{

int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message");

PostMessageA(hWnd, MessageNumber, 15, IndicatorName);

se (AutomaticallyAcceptDefaults) ClearConfigDialog();

}

void StartEA(int hWnd, string EAName, bool AutomaticallyAcceptDefaults = false)

{

int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message");

PostMessageA(hWnd, MessageNumber, 14, EAName);

se (AutomaticallyAcceptDefaults) ClearConfigDialog();

}

void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false)

{

int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message");

PostMessageA(hWnd, MessageNumber, 16, ScriptName);

se (AutomaticallyAcceptDefaults) ClearConfigDialog();

}

void ClearConfigDialog()

{

Dormire(100);

keybd_event(13, 0, 0, 0);

}

 
pansa:

Renat 09.09.2014 02:55 #

Si possono rifare metodicamente gli argomenti, spiegare la moltiplicazione delle funzioni, salvare il vecchio codice, correggere i bug, ecc. Questo è stato fatto molte volte, descritto in articoli e discusso nei forum. Ma è più facile e più preciso dire che l'autore ha assolutamente torto e sta inventando problemi dal nulla.

Risposta a Renat!

----------------------------------------------------------------

Stai cercando di parlar male di me in modo sfacciato!

Perché lodare quando siamo a livelli di comprensione completamente diversi?


user32.dll non va da nessuna parte - è una libreria del sistema operativo.

Utilizzare le varianti di funzione W(idechar/unicode) invece delle funzioni A(nsi):

#import "user32.dll"

   int  RegisterWindowMessageW(string MessageName);
   int  PostMessageW(int hwnd, int msg, int wparam, string Name);

   void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo);

#import
 
Se rimuovi il simbolo dalla finestra di Market Watch, nessun traffico passerà attraverso di esso. Questo meccanismo ha funzionato per 14 anni.
 

Al moderatore, Renate!

sul livello di comprensione - è relativo,

Porto una lancia a fianco del glorioso cavaliere Don Chisciotte

e sono all'altezza del compito.

Voi, d'altra parte, dovete soddisfare più alti

requisiti più elevati e produrre prodotti di maggiore

qualità superiore.

bene user32,dllsi riferisce a windos.

Iltuo consiglio di passare da A a W non ha avuto alcun effetto!

Prova ad eseguire lo script da eXpert!

La rimozione dei caratteri non influisce sul carico della CPU o della rete.

è una chiamata a schermo e il filo è lo stesso!

Spero che sarete d'accordo con me.

Panza

 

Vedo che anche tu lo fai.

Ma qui stiamo parlando di programmazione e di programmi scritti da programmatori. Se non capite il codice sorgente che state usando, dovete imparare. Abbiamo fatto molto per questo: ampia documentazione, tutorial, articoli, base di fonti, freelance, mercato di prodotti pronti, segnali, forum, ecc.

 
pansa:

Prova a cambiare il caso della prima lettera del nome dello script/indicatore. In qualche modo stavo lottando anche io https://www.mql5.com/ru/forum/152533/page2#982156

P.S: bene, cambia stringa con char[]

 

CaroRenat, anch'io ho ricevuto molti avvertimenti dopo la compilazione degli EA, nessun errore.

Ho una domanda, cosa significano questi avvertimenti (principalmente, sono davanti alla linea return())? E non influiranno negativamente sul funzionamento degli Expert Advisors?

Naturalmente, non voglio imparare di nuovo il linguaggio e rifare i miei EA (sono un trader, non un programmatore).

 
vasabu2012:

CaroRenat, anch'io ho ricevuto molti avvertimenti dopo la compilazione degli EA, nessun errore.

Ho una domanda, cosa significano questi avvertimenti (principalmente, sono davanti alla linea return())? E non influiranno negativamente sul funzionamento degli Expert Advisors?

Naturalmente, non voglio imparare di nuovo il linguaggio e rifare i miei EA (sono un trader, non un programmatore).


Per favore mandami gli errori o il codice dell'Expert Advisor in cui hai fatto degli errori.
 
vasabu2012:

Anch'io ho ricevuto un mucchio di avvertimenti dopo la compilazione degli EAs - nessun errore.

E la maggior parte degli avvertimenti spazzatura sono saltati fuori a causa del passaggio perfettamente legale, corretto e standard della variabile per riferimento nella funzione, quando il nome del template della funzione corrisponde alla variabile stessa come dovrebbe essere in questo costrutto nel suo uso standard e tipico, quando la variabile stessa viene passata nella funzione con il suo nome.

Sfortunatamente, i MC non potevano dare una spiegazione competente e logica per questo, dicendo che a volte si possono avere malintesi in altri costrutti quando ci sono nomi simili. Ma ecco il paradosso, per esempio, quando c'è una funzione con uno stesso nome e un diverso numero di parametri, l'avviso non apparirà.

Quindi dobbiamo attribuirlo ad alcune superstizioni religiose e oscure credenze quando non c'è alcuna logica dietro questo avvertimento. Non considero ancora la versione dell'idiozia, come suggerito dall'autore del thread per spiegare questo fenomeno)).

Motivazione: