deyron: S'il y avait des tentatives d'ouverture d'un ordre, il y aurait une erreur dans les messages. Et s'il n'y a pas de tentative d'ouverture d'un ordre, pourquoi y aurait-il une erreur. La question est de savoir si les conditions de passage du Macha dans les niveaux sont correctement établies. Pourquoi les ordres s'ouvrent-ils beaucoup plus tard que prévu lorsque les paramètres sont codés en dur ?
Print() et GetLastError() aux bons endroits répondraient à toutes vos questions.
Je dois trouver la valeur du dernier point d'une série parabolique passée. Disons celui-là :
J'ai écrit une fonction pour le trouver :
double FindLastLevel ()
{double Level; int i;
for (i=0; Level==0; i++)
{double SAR0=iSAR(Symbol(),Period(), Step, Maximum, i),
SAR1=iSAR(Symbol(),Period(), Step, Maximum, i+1),
SAR2=iSAR(Symbol(),Period(), Step, Maximum, i+2);
if (SAR0>SAR1){if(SAR1<SAR2){Level=SAR2; return (Level);}}
if (SAR0<SAR1){if(SAR1>SAR2){Level=SAR2;return (Level);}}
}}
C'est-à-dire qu'il recalcule chaque valeur de Parabolic, à partir de la barre actuelle. Dès que la condition de diminution/augmentation progressive des valeurs est violée, la fonction renvoie la valeur de la barre qui a "cassé" la tendance. Cependant, s'il y avait un saut d'une barre, comme celui-ci :
La fonction "ne le voit pas".
Veuillez me conseiller sur la façon de réécrire la fonction. Peut-être existe-t-il une solution toute prête ?
Je dois trouver la valeur du dernier point d'une série parabolique passée. Disons celui-là :
J'ai écrit une fonction pour le trouver :
C'est-à-dire qu'il recalcule chaque valeur de Parabolic, à partir de la barre actuelle. Dès que la condition de diminution/augmentation progressive des valeurs est violée, la fonction renvoie la valeur de la barre qui a "cassé" la tendance. Cependant, s'il y avait un saut d'une barre, comme celui-ci :
La fonction "ne le voit pas".
Veuillez me conseiller sur la façon de réécrire la fonction. Peut-être existe-t-il une solution toute prête ?
Il faut aussi regarder la position par rapport au prix.
if (Close_1>Open_1)
{ if (Close_1-Open_1>=30*Point) buffer[i]=High_1;
}
Postez ici la partie du code où cette condition est présente. Il y a peut-être une erreur dans la boucle. Publiez le code sur le forum en utilisant le SRC.
Postez ici la partie du code où cette condition est présente. Il y a peut-être une erreur dans la boucle. Sur le forum, postez le code en utilisant SRC.
Essayé.... ne fonctionne pas.
J'ai mis des crochets de différentes manières, tordues comme je pouvais... Je ne peux plus !!!!!!!!!!!))))
C'est pourquoi je demande COMMENT je peux le faire sans aucune distorsion) : ?
Il semble que ce Creep MT4 ne voit pas du tout les pips par la condition if(.....)...((
De plus, j'ai écrit séparément un indicateur pour tenir cette condition... je ne peux pas(...) :
Bonjour, j'ai écrit un indicateur avec deux MACDs différents dans la même fenêtre et à la même échelle.
Je dois maintenant parcourir à nouveau toutes les barres SEEN et trouver le moment où la deuxième ligne de signal de l'indicateur (orange) sur la barre ZERO sera égale à la première ligne de signal (rouge).
Quelqu'un peut-il m'aider à comprendre ?
Код 2
-----
#property indicator_separate_window#property indicator_buffers 6#property indicator_color1 Lime#property indicator_color2 Red#property indicator_color5 Aqua#property indicator_color6 DarkOrange#property indicator_width1 2#property indicator_width5 2//--- buffersdouble Macd1Buffer[];
double Signal1Buffer[];
double Macd2Buffer[];
double Signal2Buffer[];
double Macd3Buffer[];
double Signa13Buffer[];
//--- for one bardatetime last;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init()
{
//---- indicatorsSetIndexStyle(0,DRAW_NONE);
SetIndexBuffer(0,Macd1Buffer);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,Signal1Buffer);
SetIndexStyle(2,DRAW_NONE);
SetIndexBuffer(2,Macd2Buffer);
SetIndexStyle(3,DRAW_NONE);
SetIndexBuffer(3,Signal2Buffer);
SetIndexStyle(4,DRAW_NONE);
SetIndexBuffer(4,Macd3Buffer);
SetIndexStyle(5,DRAW_LINE);
SetIndexBuffer(5,Signa13Buffer);
IndicatorDigits(Digits);
//----return(0);
}
//+------------------------------------------------------------------+//| Custom indicator deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+int start()
{
if(last>=Time[0]) return;
double max_M1=-0.01,min_M1=0.01,
max_M2=-0.01,min_M2=0.01,
max_S1=-0.01,min_S1=0.01,
max_S2=-0.01,min_S2=0.01,
max1=-0.01,min1=0.01,
max2=-0.01,min2=0.01,
max3,
M,
Dmax_3,
D_sig,
D_sig_Last=1.0;
int j=0;
while(j<WindowBarsPerChart()-1)
{
//----for(int i=0;i<=j;i++)
{
Macd1Buffer[i]=iMACD(0,PERIOD_H1,6,12,5,PRICE_CLOSE,MODE_MAIN,i+1); // основная линия 1-ого MACD
Macd2Buffer[i]=iMACD(0,PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1); // основная линия 2-ого MACD
max_M1=MathMax(Macd1Buffer[i],max_M1);
min_M1=MathMin(Macd1Buffer[i],min_M1);
max_M2=MathMax(Macd2Buffer[i],max_M2);
min_M2=MathMin(Macd2Buffer[i],min_M2);
Signal1Buffer[i]=iMACD(0,PERIOD_H1,6,12,5,PRICE_CLOSE,MODE_SIGNAL,i+1); // сигнальная линия 1-ого MACD
Signal2Buffer[i]=iMACD(0,PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+1); // сигнальная линия 2-ого MACD
max_S1=MathMax(Signal1Buffer[i],max_S1);
min_S1=MathMin(Signal1Buffer[i],min_S1);
max_S2=MathMax(Signal2Buffer[i],max_S2);
min_S2=MathMin(Signal2Buffer[i],min_S2);
max1=MathMax(max_M1,max_S1); // максимум 1-ого MACD
min1=MathMin(min_M1,min_S1); // минимум 1-ого MACD
max2=MathMax(max_M2,max_S2); // максимум 2-ого MACD
min2=MathMin(min_M2,min_S2); // минимум 2-ого MACD
}
M=(max1-min1)/(max2-min2); // соотношение диапазонов max-min 1-ого и 2-ого MACD
max3=max2*M; // max 3-его MACD,т.е."нового" 2-ого MACD
Dmax_3=max1-max3; // смещение 3-ого MACD относительно 1-ого MACDfor( i=0;i<=j;i++)
{
Macd3Buffer[0]=Macd2Buffer[0]*M+Dmax_3; // приведение диапазона max-min 2-ого MACD к диапазону 1-ого MACD,// т.е.подучаем 3-ий MACD и совмещаем max и min 3-его MACD с // max и min 1-ого MACD
Signa13Buffer[0]=Signal2Buffer[0]*M+Dmax_3; // max и min 1-ого MACD
}
D_sig=MathAbs(Signal1Buffer[0]-Signa13Buffer[0]); // разница между сигнальными линиями 1-ого и 3-ого MACD на// нулевом бареif(Signa13Buffer[0]==Signal1Buffer[0])
break;
D_sig_Last=D_sig;
j++;
}
Comment( "\n"," Баров = ",WindowBarsPerChart()-1,
"\n"," Macd1Buffer = ",DoubleToStr(Macd1Buffer[0],4),
"\n"," Signal1Buffer = ",DoubleToStr(Signal1Buffer[0],4),
"\n"," Macd3Buffer = ",DoubleToStr(Macd3Buffer[0],4),
"\n"," Signa13Buffer = ",DoubleToStr(Signa13Buffer[0],4),
"\n"," D_sig = ",DoubleToStr(D_sig,4));
//----
last=Time[0];
//----return(0);
}
//+------------------------------------------------------------------+
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
S'il y avait des tentatives d'ouverture d'un ordre, il y aurait une erreur dans les messages. Et s'il n'y a pas de tentative d'ouverture d'un ordre, pourquoi y aurait-il une erreur. La question est de savoir si les conditions de passage du Macha dans les niveaux sont correctement établies. Pourquoi les ordres s'ouvrent-ils beaucoup plus tard que prévu lorsque les paramètres sont codés en dur ?
Print() et GetLastError() aux bons endroits répondraient à toutes vos questions.
Bonjour !
Je dois trouver la valeur du dernier point d'une série parabolique passée. Disons celui-là :
J'ai écrit une fonction pour le trouver :
C'est-à-dire qu'il recalcule chaque valeur de Parabolic, à partir de la barre actuelle. Dès que la condition de diminution/augmentation progressive des valeurs est violée, la fonction renvoie la valeur de la barre qui a "cassé" la tendance. Cependant, s'il y avait un saut d'une barre, comme celui-ci :
La fonction "ne le voit pas".
Veuillez me conseiller sur la façon de réécrire la fonction. Peut-être existe-t-il une solution toute prête ?
Bonjour !
Je dois trouver la valeur du dernier point d'une série parabolique passée. Disons celui-là :
J'ai écrit une fonction pour le trouver :
C'est-à-dire qu'il recalcule chaque valeur de Parabolic, à partir de la barre actuelle. Dès que la condition de diminution/augmentation progressive des valeurs est violée, la fonction renvoie la valeur de la barre qui a "cassé" la tendance. Cependant, s'il y avait un saut d'une barre, comme celui-ci :
La fonction "ne le voit pas".
Veuillez me conseiller sur la façon de réécrire la fonction. Peut-être existe-t-il une solution toute prête ?
Il faut aussi regarder la position par rapport au prix.
C'est-à-dire comparer non seulement l'indicateur lui-même, mais aussi la position de ses valeurs à i par rapport à la valeur du prix à i, disons ?
Consultez ce conseiller pour voir s'il y a quelque chose d'intéressant https://www.mql5.com/ru/code/10649.
Question.
Pourquoi la condition ne va pas
if(Close_1>Open_1 && ( Close_1-Open_1)>=30*Point) buffer[i]=High_1 ;
...Au lieu de
faites-le comme ceci
Postez ici la partie du code où cette condition est présente. Il y a peut-être une erreur dans la boucle. Publiez le code sur le forum en utilisant le SRC.
Essayez ceci à la place de
comme ça.
Postez ici la partie du code où cette condition est présente. Il y a peut-être une erreur dans la boucle. Sur le forum, postez le code en utilisant SRC.
Essayé.... ne fonctionne pas.
J'ai mis des crochets de différentes manières, tordues comme je pouvais... Je ne peux plus !!!!!!!!!!!))))
C'est pourquoi je demande COMMENT je peux le faire sans aucune distorsion) : ?
Il semble que ce Creep MT4 ne voit pas du tout les pips par la condition if(.....)...((
De plus, j'ai écrit séparément un indicateur pour tenir cette condition... je ne peux pas(...) :
POURQUOI est-ce que c'est comme ça ?
Le voici.... bâtard((( !!!!
déjà en colère...
Qu'avez-vous vérifié ?
Bonjour, j'ai écrit un indicateur avec deux MACDs différents dans la même fenêtre et à la même échelle.
Je dois maintenant parcourir à nouveau toutes les barres SEEN et trouver le moment où la deuxième ligne de signal de l'indicateur (orange) sur la barre ZERO sera égale à la première ligne de signal (rouge).
Quelqu'un peut-il m'aider à comprendre ?