L'indicateur principal est situé sur la paire euro-dollar. Cet indicateur appelle les indicateurs d'autres paires d'or, de l'indice du dollar et de la devise euro. Cet indicateur fonctionne sur des paires 1 minute et parfois il n'y a pas de cotation sur l'indice dollar, par exemple, l'euro a un chandelier de 15 minutes, mais l'indice dollar n'a pas un tel chandelier, l'indice est gelé et ne tique pas. Puis, après un certain temps, la bougie de 16 minutes apparaît sur l'indice EUR et la bougie de 16 minutes sur l'indice USD. Quelle est la question ? Comment synchroniser le calcul de l'indicateur, pour qu'il ne soit compté que lorsque les barres de tous les symboles appelés coïncident dans le temps ????.
Cela semble être cool, mais le calcul est effectué uniquement pour le jour en cours, il n'y a pas de signaux pour les jours précédents. Il existe peut-être des solutions standard pour la synchronisation des symboles ????.
L'indicateur principal est situé sur la paire euro-dollar. Cet indicateur appelle les indicateurs d'autres paires d'or, de l'indice du dollar et de la devise euro. Cet indicateur fonctionne sur des paires 1 minute et parfois il n'y a pas de cotation sur l'indice dollar, par exemple, l'euro a un chandelier de 15 minutes, mais l'indice dollar n'a pas un tel chandelier, l'indice est gelé et ne tique pas. Puis, après un certain temps, la bougie de 16 minutes apparaît sur l'indice EUR et la bougie de 16 minutes sur l'indice USD. Quelle est la question ? Comment synchroniser le calcul de l'indicateur, pour qu'il ne soit compté que lorsque les barres de tous les symboles appelés coïncident dans le temps ????.
J'ai essayé cette construction
Cela semble être cool, mais le calcul est effectué uniquement pour le jour en cours, il n'y a pas de signaux pour les jours précédents. Il existe peut-être des solutions standard pour la synchronisation des symboles ????.
Essayez d'insérer un timer dans la boucle SymbolInfoTick() pour obtenir des données sur les symboles. Et là déjà synchroniser selon vos besoins.
Le fait est que sur le symbole actuel, le programme ne démarre qu'à l'arrivée du tick pour ce symbole. Par conséquent, vous ne serez pas en mesure d'obtenir les ticks des autres symboles à temps. Mais dans une minuterie qui fonctionne indépendamment des ticks, vous pourrez obtenir des ticks à partir d'autres symboles.
Le minuteur peut être réglé sur la milliseconde si vous avez besoin d'une réponse rapide à un tick sur un symbole qui n'est pas le vôtre.
artmedia70: Votre question est terriblement floue et vous êtes le seul à pouvoir la comprendre.
HAIL TO YOU ! !! MERCI ! JOYEUSES FÊTES !
2 points de plus, ma chère. 1) vous pouvez supprimer l'indicateur dans une fenêtre séparée ?
2)ajouter une fonction, si l'ATR actuel est supérieur à l'ATR (pour la période H), alors l'ATR au-dessus de la barre, serait-il mis en évidence dans une couleur différente ? ou la valeur serait-elle écrite uniquement au-dessus de cette barre ?
2 points de plus, ma chère. 1) Peut-on supprimer l'indicateur dans une fenêtre séparée ?
2)ajouter une fonction, si l'ATR actuel est supérieur à l'ATR (pour la période H), alors l'ATR au-dessus de la barre sera mis en évidence dans une couleur différente ? ou la valeur sera écrite seulement au-dessus de cette barre ?
Oh, mon Dieu... Tenez, éditez-le vous-même :
//+------------------------------------------------------------------+//| iATRwithData.mq4 |//| Copyright 2016, Artem A. Trishkin, Skype artmedia70 |//| https://login.mql5.com/ru/users/artmedia70 |//+------------------------------------------------------------------+#property copyright"Copyright 2016, Artem A. Trishkin, Skype artmedia70"#property link"https://login.mql5.com/ru/users/artmedia70"#property version"1.00"#property strict#property indicator_separate_window#property indicator_buffers1#property indicator_plots1//--- plot ATR#property indicator_label1 "ATR"#property indicator_type1 DRAW_LINE#property indicator_color1 clrDodgerBlue#property indicator_style1 STYLE_SOLID#property indicator_width1 1//+------------------------------------------------------------------+//| enums |//+------------------------------------------------------------------+enum enumYN
{
enYes=1, // Yes
enNo=0, // No
};
//+------------------------------------------------------------------+//| input parameters |//+------------------------------------------------------------------+inputint PeriodATR=14; // ATRs calculation periodint periodATR=(PeriodATR<1)?1:PeriodATR;
sinput enumYN DrawGraphic=enYes; // Drawing ATR data over the candlessinputint StartDrawingBar=100; // Max bar for drawing ATRs dataint startDrawingBar;
sinputint TextSize=5; // Text sizesinputcolor TextColor=clrDodgerBlue; // Text color//--- indicator buffersdouble BufferATR[];
string Prefix;
//+------------------------------------------------------------------+//| Classes |//+------------------------------------------------------------------+//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- indicator buffers mappingSetIndexBuffer(0,BufferATR);
Prefix="iATRwd("+IntegerToString(periodATR)+")";
IndicatorSetString(INDICATOR_SHORTNAME,Prefix);
int bars=Bars(Symbol(),Period());
startDrawingBar=(StartDrawingBar<1)?1:(StartDrawingBar>bars)?bars:StartDrawingBar;
//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//--- delete graphicsObjectsDeleteAll(0,Prefix,0);
//---
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---if(rates_total<periodATR) return(0);
int limit=rates_total-prev_calculated;
if(limit>1) limit=rates_total-periodATR-1;
//---for(int i=limit; i>=0; i--) {
BufferATR[i]=iATR(Symbol(),Period(),periodATR,i);
if(DrawGraphic && i<startDrawingBar) {
string tm_txt=TimeToString(time[i],TIME_DATE|TIME_MINUTES);
string nm=Prefix+"_"+tm_txt;
string text=IntegerToString(int(BufferATR[i]/Point()));
string tooltip="ATRs period for candle on "+tm_txt+" is "+text;
SetArrowText(0,nm,TextColor,text,0,ANCHOR_LOWER,time[i],high[i],"Arial",TextSize,tooltip);
}
}
//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+//| Timer function |//+------------------------------------------------------------------+voidOnTimer()
{
//---
}
//+------------------------------------------------------------------+//| ChartEvent function |//+------------------------------------------------------------------+voidOnChartEvent(constint id,
constlong &lparam,
constdouble &dparam,
conststring &sparam)
{
//---
}
//+------------------------------------------------------------------+//| Functions |//+------------------------------------------------------------------+void SetArrowText(long chart_id, string name, color text_color, string text, int sub_window,
long text_anchor, long text_time1, double text_price1, string font="Arial", long font_size=5,
string tooltip="\n", bool selection=false, bool hidden=true) {
if(ObjectFind(chart_id,name)<0) ObjectCreate(chart_id,name,OBJ_TEXT,sub_window,text_time1,text_price1);
ObjectSetInteger(chart_id,name,OBJPROP_ANCHOR,text_anchor);
ObjectSetInteger(chart_id,name,OBJPROP_WIDTH,font_size);
ObjectSetString(chart_id,name,OBJPROP_FONT,font);
ObjectSetString(chart_id,name,OBJPROP_TEXT,text);
ObjectSetInteger(chart_id,name,OBJPROP_COLOR,text_color);
ObjectSetInteger(chart_id,name,OBJPROP_FONTSIZE,font_size);
ObjectSetInteger(chart_id,name,OBJPROP_TIME1,text_time1);
ObjectSetDouble(chart_id,name,OBJPROP_PRICE1,text_price1);
ObjectSetInteger(chart_id,name,OBJPROP_SELECTED,selection);
ObjectSetInteger(chart_id,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_id,name,OBJPROP_HIDDEN,hidden);
ObjectSetString(chart_id,name,OBJPROP_TOOLTIP,tooltip);
}
//+------------------------------------------------------------------+
Bonsoir, est-il possible de faire en sorte que l'indicateur affiche les données tampons dans deux fenêtres, une partie sur le graphique principal et une partie sur le graphique secondaire ? Si oui, veuillez indiquer comment ...
Vous êtes les bienvenus. Si ce n'est pas un secret, pourquoi avez-vous besoin d'un horodatage indiquant l'heure de la dernière exécution de votre programme - l'heure qu'il contient ne changera pas.
Quelles fonctions peuvent être utilisées pour envoyer des variables entre deux terminaux MT4 ? Si possible, veuillez ajouter un lien vers la documentation.
Je vais le décrire plus en détail.
L'indicateur principal est situé sur la paire euro-dollar. Cet indicateur appelle les indicateurs d'autres paires d'or, de l'indice du dollar et de la devise euro. Cet indicateur fonctionne sur des paires 1 minute et parfois il n'y a pas de cotation sur l'indice dollar, par exemple, l'euro a un chandelier de 15 minutes, mais l'indice dollar n'a pas un tel chandelier, l'indice est gelé et ne tique pas. Puis, après un certain temps, la bougie de 16 minutes apparaît sur l'indice EUR et la bougie de 16 minutes sur l'indice USD. Quelle est la question ? Comment synchroniser le calcul de l'indicateur, pour qu'il ne soit compté que lorsque les barres de tous les symboles appelés coïncident dans le temps ????.
J'ai essayé cette construction
Cela semble être cool, mais le calcul est effectué uniquement pour le jour en cours, il n'y a pas de signaux pour les jours précédents. Il existe peut-être des solutions standard pour la synchronisation des symboles ????.
Je vais le décrire plus en détail.
L'indicateur principal est situé sur la paire euro-dollar. Cet indicateur appelle les indicateurs d'autres paires d'or, de l'indice du dollar et de la devise euro. Cet indicateur fonctionne sur des paires 1 minute et parfois il n'y a pas de cotation sur l'indice dollar, par exemple, l'euro a un chandelier de 15 minutes, mais l'indice dollar n'a pas un tel chandelier, l'indice est gelé et ne tique pas. Puis, après un certain temps, la bougie de 16 minutes apparaît sur l'indice EUR et la bougie de 16 minutes sur l'indice USD. Quelle est la question ? Comment synchroniser le calcul de l'indicateur, pour qu'il ne soit compté que lorsque les barres de tous les symboles appelés coïncident dans le temps ????.
J'ai essayé cette construction
Cela semble être cool, mais le calcul est effectué uniquement pour le jour en cours, il n'y a pas de signaux pour les jours précédents. Il existe peut-être des solutions standard pour la synchronisation des symboles ????.
Essayez d'insérer un timer dans la boucle SymbolInfoTick() pour obtenir des données sur les symboles. Et là déjà synchroniser selon vos besoins.
Le fait est que sur le symbole actuel, le programme ne démarre qu'à l'arrivée du tick pour ce symbole. Par conséquent, vous ne serez pas en mesure d'obtenir les ticks des autres symboles à temps. Mais dans une minuterie qui fonctionne indépendamment des ticks, vous pourrez obtenir des ticks à partir d'autres symboles.
Le minuteur peut être réglé sur la milliseconde si vous avez besoin d'une réponse rapide à un tick sur un symbole qui n'est pas le vôtre.
Votre question est terriblement floue et vous êtes le seul à pouvoir la comprendre.
HAIL TO YOU ! !! MERCI ! JOYEUSES FÊTES !
2 points de plus, ma chère. 1) vous pouvez supprimer l'indicateur dans une fenêtre séparée ?
2)ajouter une fonction, si l'ATR actuel est supérieur à l'ATR (pour la période H), alors l'ATR au-dessus de la barre, serait-il mis en évidence dans une couleur différente ? ou la valeur serait-elle écrite uniquement au-dessus de cette barre ?
HAIL TO YOU ! !! MERCI ! JOYEUSES FÊTES !
2 points de plus, ma chère. 1) Peut-on supprimer l'indicateur dans une fenêtre séparée ?
2)ajouter une fonction, si l'ATR actuel est supérieur à l'ATR (pour la période H), alors l'ATR au-dessus de la barre sera mis en évidence dans une couleur différente ? ou la valeur sera écrite seulement au-dessus de cette barre ?
Oh, mon Dieu... Tenez, éditez-le vous-même :
Ou tu veux que je fasse tout pour toi aussi ?
Oh, mon Dieu... Ici, vous le faites vous-même :
Ou dois-je le faire pour toi aussi ?
Merci beaucoup ! gentil monsieur !
Vous êtes les bienvenus. Si ce n'est pas un secret, pourquoi avez-vous besoin d'un horodatage indiquant l'heure de la dernière exécution de votre programme - l'heure qu'il contient ne changera pas.
Simple curiosité...
Ceci est pour le graphique en tic-tac hors ligne.
Quelles fonctions peuvent être utilisées pour envoyer des variables entre deux terminaux MT4 ? Si possible, veuillez ajouter un lien vers la documentation.
int Flags=FILE_WRITE+FILE_TXT+FILE_COMMON ;
int Info = FileOpen(fName,Flags) ;
FileWrite(Info,What's Up) ; Sur l'autre terminal, lire. Curseur sur FileOpen et F1 - obtenir de l'aide