Nikolay Kositsin, 2016.04.14 09:48
A trading system based on the signals of the ASCtrend indicator.Alain Verleyen, 2013.05.21 07:05
Trading strategy based on ASCTrend indicator as main signal, filtered by NRTR indicator and/or by TrendStrength indicator.Regarde la fonction icustom
C'est la plus simple pour toi
iCustom - Indicateurs Techniques - Référence MQL5 - Référence sur le langage de trading algorithmique/automatisé pour MetaTrader 5
Elle te permettra de te connecter aux buffers de ton indicateur qui contiennent les données que tu cherches pour ton EA
- www.mql5.com
Oui, j'ai regardé le code. Il y a bien cette ligne dans le fichier Exp_ASCtrend.mq5
InpInd_Handle=iCustom(Symbol(),InpInd_Timeframe,"ASCtrend",RISK);
Je vais essayer de récupérer un pointeur sur l' 'indicateur Astren https://www.mql5.com/en/code/491
ou d’accéder a une donnée de l'indicateur. Ce sont les données renvoyées par la fonction
int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[])
où je peux accéder une variable globale avec une technique du style.
InpInd_Handle=iCustom(Symbol(),InpInd_Timeframe,"ASCtrend",RISK); tabRobot=InpInd_Handle.tabIndicateur;
Dans tout les cas Merci pour les retours
cdl remy
ps: je regarde ce week-end
Super
Le icustom ne va te donner que le handle, pas les données
La copie des données ne va se faire que dans le copybuffe autant de fois qu'il y a de buffer à récupérer dans l'indicateur
ok
https://www.mql5.com/fr/docs/series/copybuffer
int CopyBuffer( int indicator_handle, // handle de l'indicateur int buffer_num, // numéro du buffer de l'indicateur int start_pos, // position de départ int count, // quantité à copier double buffer[] // tableau de destination pour la copie );
numéro du buffer de l'indicateur ????? .je sens que ce n'est pas gagné cette histoire.
A partir de https://www.mql5.com/en/code/viewcode/491/129436/asctrend.mq5 je souhaite récupère par exemple
//---- declaration of dynamic arrays that further // will be used as indicator buffers double SellBuffer[];
donc
InpInd_Handle=iCustom(Symbol(),InpInd_Timeframe,"ASCtrend",RISK); double tabLocal[]; CopyBuffer(InpInd_Handle,????,0,1,tabLocal);
remy
- www.mql5.com
Dans ton code a attacher les numéros de buffer sont ceux donnés dans les setindexbuffer
Dans ton cas, je ne le trompe pas
SetIndexBuffer(0,SellBuffer,INDICATOR_DATA); SetIndexBuffer(1,BuyBuffer,INDICATOR_DATA);Donc 0 pour le sellBuffer et 1 pour l'autre
Bonjour, j'ai fait des tests à partir du code de Fernando Carreiro merci pour ton code
Voici mon robot de test, le code est complet.
void OnTick() { int InpInd_Handle=iCustom(Symbol(),_Period,"ASCtrend",4); if(InpInd_Handle==INVALID_HANDLE) Print("aucun pointeur sur ASCtrend"); // Récupération d'un pointeur int qt=BarsCalculated(InpInd_Handle); //Calcul de la qt de donnée Print("qt de donnee "+ (string)qt); //Lecture de toutes les données différente de zéros double testLecture[1]; string txt="donnee de ASCtrend"; for (int i=0;i<qt;i++){ CopyBuffer(InpInd_Handle,i,1,1,testLecture); if(testLecture[0]!=0) txt=txt+" i= "+i+" val="+(string)testLecture[0]; } Print(txt); // Affichage des données } //+------------------------------------------------------------------+
A priori, je récupère bien un pointeur sur l'indicateur, mais je n'ai que des zéros, sauf de temps en temps. Comment je peux connaître les donnes et la valeur que je récupère ?
Par exemple, si j'ajoute le code suivant dans l'indicateur, comment puis-je récupérer cette valeur depuis le robot?
int valtest=123456789; int OnCalculate(const int rates_total,.... valtest=-1; }
Merci pour tout retour même partiel
cdl remy
je me répond parque j'ai trouver un moyen de communication indicateur/robot
modif ou ajout dans l'indicateur
int valtest=123456789; //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //-- ... valtest=-99999; return(valtest); }
ensuit le robot
//+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { int InpInd_Handle=iCustom(Symbol(),_Period,"ASCtrend",4); if(InpInd_Handle==INVALID_HANDLE) Print("aucun pointeur sur ASCtrend"); // récupération d'un pointeur int val =BarsCalculated(InpInd_Handle); Print("donnee de ASCtrend "+ (string)val); } //+------------------------------------------------------------------+
Donc l'on récupéré les données qui sont renvoie par la fonction
int OnCalculate(const int rates_tot ...
présent dans l'indicateur (sauf erreur de ma part bien sur)
Merci pour votre aide
cdl remy
int InpInd_Handle=iCustom(Symbol(),_Period,"ASCtrend",4); double Tab[]=getobjIndicateur (InpInd,"NomVariableIndicateur");
cdl remy
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Bonjour
Je souhaite faire interagir un robot de trading automatique avec un indicateur de manière simple.
Comment un robot peut-il récupérer les informations de l'indicateur Astren https://www.mql5.com/en/code/491
sachant que ce sont des points bleus ou rouges ? De plus, le robot et l'indicateur ne sont pas sur la même période.
Dit déferrement avez vous un temlate ou un bout de code qui permet d'interagir avec un indicateur maison et un robot tout aussi maison ?
merci pour tout retour
cdl remy