[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 326

 
drknn:


Commencez par définir le problème.

- Utilisez le script pour détecter la présence d'une ligne sur le graphique.

- Si la ligne existe, imprimez son prix de début et de fin dans les variables ; imprimez les numéros de barre (ou le temps) dans les variables.

- Effectuez les calculs nécessaires en utilisant le script.

- Imprimer les résultats à l'écran (ou dans un document texte ou dans le Journal du Conseiller Expert)

Si vous ne parvenez pas à résoudre ces 4 problèmes tout de suite, commencez par apprendre la langue.


drknn ! merci ! Je vais m'en occuper ! !!
 
Zhunko:

Ce n'est pas un secret. Il y a beaucoup d'écrits à ce sujet. Peu importe l'outil utilisé pour créer l'histoire. L'objectif est de mettre à jour le graphique pour que le conseiller expert puisse travailler dessus.

Cela peut être fait au moyen de WinAPI. Il a été décrit ici à de nombreuses reprises. J'ai écrit une bibliothèque. Je l'ai posté ici.

Il contient des fonctions permettant de contrôler la mise à jour autonome de la carte. Il ne nécessite aucun script ou expert. Mais ce n'est pas pour tout le monde. Des fonctions sont également à la disposition de tous pour mettre à jour le graphique à partir d'un Expert Advisor, d'un script ou d'un indicateur. Il est plus difficile de les utiliser. Parce que vous devez déterminer lequel de vos programmes va mettre à jour le tableau. Des exemples sont dans le script de test.

Auriez-vous une solution toute faite pour "extraire" la dernière ligne du fichier journal pour l'afficher dans les commentaires ?
 

Aidez un nerd à sortir. Juste pour revenir sur l'essence de la question.

J'ai deux points sur le graphique, le point 2 - celui qui est le plus proche de la barre zéro et le t.1 - celui qui est le plus éloigné de la barre zéro dans l'historique. J'essaie de tracer une ligne de tendance à partir de ces deux points,

en prolongeant le segment entre ces points de N (variable int RayLong) intervalles en avant. Le code est le suivant :

if (RayLong!=0 && point1s==true && point2s==true)
{
//расчет цены в будущем
if (price11s>price22s) {price11s=NormalizeDouble(price11s+((price11s-price22s)*RayLong),Digits);} 
if (price11s<price22s) {price11s=NormalizeDouble(price11s-((price22s-price11s)*RayLong),Digits);}
//расчет бара в будущем
int bis=iBarShift(Symbol(),0,time22s,true)-iBarShift(Symbol(),0,time11s,true);
Print("Sup "+iBarShift(Symbol(),0,time22s,true)+" "+iBarShift(Symbol(),0,time11s,true)+" "+bis+
" sec="+bis*Period()*60*NormalizeDouble(RayLong,Digits)+" Time="+TimeToStr(time11s+(Period()*60*
(iBarShift(Symbol(),0,time22s,true)-iBarShift(Symbol(),0,time11s,true)+1)*RayLong),TIME_DATE|TIME_SECONDS));
time11s=time11s+(Period()*60*((iBarShift(Symbol(),0,time22s,true)-iBarShift(Symbol(),0,time11s,true))*RayLong));
//time11s=time11s+((time11s-time22s)*RayLong); //альтернативный вариант предыдущей строки
}
Le problème est que le point de calcul est flottant sur la date. Le prix est correct. La date, quant à elle, est soit fine, soit flottante. L'impression montre que cela se produit lorsque la date de règlement n'est pas prévue au calendrier - week-ends ou jours fériés. Veuillez suggérer une solution à ce problème.
 
forexnew:
Auriez-vous une solution toute faite pour "extraire" la dernière ligne du fichier journal pour l'afficher dans les commentaires ?
C'est inutile. Le fichier journal est rempli après le téléchargement de MT4 ou lorsque MT4 a le temps de le faire.
 
ZZZEROXXX:

Aidez un nerd à sortir. Juste pour revenir sur l'essence de la question.

J'ai deux points sur le graphique, le point 2 - celui qui est le plus proche de la barre zéro et le t.1 - celui qui est le plus éloigné de la barre zéro dans l'historique. J'essaie de tracer une ligne de tendance à partir de ces deux points,

en prolongeant un segment entre ces points par N (variable int RayLong) intervalles en avant. Le code est le suivant :

Le problème est que le point de calcul est flottant sur la date. Le prix est correct. La date, quant à elle, est soit fine, soit flottante. J'utilise Print pour comprendre que cela se produit lorsque la date de règlement n'est pas prévue au calendrier - week-ends ou jours fériés. Veuillez me conseiller sur la façon de résoudre ce problème.

Je ne comprends pas le problème. Si vous dessinez par prix et par barres Il n'y a pas de barres de week-end et de non-week-end sur le graphique. Donc la tendance et devrait se poursuivre sur les prochaines barres correspondant aux dates des jours de trading.

Ou est-ce différent pour vous ?

 

Pourriez-vous me dire si le tableau sera rempli avec les tikets des ordres en attente dans le code suivant :

int tiket[] ;

int SetFunk()

{

pour (i=0 ; i<=k-1 ; i++)

{
ticket[i]=OrderSend(Symbol(),OP_BUYSTOP,0.01*Lots,Ask+Step*i*Point,3,Bid-S_Loss*Point,0,",10000,0,Green) ;

ticket[i+k]=OrderSend(Symbol(),OP_SELLSTOP,0.01*Lots,Bid-Step*i*Point,3,Ask+S_Loss*Point,0,"",10000,0,Green);

}

}

? ????
nulls sont retournés lorsque l'on essaie de print()

 
À quoi sert la classe de mémoire statique ? Si possible, pouvez-vous donner un bon exemple de son utilisation dans le code et souligner les caractéristiques qui la distinguent des autres classes de mémoire ? Cette chose semble être inutile, qui sait quoi ?
 
myrzila:

Pourriez-vous me dire si le tableau sera rempli avec les tikets des ordres en attente dans le code suivant :

int tiket[] ;

int SetFunk()

{

pour (i=0 ; i<=k-1 ; i++)

{
ticket[i]=OrderSend(Symbol(),OP_BUYSTOP,0.01*Lots,Ask+Step*i*Point,3,Bid-S_Loss*Point,0,",10000,0,Green) ;

ticket[i+k]=OrderSend(Symbol(),OP_SELLSTOP,0.01*Lots,Bid-Step*i*Point,3,Ask+S_Loss*Point,0,"",10000,0,Green);

}

}

? ????
nulls sont retournés lorsque l'on essaie de print()

d'abord définir la taille du tableau (ArrayResize) et ensuite travailler avec lui
 

Bonjour.

J'ai une EA.

Comment puis-je faire en sorte qu'il affiche les niveaux de moyenne mobile indiqués dans l'image ?

Pour l'instant, il n'y a que des zéros.


//+------------------------------------------------------------------+
//| fonction d'initialisation de l'expert |
//+------------------------------------------------------------------+
int init()
{
//----

//----
retour(0) ;
}
//+------------------------------------------------------------------+
//| fonction de désinitialisation des experts |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
retour(0) ;
}
//+------------------------------------------------------------------+
//| fonction de démarrage de l'expert |
//+------------------------------------------------------------------+
int start()
{
//----
SetLabel("MA_LABEL",DoubleToStr(iMA(Symbol(),13,30,8,MODE_SMA,PRICE_CLOSE,0)-0.0015,0),Red,10,20,0,20) ;
SetLabel("MA_LABEL2",DoubleToStr(iMA(Symbol(),13,30,8,MODE_SMA,PRICE_CLOSE,0),0),Red,10,50,0,20) ;
//----
retour(0) ;
}
//+------------------------------------------------------------------+


void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
si (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0) ;
ObjectSetText(nm, tx, fs) ;
ObjectSet(nm, OBJPROP_COLOR, cl) ;
ObjectSet(nm, OBJPROP_XDISTANCE, xd) ;
ObjectSet(nm, OBJPROP_YDISTANCE, yd) ;
ObjectSet(nm, OBJPROP_CORNER, cr) ;
ObjectSet(nm, OBJPROP_FONTSIZE, fs) ;
}




 
emilien:


Bonjour.

J'ai une EA.

Comment puis-je faire en sorte qu'il affiche les niveaux de moyenne mobile indiqués dans l'image ?

Pour l'instant, il n'y a que des zéros.


//+------------------------------------------------------------------+
//| fonction d'initialisation de l'expert |
//+------------------------------------------------------------------+
int init()
{
//----

//----
retour(0) ;
}
//+------------------------------------------------------------------+
//| fonction de désinitialisation des experts |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
retour(0) ;
}
//+------------------------------------------------------------------+
//| fonction de démarrage de l'expert |
//+------------------------------------------------------------------+
int start()
{
//----
SetLabel("MA_LABEL",DoubleToStr(iMA(Symbol(),13,30,8,MODE_SMA,PRICE_CLOSE,0)-0.0015,0),Red,10,20,0,20) ;
SetLabel("MA_LABEL2",DoubleToStr(iMA(Symbol(),13,30,8,MODE_SMA,PRICE_CLOSE,0),0),Red,10,50,0,20) ;
//----
retour(0) ;
}
//+------------------------------------------------------------------+


void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
si (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0) ;
ObjectSetText(nm, tx, fs) ;
ObjectSet(nm, OBJPROP_COLOR, cl) ;
ObjectSet(nm, OBJPROP_XDISTANCE, xd) ;
ObjectSet(nm, OBJPROP_YDISTANCE, yd) ;
ObjectSet(nm, OBJPROP_CORNER, cr) ;
ObjectSet(nm, OBJPROP_FONTSIZE, fs) ;
}




double iMA( string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)

Je n'ai pas encore entendu parler du délai 13.