Imparare e scrivere insieme in MQL5 - pagina 16

 
AUser:
Gente! Alcuni suggerimenti per i principianti nella programmazione, come lavorare con la maniglia. Che cos'è - qualche file in un buffer? Come estrarre informazioni da esso per lavorarci?

Date un'occhiata:

Guida di riferimento MQL5 / Indicatori tecnici

Guida di riferimento MQL5 / Accesso alle serie temporali e agli indicatori / CopyBuffer

In breve, l'handle è un certo puntatore (link) al programma ha creato una copia dell'indicatore, da usare nella funzione CopyBuffer.

Guarda anche gli articoli per principianti, è descritto lì.

 
AUser:

Potete dirmi come assegnare il valore del prezzo corrente a una variabile?

L'articolo "Migrazione da MQL4 a MQL5" potrebbe essere più facile da leggere.

Dovresti anche controllare più spesso la documentazione.

Questa è la risposta alla domanda dell'esempio della funzione SymbolInfoDouble

double ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
double bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
 

AUser:

Mi chiedo anche se è possibile caricare i dati storici nella maniglia dell'indicatore?

Per essere più precisi, i dati non vengono caricati nell'handle dell'indicatore, i dati vengono caricati in array speciali utilizzando le funzioni della sezione "Accesso ai dati delle serie temporali e degli indicatori".

Almeno queste funzioni dovrebbero essere studiate ulteriormente.

CopyBuffer

Ottiene i dati di un buffer specificato da un indicatore specificato in un array

CopyRates

Ottiene i dati storici della struttura Rates per un simbolo e un periodo specificati in un array

CopyTime

Ottiene i dati storici sul tempo di apertura della barra per un simbolo e un periodo specificati in un array

CopyOpen

Ottiene i dati storici sul prezzo di apertura della barra per un simbolo e un periodo specificati in un array

CopyHigh

Ottiene i dati storici sul prezzo massimo della barra per un simbolo e un periodo specificati in un array

CopyLow

Ottiene i dati storici sul prezzo minimo della barra per un simbolo e un periodo specificati in un array

CopyClose

Ottiene i dati storici sul prezzo di chiusura della barra per un simbolo e un periodo specificati in un array

 

AUser:

E con la storia dell'indicatore, non tutto è chiaro. Il problema è il seguente: prima di confrontare i valori degli indicatori sulle barre, dovrebbero essere raccolti negli array di indicatori. I valori delle barre a 15 minuti sono prevedibili, ma quelli settimanali? Ho guardato il manuale - non capisco))) Supponiamo questo: CopyClose(Ottiene i dati storici dei prezzi di chiusura delle barre per il simbolo e il periodo appropriati in un array) Otteniamo i dati, ma come farli calcolare all'indicatore? Non capisco una cosa.


Ho capito che stai scrivendo un Expert Advisor usando degli indicatori?

Se la maniglia viene ricevuta e non ci sono problemi evidenti, i dati dell'indicatore personalizzato vengono ottenuti utilizzando il CopyBuffer, per gli indicatori tecnici standard è meglio applicare le seguenti funzioni

Questo codice dovrebbe scrivere i dati di 20 barre dal buffer 0 nell'array del buffer e restituire il numero di elementi effettivamente copiati dell'array o -1

int Res = CopyBuffer(MyHandle,0,0,20,buffer[]);

Inoltre, 20 barre sono contate a partire dalla barra 0, quindi non dobbiamo dimenticare la serialità (per i dettagli vedere qui). Puoi leggere come ottenere dati aggiuntivi qui.

 
AUser:
Sta esplodendo... cosa c'è che non va?

pubblica qui l'aiuto per la funzione OrderSend

 
AUser:
È così scritto che è difficile da capire senza allenamento)

pubblica qui l'aiuto per la funzione OrderSend

Spero solo di farvelo leggere, altrimenti non potrete fare nulla.

 

AUser, - Sergeev ha ragione. La funzioneOrderSend ha solo due parametri. Devi passare un po' di tempo a studiare MQL5.

 
AUser:

Scritto da:

OrderSend(TRADE_ACTION_DEAL,Symbol(),1,SL,TP,10,ORDER_TYPE_BUY,ORDER_FILLING_CANCEL);

Cosa c'è che non va?

Voglio comprare ad un prezzo reale.

Voglio ottenere un codice più dettagliato di quest'area o un esempio di lavoro. 2;

2. Vorrei decidere subito in quale lingua è scritto questo codice;

3. vorremmo che la gente imparasse a leggere l'aiuto, in questo caso, leggere la descrizione della funzione OrderSend.

In questo caso questo frammento sarà sufficiente!!!

La funzione OrderSend() è destinata all'esecuzione di operazioni di compravendita inviando richieste al server di compravendita.

boolOrderSend(
MqlTradeRequest&request, //struttura della richiesta
MqlTradeResult&result// struttura della risposta
);

Voglio che la gente impari di più sulle strutture MqlTradeRequest eMqlTradeResult

5. Voglio che la gente conosca una cosa meravigliosa come CTrade (il riempimento di questa classe si trova nel file \MQL5\Include\Trade.mqh).

Un esempio del suo utilizzo in un Expert Advisor può essere trovato nell'Expert Advisor standard - MACD Sample.

Inoltre, sarebbe bene sapere cosa succede con l'ordine a partire dalla classe CSampleExpert fino alla prossima funzione del codice CTrade:

a) PositionOpen - Apre una posizione con i parametri specificati

b) PositionModify - Cambia i parametri di posizione del simbolo specificato

b) PositionClose -Chiude la posizione dal simbolo specificato.

PS

In conclusione, voglio che la gente non solo legga l'aiuto, ma sappia anche come cercare informazioni nei file della libreria standard (non è male familiarizzare con la combinazione di tasti Ctrl+Shift+F) e negli esempi situati su questo sito (Code Base - una cosa potente, se sai come usarla).

 

Domanda sulla funzione Sleep(). Ho capito bene che l'uso di questa funzione in un Expert Advisor arresta l'esecuzione solo di quell'EA e trasferisce le risorse della CPU (kernel) ai prossimi compiti nella lista dei compiti di quel kernel? In altre parole, è corretto che la funzione Sleep() non rallenta il thread stesso in cui l'Expert Advisor viene elaborato, ma agisce come uno switch tra l'Expert Advisor corrente e altri programmi raccolti da un particolare kernel?

Документация по MQL5: Общие функции / Sleep
Документация по MQL5: Общие функции / Sleep
  • www.mql5.com
Общие функции / Sleep - Документация по MQL5
 

Domanda sulla struttura di MqlTradeResult. Non ho trovato il campo del tempo in esso - il tempo del controllo di successo della richiesta di base (o qualcosa del genere). Qualcuno ricorda se c'era una domanda sull'introduzione di un campo di tempo aggiuntivo nella struttura MqlTradeResult? Necessario per tirare fuori un ordine pendente se improvvisamente va in cronologia.

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса - Документация по MQL5