Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 151

 
Forexman77:
Pouvez-vous me dire comment fixer un stop au plus haut ou au plus bas de la barre où la transaction est ouverte ?

Si elle est élevée, alors High[ ] au lieu de stop, si elle est faible Low[ ], mais gardez deux choses à l'esprit.


1. il s'agit de l'écart et de la distance par rapport à la butée fixée par le concessionnaire.

2. Vous ne pouvez pas placer un stop correctement sur la barre qui se forme. C'est-à-dire, High[0]. Et seulement sur les barres précédentes. C'est-à-dire High[1], etc.

 
satorifx:

Bon après-midi.

Pouvez-vous me dire comment relier par programme 2 systèmes de coordonnées dans un graphique : (X,Y) et (temps,prix) ? Vous avez besoin d'une étiquette avec des coordonnées (X,Y) qui sera toujours au prix minimum sur le graphique.

artmedia70:
Il y a des différences. Sur le graphique en général, c'est-à-dire sur tous les historiques disponibles dans le terminal, ou sur le graphique visible (dans l'écran du moniteur) ?


Exactement sur le graphique visible sur l'écran du moniteur.

 
satorifx:

Exactement sur le graphique visible sur l'écran du moniteur.

Lancez ce script sur le tableau :

//+------------------------------------------------------------------+
//|                                       sc_LowestPricePerChart.mq4 |
//|                               Copyright 2013, Artyom A. Trishkin |
//|                          artmedia70@gmail.com, Skype: Artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, Artyom A. Trishkin"
#property link      "artmedia70@gmail.com, Skype: Artmedia70"
//+------------------------------------------------------------------+
//|           script program start function                                    |
//+------------------------------------------------------------------+
int start() {
   int count=WindowBarsPerChart();                             // количество видимых баров 
   int LowestBar=iLowest(Symbol(),Period(),MODE_LOW,count,0);  // бар с минимальной ценой
   double LowestPricePerChart=Low[LowestBar];                  // минимальная цена из видимых баров
   SetArrow(5, Yellow, "sc_LowestPricePerChart_LowestPrice", Time[LowestBar], LowestPricePerChart, 1);
   return(0);
}
//+------------------------------------------------------------------+
void SetArrow(int cd, color cl, string nm="", datetime t1=0, double p1=0, int sz=0) {
   if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, 0, 0, 0);
   ObjectSet(nm, OBJPROP_TIME1    , t1);
   ObjectSet(nm, OBJPROP_PRICE1   , p1);
   ObjectSet(nm, OBJPROP_ARROWCODE, cd);
   ObjectSet(nm, OBJPROP_COLOR    , cl);
   ObjectSet(nm, OBJPROP_WIDTH    , sz);
}
//+------------------------------------------------------------------+

Faites de même pour le maximum

 
artmedia70:

Lancez ce script sur le tableau :

Faites de même pour le maximum


Le fait est que l'objet ARROW a des coordonnées (temps, prix) mais pas de coordonnées (x,y). Si vous étendez la fenêtre de l'indicateur en bas de l'écran, l'objet se déplacera en même temps que la fenêtre, mais en même temps, les coordonnées (x,y) de l'objet dans la fenêtre changeront et elles ne pourront pas être calculées car il n'y a pas de connexion entre les deux systèmes de coordonnées. En principe, vous pourriez utiliser un objet TEXT ou tout autre objet à la place d'un objetARROW , mais cela ne résout pas le problème.
 
satorifx:
Le fait est que l'objet ARROW a des coordonnées (temps, prix), mais pas de coordonnées (x,y). Si nous élargissons la fenêtre de l'indicateur en bas de l'écran, l'objet se déplacera en même temps que la fenêtre, mais en même temps les coordonnées (x,y) de l'objet dans la fenêtre changeront et elles ne pourront pas être calculées car il n'y a pas de connexion entre les deux systèmes de coordonnées. En principe, vous pourriez utiliser un objet TEXT ou tout autre objet à la place d'un objet ARROW , mais cela ne résout pas le problème.

Alors, attachez le blanc au chaud. On vous a montré comment connaître le prix minimum sur les barres visibles, et comment le marquer sur le graphique.

Le reste n'est qu'un vœu pieux et obscur ;)

 
Sepulca:



Je ne suis pas tout à fait sûr de ce que vous voulez dire ? S'il n'y a pas de fichier (il n'a pas été ouvert) ou s'il y a une erreur de lecture. Il aurait donné un message, mais il n'y a pas de nouvelles...
 
Le code doit être écrit de telle sorte que sur la barre où la transaction est ouverte, la position est sortie si un pic se forme sur la barre suivante immédiatement après la barre avec le pic, mais les signaux sur les barres après la barre où la transaction est ouverte, où le pic s'est produit, sont ignorés. Il n'y a aucun problème avec le code décrivant le pic. La difficulté consiste à dire au programme que le signal ne doit utiliser que la barre à laquelle la transaction a été ouverte.
 
Forexman77:
Le code doit être écrit de telle sorte que sur la barre, sur laquelle la transaction est ouverte, il y a une sortie de la position, si un pic est formé, sur la barre suivante immédiatement après la barre avec un pic, mais les signaux sur les barres, après lesquelles la transaction est ouverte, où un pic s'est produit, sont ignorés. Il n'y a aucun problème avec le code décrivant le pic. La difficulté est d'indiquer au programme que seule la barre à laquelle la transaction est ouverte est utilisée pour le signal.
La transaction a une heure d'ouverture OrderOpenTime() ; Il existe une fonction qui vous indique le nombre de barres par heure iBarShift() ; Utilisez cette barre comme "... nous utilisons uniquement la barre à laquelle la transaction est ouverte pour le signal...".
 
artmedia70:
La transaction a un temps d'ouverture OrderOpenTime() ; Et il y a une fonction qui vous montrera le numéro de la barre par temps iBarShift() ; C'est la barre et l'utiliser comme "... que pour le signal que nous utilisons, seulement la barre sur laquelle la transaction est ouverte...".

Merci, je vais m'en occuper.
 
Zolotai:

Je ne suis pas tout à fait sûr de ce que vous voulez dire ? S'il n'y a pas de fichier (il n'a pas été ouvert) ou s'il y a eu une erreur lors de la lecture. Le message a été affiché, mais vous ne recevez aucune nouvelle...

Handle=FileOpen(File_Name,FILE_CSV|FILE_READ|FILE_WRITE," ;");// Ouvrir le fichier.

Si FILE_WRITE n'est pas combiné avec FILE_READ, un fichier de longueur nulle sera ouvert. Même s'il y avait des données dans le fichier avant son ouverture, elles seront détruites.
Si vous voulez ajouter des données à un fichier existant, vous devez l'ouvrir en utilisant la combinaison FILE_READ | FILE_WRITE..
Si FILE_READ n'est pas combiné avec FILE_WRITE, le fichier ne sera ouvert que si le fichier existe déjà. Si le fichier n'existe pas, il peut être créé en utilisant le mode FILE_WRITE.