[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 322
Vérifiez si cross=+1 ou -1 correspond à OpenBuy() ou OpenSell() (et close-open ou open-close). σ On nous attribue ici une certaine valeur infinitésimale, analogue au zéro.
Tommy27:
Au secours, je n'arrive pas à comprendre comment faire pour qu'un indicateur compare le nombre de barres les plus récentes et calcule combien d'entre elles étaient à la hausse, combien étaient à la baisse et combien étaient des pinbars et qui avait quels prix de fermeture/ouverture, haut/bas et volumes ?
Nous devons faire cela exactement dans l'indicateur.
Définissez CountedBars à une certaine fenêtre de chandeliers (par exemple 30), et faites un cycle de CountedBars avec décrémentation. A la hausse ou à la baisse, haussier ou baissier, regardez la différence de deux Close adjacents. La Pinbar examine le haut ou le bas local, et l'écart de ce haut ou bas par rapport aux valeurs adjacentes. Si l'écart dépasse un certain pourcentage que vous avez spécifié, il s'agit d'une pinbar.
J'ai un terminal de trading OEC qui a besoin d'un indicateur de spread simple.
Peut-être que quelqu'un peut écrire, ou au moins m'aider avec quelque chose.
Cela ressemble à ceci sur mt4
Je peux vous conseiller de demander sur le Spider. En fait, je ne peux que citer :
GaryKa: Ajoutez une description de la ponctuation, et une définition de vos concepts (par exemple "votre numéro") etici. Et dans cette branche, n'aident que ceux qui ont leurs propres mains (et alors dans l'humeur)
Cela s'applique à tous. Je ne sais pas comment l'utiliser, mais je suis sûr que ça va marcher.
D'après ce que j'ai compris en comparant votre description avec votre code, ils divergent, car dans votre code, la sortie précoce de la boucle se produit lorsquei_seqentBarsCont:
hoz:
for (int i=i_AnyBarsToHistory; i>=1; i--)
{
if (directionMA == CROSS_UP)
{
if ((Open[i] - Close[i]) >= i_sizeOfSequentialCorrectionBar * pt)
cntDn++;
if ((Close[i] - Open[i]) >= i_sizeOfTrandBar * pt)
cntDn = 0;
if (i == 1)
Print(" directionMA ", directionMA, "; i = ", i, "; Open[i] - Close[i] = ", Open[i] - Close[i], "; cntDn = ", cntDn);
if (cntDn == i_sequentBarsСount) //<--return (REQUIRED_SEQUENTIAL_BEARS_GOT); //<--
}
if (directionMA == CROSS_DN)
{
if ((Close[i] - Open[i]) >= i_sizeOfSequentialCorrectionBar * pt)
cntUp++;
if ((Open[i] - Close[i]) >= i_sizeOfTrandBar * pt)
cntUp = 0;
if (i == 1)
Print(" directionMA ", directionMA, "; i = ", i, "; Close[i] - Open[i] = ", Close[i] - Open[i], "; cntUp = ", cntUp);
if (cntUp == i_sequentBarsСount) //<--return (REQUIRED_SEQUENTIAL_BULLS_GOT); //<--
}
hoz:
Si le cycle est de 30 à 3, alors le calcul va de l'indice 30 à l'indice 3, respectivement, inclus.
Si la barre ne correspond pas à l'indice requis, alors le compteur est remis à zéro, puis on analyse la situation, c'est-à-dire qu'on continue à calculer par le cycle, jusqu'à atteindre la barre d'indice 3.
D'après ce que j'ai compris en comparant votre description avec votre code, il y a une divergence, car dans votre code il y a une sortie précoce de la boucle lorsquei_seqentBarstCont:
Je comprends que vous avez probablement besoin d'un compteur, qui sera incrémenté après chaque barre calculée et lorsque sa valeur sera égale à i_AnyBarsToHistory, alors il sortira ce qui a été sorti jusqu'à ce point.
Je vais dire ce que je pense, et je vous répondrai.
//+-------------------------------------------------------------------------------------+//| Расчитываем количество идущих один за одним баров одного признака |//+-------------------------------------------------------------------------------------+int LastCandlesType(int directionMA)
{
int cntUp, // Счётчик идущих друг за другом свечей с..
cntDn, // .. требуемыми признаками
t; // Счётчик всех просчитанных баровfor (int i=i_AnyBarsToHistory; i>=1; i--, t++)
{
if (directionMA == CROSS_UP) // Если машки направлены вверх
{
if ((Open[i] - Close[i]) >= i_sizeOfSequentialCorrectionBar * pt) // Если бар соответствует требуемым признакам..
cntDn++; // .. прибавим 1 к счётчикуif ((Close[i] - Open[i]) >= i_sizeOfTrandBar * pt) // Если бар, не соответствует основному признаку..
cntDn = 0; // .. счётчик обнуляемif (i == 1)
Print(" directionMA ", directionMA, "; i = ", i, "; Open[i] - Close[i] = ", Open[i] - Close[i], "; cntDn = ", cntDn);
if (t == i_AnyBarsToHistory)
{
if (cntDn == i_sequentBarsСount) // Если cnt баров в подряд медвежьи..return (REQUIRED_SEQUENTIAL_BEARS_GOT); // .. Выходим из функции
}
}
if (directionMA == CROSS_DN) // Если машки направлены вниз
{
if ((Close[i] - Open[i]) >= i_sizeOfSequentialCorrectionBar * pt) // Если бар соответствует требуемым признакам..
cntUp++; // .. прибавим 1 к счётчикуif ((Open[i] - Close[i]) >= i_sizeOfTrandBar * pt) // Если бар, не соответствует основному признаку..
cntUp = 0; // .. счётчик обнуляемif (i == 1)
Print(" directionMA ", directionMA, "; i = ", i, "; Close[i] - Open[i] = ", Close[i] - Open[i], "; cntUp = ", cntUp);
if (t == i_AnyBarsToHistory)
{
if (cntUp == i_sequentBarsСount) // Если cnt баров в подряд бычьи..return (REQUIRED_SEQUENTIAL_BULLS_GOT); // .. Выходим из функции
}
}
return (REQUIRED_SEQUENTIAL_MISS);
}
}
Il y a donc probablement une sorte de bug dans ce qui précède.
La chose la plus intéressante est qu'une fois que j'ai ajouté un retour par défaut ici, cela fonctionne en quelque sorte tout le temps. Je veux dire la ficelle :
return (REQUIRED_SEQUENTIAL_MISS);
Bien qu'il soit évident que le code est élémentaire, et qu'il ne peut y avoir aucune erreur.
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.
int signal = GetGeneralSignal();vous pouvez le remplacer par
Vérifiez si cross=+1 ou -1 correspond à OpenBuy() ou OpenSell() (et close-open ou open-close). σ On nous attribue ici une certaine valeur infinitésimale, analogue au zéro.
Au secours, je n'arrive pas à comprendre comment faire pour qu'un indicateur compare le nombre de barres les plus récentes et calcule combien d'entre elles étaient à la hausse, combien étaient à la baisse et combien étaient des pinbars et qui avait quels prix de fermeture/ouverture, haut/bas et volumes ?
Nous devons faire cela exactement dans l'indicateur.
Définissez CountedBars à une certaine fenêtre de chandeliers (par exemple 30), et faites un cycle de CountedBars avec décrémentation. A la hausse ou à la baisse, haussier ou baissier, regardez la différence de deux Close adjacents. La Pinbar examine le haut ou le bas local, et l'écart de ce haut ou bas par rapport aux valeurs adjacentes. Si l'écart dépasse un certain pourcentage que vous avez spécifié, il s'agit d'une pinbar.
Bonjour,
Joyeuses fêtes à tous !
J'ai un terminal de trading OEC qui a besoin d'un indicateur de spread simple.
Peut-être que quelqu'un peut écrire, ou au moins m'aider avec quelque chose.
Cela ressemble à ceci sur mt4
Bonjour,
Joyeuses fêtes à tous !
J'ai un terminal de trading OEC qui a besoin d'un indicateur de spread simple.
Peut-être que quelqu'un peut écrire, ou au moins m'aider avec quelque chose.
Cela ressemble à ceci sur mt4
Je peux vous conseiller de demander sur le Spider. En fait, je ne peux que citer :
Ajoutez une description de la ponctuation, et une définition de vos concepts (par exemple "votre numéro") etici. Et dans cette branche, n'aident que ceux qui ont leurs propres mains (et alors dans l'humeur)
Cela s'applique à tous. Je ne sais pas comment l'utiliser, mais je suis sûr que ça va marcher.
C'est ce que je cherchais, merci Garyka ! Joyeuses fêtes passées et à venir !
Joyeuses fêtes à tous !
Pouvez-vous me dire ce que signifie le terminal lorsqu'il indique uninit reason 5 dans l'onglet "experts" ?
Merci.
Joyeuses fêtes à tous !
Pouvez-vous me dire ce que signifie le terminal lorsqu'il indique uninit reason 5 dans l'onglet "experts" ?
Merci.
https://docs.mql4.com/ru/constants/uninit
C'est aussi simple que cela.
D'après ce que j'ai compris en comparant votre description avec votre code, ils divergent, car dans votre code, la sortie précoce de la boucle se produit lorsquei_seqentBarsCont:
Si le cycle est de 30 à 3, alors le calcul va de l'indice 30 à l'indice 3, respectivement, inclus.
Si la barre ne correspond pas à l'indice requis, alors le compteur est remis à zéro, puis on analyse la situation, c'est-à-dire qu'on continue à calculer par le cycle, jusqu'à atteindre la barre d'indice 3.
D'après ce que j'ai compris en comparant votre description avec votre code, il y a une divergence, car dans votre code il y a une sortie précoce de la boucle lorsquei_seqentBarstCont:
Je comprends que vous avez probablement besoin d'un compteur, qui sera incrémenté après chaque barre calculée et lorsque sa valeur sera égale à i_AnyBarsToHistory, alors il sortira ce qui a été sorti jusqu'à ce point.
Je vais dire ce que je pense, et je vous répondrai.
C'est ce qui se passe :
En fait, pas même une ligne n'est imprimée :
Il y a donc probablement une sorte de bug dans ce qui précède.
La chose la plus intéressante est qu'une fois que j'ai ajouté un retour par défaut ici, cela fonctionne en quelque sorte tout le temps. Je veux dire la ficelle :
return (REQUIRED_SEQUENTIAL_MISS);Bien qu'il soit évident que le code est élémentaire, et qu'il ne peut y avoir aucune erreur.