Apprendre et écrire ensemble en MQL5 - page 16

 
AUser:
Les gens ! Quelques conseils pour les débutants en programmation, comment travailler avec la poignée. Qu'est-ce que c'est ? Un fichier dans un tampon ? Comment en extraire des informations afin de travailler avec elle ?

Jetez un coup d'œil :

Guide de référence MQL5 / Indicateurs techniques

Guide de référence MQL5 / Accès aux séries chronologiques et aux indicateurs / CopyBuffer

En bref, le handle est un certain pointeur (lien) vers le programme qui a créé une copie de l'indicateur, à utiliser dans la fonction CopyBuffer.

Regardez aussi les articles pour les débutants, ils y sont décrits.

 
AUser:

Pouvez-vous me dire comment affecter la valeur du prix actuel à une variable ?

L'article "Migration de MQL4 vers MQL5" pourrait être plus facile à lire.

Vous devriez également consulter la documentation plus souvent.

Voici la réponse à la question de l'exemple de la fonction SymbolInfoDouble

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

AUser:

Je me demande également s'il est possible de charger des données historiques dans la poignée de l'indicateur ?

Pour être plus précis, les données ne sont pas chargées dans le handle de l'indicateur, les données sont chargées dans des tableaux spéciaux en utilisant les fonctions de la section "Accès aux données des séries temporelles et des indicateurs".

Au moins ces fonctions devraient être étudiées plus avant.

CopyBuffer

Récupère les données d'un tampon spécifié à partir d'un indicateur spécifié dans un tableau.

CopyRates

Obtient les données historiques de la structure Rates pour un symbole et une période spécifiés dans un tableau.

CopyTime

Obtient des données historiques sur l'heure d'ouverture des barres pour un symbole et une période spécifiés dans un tableau.

CopyOpen

Obtient des données historiques sur le prix d'ouverture de la barre pour un symbole et une période spécifiés dans un tableau.

CopyHigh

Obtient des données historiques sur le prix maximal de la barre pour un symbole et une période spécifiés dans un tableau.

CopyLow

Obtient des données historiques sur le prix minimal de la barre pour un symbole et une période spécifiés dans un tableau.

CopyClose

Obtient des données historiques sur le prix de clôture de la barre pour un symbole et une période spécifiés dans un tableau.

 

AUser:

Et avec l'histoire de l'indicateur, tout n'est pas clair. Le problème est le suivant : avant de pouvoir comparer les valeurs des indicateurs sur les barres, il faut les rassembler dans les tableaux d'indicateurs. Les valeurs des barres de 15 minutes sont prévisibles, mais qu'en est-il des barres hebdomadaires ? J'ai parcouru le manuel - je ne comprends pas)))) Supposons celui-ci : CopyClose(obtient les données historiques des prix de clôture des barres pour le symbole et la période appropriés dans un tableau) Nous obtenons les données, mais comment faire pour que l'indicateur les calcule ? Je ne comprends pas quelque chose.


Je comprends que vous écrivez un conseiller expert en utilisant des indicateurs ?

Si la poignée est reçue et qu'il n'y a pas de problèmes évidents, les données de l'indicateur personnalisé sont obtenues en utilisant le CopyBuffer, pour les indicateurs techniques standards il est préférable d'appliquer les fonctions suivantes

Ce code doit écrire les données de 20 barres du tampon 0 dans le tableau du tampon et retourner le nombre d'éléments du tableau effectivement copiés ou -1.

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

De plus, 20 mesures sont comptées à partir de la mesure 0, ce qui nous permet de ne pas oublier la sérialité (pour plus de détails, voir ici). Vous pouvez lire comment obtenir des données supplémentaires ici.

 
AUser:
Ça explose... Qu'est-ce qui ne va pas avec ça ?

afficher l'aide pour la fonction OrderSend ici

 
AUser:
C'est tellement écrit qu'il est difficile de comprendre sans formation).

afficher l'aide pour la fonction OrderSend ici

J'espère seulement vous le faire lire, sinon vous ne pourrez rien faire.

 

AUser, - Sergeev a raison. La fonctionOrderSend n'a que deux paramètres. Vous devez passer du temps à étudier MQL5.

 
AUser:

Écrit par :

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

Ça a mal tourné. Qu'est-ce qui a mal tourné ?

Je veux acheter à un prix réel.

Je souhaite obtenir un code plus détaillé de cette zone ou un exemple de travail. 2 ;

2. je veux décider tout de suite dans quel langage ce code est écrit ;

3. nous aimerions que les gens apprennent à lire l'aide, dans ce cas, lisez la description de la fonction OrderSend.

Dans ce cas, ce fragment sera suffisant ! !!

La fonction OrderSend() est destinée à l'exécution d'opérations commerciales en envoyant des demandes au serveur commercial.

boolOrderSend(
MqlTradeRequest&request, //structure de la requête
MqlTradeResult&result// structure de la réponse
) ;

Je veux que les gens en apprennent davantage sur les structures MqlTradeRequest etMqlTradeResult.

5. Je veux que les gens se familiarisent avec une chose aussi merveilleuse que CTrade (le remplissage de cette classe se trouve dans le fichier \MQL5\Include\Trade\Trade.mqh).

Un exemple de son utilisation dans un Expert Advisor peut être trouvé dans l'exemple standard Expert Advisor - MACD.

De plus, il serait bon de savoir ce qui se passe avec l'ordre à partir de la classe CSampleExpert jusqu'à la fonction suivante du code CTrade :

a) PositionOpen - Ouvre une position avec les paramètres spécifiés

b) PositionModify - Change les paramètres de position par le symbole spécifié

b) PositionClose -Ferme la position par le symbole spécifié.

PS

En conclusion, je veux que les gens ne se contentent pas de lire l'aide, mais qu'ils sachent aussi comment chercher des informations dans les fichiers de la bibliothèque standard (il n'est pas mauvais de se familiariser avec la combinaison de touches Ctrl+Shift+F) et dans les exemples situés sur ce site (Code Base - une chose puissante, si vous savez comment l'utiliser).

 

Question sur la fonction Sleep(). Est-ce que je comprends bien que l'utilisation de cette fonction dans un Expert Advisor arrête l'exécution de cet EA uniquement, et transfère les ressources CPU (noyau) aux tâches suivantes dans la liste des tâches de ce noyau ? En d'autres termes, est-il exact que la fonction Sleep() ne ralentit pas le fil d'exécution dans lequel le conseiller expert est traité, mais agit comme un commutateur entre le conseiller expert actuel et d'autres programmes pris en charge par un noyau particulier ?

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

Question sur la structure de MqlTradeResult. Je n'y ai pas trouvé de champ de temps - le temps de la vérification réussie de la demande de base (ou quelque chose comme ça). Quelqu'un se souvient-il s'il y avait une question sur l'introduction d'un champ de temps supplémentaire dans la structure de MqlTradeResult ? Nécessaire pour retirer un ordre en attente s'il passe soudainement en historique.

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