[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 385

 
Come si usano i file degli indicatori e degli Expert Advisor in EX4?
 
Las-tochka:

Basta trasferirli su un grafico, impostare i parametri e usare


Anche se non questo è meglio)))

Tipi di file


In MQL4 ci sono 3 tipi di file con il codice del programma: mq4, ex4 e mqh.

I file di tipo mq4 sono il codice sorgente di un programma. I file di questo tipo contengono i codici sorgente di tutti i tipi di programmi (Expert Advisors, script e indicatori). Per la creazione di codici di programmi si usa MetaEditor. Dopo che un codice di programma è completamente o parzialmente completato, può essere salvato e successivamente riaperto in questo editor per ulteriori modifiche. I file di tipo mq4 non possono essere utilizzati per l'esecuzione nel terminale client. Per avviare un programma per l'esecuzione, deve essere compilato prima. Dopo la compilazione del codice sorgente del programma, viene creato un file con lo stesso nome e con l'estensione ex4.

Un file ex4 è un programma compilato che è pronto per l'uso pratico nel terminale client. Per i file di questo tipo non è prevista la possibilità di modifica. Se uno ha bisogno di fare dei cambiamenti in un programma, deve rivolgersi al suo codice sorgente (file mq4), modificarlo e poi compilarlo di nuovo. Il nome di un file ex4 non permette di determinare il tipo di programmi a cui si riferisce - se è uno script, un Expert Advisor o un indicatore. I file ex4 possono essere usati come file di libreria.

I file di tipo mqh sono file di inclusione. Questo è il codice sorgente di blocchi di programmi utente usati frequentemente. Tali file possono essere inclusi nei sorgenti di Expert Advisors, script e indicatori personalizzati in fase di compilazione. Di solito i file inclusi contengono descrizioni di funzioni da importare (vedi per esempio i file stdlib.mqh o WinUser32.mqh) o descrizioni di costanti e variabili comuni (stderror.mqh e WinUser32.mqh). Di norma, i file mqh sono memorizzati nella directory Directory_terminal\experts\include.

I file include sono così chiamati perché di solito sono "inclusi" al momento della compilazione nel file sorgente principale usando la direttiva #include. Nonostante il fatto che i file mqh possano contenere il codice sorgente di un programma e MetaEditor li compili, non sono indipendenti e autosufficienti, cioè non richiedono la compilazione per produrre file eseguibili di tipo ex4. I file .mq4 possono anche essere usati come file di inclusione, che devono essere memorizzati in terminal_directory\experts\include .

Nel navigatore del terminale client nelle sezioni "Expert Advisors", "Custom Indicators" e "Scripts" vengono visualizzati solo i nomi dei file che hanno l'estensione ex4 e si trovano nella directory corrispondente. I file compilati in una vecchia versione di MetaEditor non vengono avviati e sono in grigio.

Ci sono anche altri tipi di file che non formano un programma completo, ma sono usati quando si creano programmi applicativi. Per esempio, un programma può essere compilato da diversi file separati o una libreria precedentemente creata può essere usata per questo scopo. Le librerie di funzioni utente possono essere create dall'utente per memorizzare blocchi di programmi utente usati frequentemente. Si raccomanda di memorizzare le librerie in terminal_directory\experts\libraries. I file mq4 ed ex4 possono essere utilizzati come librerie. Le biblioteche non possono essere lanciate da sole. L'uso di file di inclusione è preferibile all'uso di librerie, a causa del consumo aggiuntivo di risorse del computer quando si chiamano funzioni di libreria.

Nella prima parte del tutorial "Introduzione alla programmazione MQL4", saremo interessati ai file di codice sorgente dei programmi mq4 e ai file compilati dei programmi ex4.

 
dove lo metto per applicarlo sul grafico?
 
Las-tochka:


Ho trovato un'altra cosa divertente, un robot, quando testato con diversi broker sui loro terminali mt4, dà risultati di test diversi a causa dell'assenza di quotazioni, sia uno che l'altro! Ma con tutto questo non c'è nessun errore di allineamento? Sono scioccato!

L'effetto farfalla è sulla sua faccia)))

Cosa ne pensate?

Penso che il tester non debba mostrare i potenziali profitti/perdite in modo affidabile, è solo per vedere se la logica dell'EA funziona correttamente e se tutti gli errori matematici e logici nel codice sono ok.
 

BeerGod:
Думаю что тестер никоем образом не обязан достоверно показывать потенциальную прибыль/убытки, он лишь для того чтобы увидеть правильно ли рабоает логика советника, всё ли в порядке с математикой и логическими ошибками в коде.

C'è qualche informazione sul merito della questione?

La questione non riguarda il profitto. E quello che serve il tester, secondo me, è uno strumento, e come usarlo dipende da ognuno di noi.


 
Myth63:
Dove devo metterlo per poterlo utilizzare nel grafico?


Se volete eseguire un esperto o un indicatore o uno script su un grafico, basta cliccare con il tasto sinistro del mouse sul programma corrispondente nella barra degli strumenti del navigatore e trascinarlo sul grafico.

Ma è meglio scaricare il tutorial da https://book.mql4.com/ru/ in basso a sinistra della pagina) Buona fortuna!

 

Buona giornata!

Uso un indicatore che mostra le MA di altri periodi.

Se ne metto un paio nella finestra, il terminale comincia a rallentare terribilmente!

Esperti, qual è il problema della lentezza dell'indicatore, ha solo 15 linee?

Fissare chi capisce.

Vi sono grato.

#property indicator_chart_window
#property indicator_buffers 1

extern double tf = 240; // Тф с какого береть МА
extern int period = 34; // Период МА
extern string _МА_ = "0--SMA 1--EMA 2--SMMA 3--LWMA";
extern int method = 2; // Метод МА
extern int price = 4; //
extern int shift = 0; //

extern string _LINE_ = "ЦВЕТ ТОЛЩИНА СТИЛЬ БАР";
extern color clr = Yellow; // Цвет линии
extern int width = 2; // Толщина линии
extern int style = 2; // Стиль линии
extern int CountBars = 500; // Количество баров отрисовки МА

datetime time_0;
double ma[];
//+------------------------------------------------------------------+
int init() {
//----
SetIndexBuffer(0, ma);
SetIndexStyle(0, DRAW_LINE, style, width, clr);
SetIndexLabel(0, "MA " + tf);
IndicatorShortName("Moving Average (" + tf + ", " + period + ")");
if (CountBars >= Bars)
CountBars = Bars;
SetIndexDrawBegin(0, Bars - CountBars + 1);
return (0);
}
//+------------------------------------------------------------------+
int start() {
//----
int cb = IndicatorCounted();
SetIndexDrawBegin(0, Bars - CountBars + 1);
int i = Bars - cb - 1;
double ctf = Period();
double r = tf / ctf;
while(i >= 0) {
int k = MathFloor(i / r);
ma[i] = iMA(Symbol(), tf, period, shift, method, price, k);
i --;
}
if (Time[0] == time_0) return (0);
time_0 = Time[0];
return (0);
}
//+------------------------------------------------------------------+

 
Myth63:
Dove devo metterlo nel grafico?
Gli esperti agli esperti di cartelle, e tutti gli altri tipi sono simili per nome. Dopo aver riavviato il terminale, saranno disponibili nel navigatore, ma saranno grigi, a differenza di quelli che hanno il codice sorgente.
 

Ciao, per favore consigliatemi: il mio problema è il seguente: nel mio Expert Advisor, ci dovrebbe essere solo un segnale di trading (quando tutti e tre gli indicatori hanno attraversato le loro rispettive zone)

if(SignalType_1 && (RSI >= 35 && Stoch >= 20 && CCI >= -100)) return(+1)

Ecco la domanda. Come scrivere correttamente questa linea, in modo che ci sia solo UN segnale. (Altrimenti, risulta che l'Expert Advisor fa accordi nel seguente algoritmo: RSI attraversa la soglia di 35 - accordo; STOCH attraversa la soglia di 20 - accordo; CCI attraversa il -100 - accordo; così abbiamo tre accordi)

C'è solo UN segnale di trading quando tutti e tre gli indicatori hanno attraversato le loro zone

 
artemka_1981:

Ciao, per favore consigliatemi: il mio problema è il seguente: nel mio Expert Advisor, ci dovrebbe essere solo un segnale di trading (quando tutti e tre gli indicatori hanno attraversato le loro rispettive zone)

if(SignalType_1 && (RSI >= 35 && Stoch >= 20 && CCI >= -100)) return(+1)

Ecco la domanda. Come scrivere correttamente questa linea, in modo che ci sia solo UN segnale. (Altrimenti, risulta che l'Expert Advisor fa accordi secondo il seguente algoritmo: RSI attraversa la linea 35 - accordo; STOCH attraversa la linea 20 - accordo; CCI attraversa la linea -100 - accordo; fa tre accordi)

Il segnale per un accordo UNO solo quando tutti e tre gli indicatori hanno attraversato le loro zone

Provate in questo modo:

bool GO = true;// глобальная переменная
//---------------------

if(GO && SignalType_1 && RSI >= 35 && Stoch >= 20 && CCI >= -100) {GO=false; return(+1);}//запретить повторный вход
//---------------
{OrderClose(.......); GO = true; }//открыть семафор при закрытии позиции.
Motivazione: