Un bug dans la fonction OrderSend() ?

 

Cela fait maintenant 4 jours que je me bats, et je n'arrive pas à mettre en œuvre une chose apparemment simple. J'ai déjà fait des choses similaires avec différents indicateurs et chandeliers. Je ne peux pas le faire avec une montre-bracelet.

L'essence est primitive ! Dès que le prix s'approche du masque d'une certaine période à une certaine distance de i_thresholdFromMa (dans cet EA il n'y en a qu'un seul !), un pendentif est mis en place. J'ai déjà supprimé toutes les fonctions et tous les filtres qui étaient disponibles auparavant.

Voici la fonction Acheter :

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy()
{
   int ticket = -1;
   double OOP = fastMa + buyHear * pt;             // Получаем значение цны открытия
   
   if ((ND(OOP) - Ask) >= g_stopLevel)             // Проверка цену открытия на стоплевел          
   {
       if (ND(OOP) > Ask)           // Проверка что цена открытия выше Ask, т.к. у нас вход отложенником
       {
           Print("Bid = ", Bid);
           Print("Ask = ", Ask);
           Print("fastMa = ", fastMa);
           Print("Цена покупки = ", fastMa + buyHear * pt);
           Print("i_thresholdFromMa * pt = ", i_thresholdFromMa * pt);
           ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0);
       }
   }
   if (ticket > 0)
   {
       return (true);
   }
   else
    
   Alert (GetLastError());
}

Nous pouvons voir que l'OrderSend() a un prix d'ouverture égal à la somme des variables fastMa + buyHear * pt

Dans la capture d'écran, nous pouvons voir que ce prix n'existe pas !

Le joint est dans le mashka

Vous pouvez également voir qu'il n'y a pas d'entrées où le prix a touché le fastMa (marqueur rouge).

J'ai délibérément pris le 1er tampon, c'est-à-dire l'avant-dernière barre, pour être sûr que l'avant-dernière barre a déjà fermé et qu'il n'y aura pas d'autre fermeture... Je veux éviter que la dernière mesure zéro ne soit pas réenregistrée.

Voilà donc le message de l'ordonnance :

ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0);

C'EST OOP :

double OOP = fastMa + buyHear * pt;             // Получаем значение цны открытия
Comment cela est-il possible ?
Dossiers :
test_ma_1.mq4  9 kb
 
hoz:

Cela fait maintenant 4 jours que je me bats, et je n'arrive pas à mettre en œuvre une chose apparemment simple. J'ai déjà fait des choses similaires avec différents indicateurs et chandeliers. Je ne peux pas le faire avec une montre-bracelet.

L'essence est primitive ! Dès que le prix s'approche du masque d'une certaine période à une certaine distance de i_thresholdFromMa (dans cet EA il n'y en a qu'un seul !), un pendentif est mis en place. J'ai déjà supprimé toutes les fonctions et tous les filtres qui étaient disponibles auparavant.

Voici la fonction Acheter :

Nous pouvons voir que l'OrderSend() a un prix d'ouverture égal à la somme des variables fastMa + buyHear * pt

Dans la capture d'écran, nous pouvons voir que ce prix n'existe pas !

Vous pouvez également voir qu'il n'y a pas d'entrées où le prix a touché le fastMa (marqueur rouge).

J'ai délibérément pris le 1er tampon, c'est-à-dire l'avant-dernière barre, pour être sûr que l'avant-dernière barre a déjà fermé et qu'il n'y aura pas d'autre fermeture... Je voulais éviter que la dernière 0ème mesure soit réenregistrée.

Voici donc le message de l'ordre :

A OOP :

Comment cela est-il possible ?

Vous n'allez toujours pas apporter les journaux ?
 
Vinin:

Vous n'allez toujours pas me donner les logs ?


Voici ce qu'il y a dans les journaux :

2013.02.06 17:54:05     2011.01.13 07:00  test_Ma_1 EURUSD,H1: open #3 buy stop 0.10 EURUSD at 1.31074 ok
2013.02.06 17:54:05     2011.01.13 07:00  test_Ma_1 EURUSD,H1: i_thresholdFromMa * pt = 0.0005
2013.02.06 17:54:05     2011.01.13 07:00  test_Ma_1 EURUSD,H1: Цена покупки = 1.3107
2013.02.06 17:54:05     2011.01.13 07:00  test_Ma_1 EURUSD,H1: fastMa = 1.3097
2013.02.06 17:54:05     2011.01.13 07:00  test_Ma_1 EURUSD,H1: Ask = 1.3099
2013.02.06 17:54:05     2011.01.13 07:00  test_Ma_1 EURUSD,H1: Bid = 1.3099
2013.02.06 17:54:05     2011.01.12 14:32  Tester: order #2, buy 0.10 EURUSD is opened at 1.29876
2013.02.06 17:54:05     2011.01.12 14:00  test_Ma_1 EURUSD,H1: open #2 buy stop 0.10 EURUSD at 1.29876 ok
2013.02.06 17:54:05     2011.01.12 14:00  test_Ma_1 EURUSD,H1: i_thresholdFromMa * pt = 0.0005
2013.02.06 17:54:05     2011.01.12 14:00  test_Ma_1 EURUSD,H1: Цена покупки = 1.2988
2013.02.06 17:54:05     2011.01.12 14:00  test_Ma_1 EURUSD,H1: fastMa = 1.2978
2013.02.06 17:54:05     2011.01.12 14:00  test_Ma_1 EURUSD,H1: Ask = 1.2978
2013.02.06 17:54:05     2011.01.12 14:00  test_Ma_1 EURUSD,H1: Bid = 1.2978
2013.02.06 17:54:05     2011.01.12 12:11  Tester: order #1, buy 0.10 EURUSD is opened at 1.29953
2013.02.06 17:54:05     2011.01.12 12:00  test_Ma_1 EURUSD,H1: open #1 buy stop 0.10 EURUSD at 1.29953 ok
2013.02.06 17:54:05     2011.01.12 12:00  test_Ma_1 EURUSD,H1: i_thresholdFromMa * pt = 0.0005
2013.02.06 17:54:05     2011.01.12 12:00  test_Ma_1 EURUSD,H1: Цена покупки = 1.2995
2013.02.06 17:54:05     2011.01.12 12:00  test_Ma_1 EURUSD,H1: fastMa = 1.2985
2013.02.06 17:54:05     2011.01.12 12:00  test_Ma_1 EURUSD,H1: Ask = 1.2987
2013.02.06 17:54:05     2011.01.12 12:00  test_Ma_1 EURUSD,H1: Bid = 1.2986
2013.02.06 17:54:04     test_Ma_1 inputs: i_TF=0; i_fastMaPeriod=10; i_magic=3333021; i_thresholdFromMa=5; buyHear=10; SellHear=10; 

C'est-à-dire que si vous croyez les journaux, l'achat est là où il devrait être. Si vous regardez la capture d'écran, il n'y est pas du tout... La capture d'écran ci-dessus montre que l'ordre en attente est au mauvais endroit. 10 de fastMa n'est même pas proche...

 

Bonjour, Victor ! Il s'ouvre pour moi, mais il fuit. Et ça s'ouvre quand je modifie un peu une ligne :

   if ((ND(OOP) - Ask) >= MathMax(g_stopLevel,g_spread))// Проверка цену открытия на стоплевел          
Ajoutez la même chose pour Sall ! Bonne chance !
 
borilunad:

Bonjour, Victor ! Il s'ouvre pour moi, mais il fuit. Il s'ouvre quand je modifie un peu une ligne :

Je voudrais ajouter la même chose pour SALL ! Bonne chance !


Bonjour, Boris. Eh bien, il ouvre aux mêmes endroits qu'avant. Là où il ne s'est pas ouvert, il ne s'ouvre toujours pas. Il fonctionne très bizarrement sur H1.

Je suis passé au M15 et j'ai réglé le masque sur MODE_OPEN sur la barre 0(zéro).

En général, si nous l'observons, les ordres en attente sont placés là où il faut (je veux dire à la M15 TF ), mais les ordres en attente ne sont pas placés là où ils devraient évidemment s'ouvrir. Voici une capture d'écran à titre d'exemple :

Un joint avec les pauses

borilunad:

Bonjour Victor ! Je l'ai ouvert, mais ça m'énerve.

Boris, et ce sera... Je veux dire, c'est seulement la première étape... Le chemin est long jusqu'à la ligne d'arrivée. Toutes les conditions viendront plus tard, et seront décidées progressivement. Pour l'instant, nous devons juste travailler sur les nuances actuelles.
 
hoz:


Bonjour Boris. Eh bien, il ouvre aux mêmes endroits qu'avant. Là où il ne s'est pas ouvert, il ne s'ouvre toujours pas. Il fonctionne très bizarrement sur H1.

Je suis passé à M15 et j'ai réglé le poignet sur MODE_OPEN sur 0(zéro) bar.

En général, si on l'observe, les ordres en attente sont placés là où il faut (je veux dire sur la M15 TF ), mais les ordres en attente ne sont pas placés aux endroits où ils devraient manifestement s'ouvrir. Par exemple, voici une capture d'écran :

Boris, et il va... Je veux dire, c'est seulement la première étape... Le chemin est long jusqu'à la ligne d'arrivée. Toutes les conditions viendront plus tard, et seront décidées progressivement. Pour l'instant, nous devons juste travailler sur les nuances actuelles.

Victor, nous devons étudier les indicateurs et les méthodes de leur utilisation dans l'EE. Il me semble que vous voulez quelque chose que vous ne savez pas comment mettre en œuvre.

Par ailleurs, il ne faut pas s'accrocher à des conditions très strictes, car le prix ne se comportera certainement pas comme vous le souhaitez dans la moitié des cas. Vous devez donc imaginer ce que vous pourriez faire dans le pire des cas.

Franchement, je ne comprends toujours pas pourquoi il est important pour vous d'entrer sur cette barre et pas sur l'autre. À mon avis, l'essentiel est d'identifier et d'utiliser la tendance qui s'est amorcée dans le temps, plutôt qu'un certain point d'entrée. Essayez et comparez différents Mashkeys, puis apprenez à les utiliser comme des filtres d'entrées indésirables plutôt que comme des signaux d'entrée, qui échouent souvent, et les autres indicateurs ne sont pas meilleurs !

 
Essayez de tracer la valeur de i_thresholdFromMa et de t et observez dans le testeur, et le résultat de la comparaison peut également y être tracé.
 
hoz:


Voici ce qu'il y a dans les journaux :

C'est-à-dire que si vous croyez les journaux, l'achat est là où il devrait être. Si vous regardez la capture d'écran, il n'y est pas du tout... Ci-dessus j'ai donné une capture d'écran, vous pouvez voir que l'ordre en attente est au mauvais endroit. Le 10 de FastMa est loin d'être là...


À en juger par le journal, la fonction OrderSend() place l'ordre correctement, au prix que vous lui avez transmis.
 

PapaYozh:



À en juger par le journal, la fonction OrderSend() place l'ordre correctement, au prix que vous lui transmettez

Oui !!!

10 de fastMa est loin d'être là...

Vous avez un ensemble de 100 pips.

Plus de capture d'écran, c'est correct.

 
r772ra:

Oui !!!

10 de fastMa est loin d'être là...

Vous avez réglé 100 p's.

une autre capture d'écran, c'est tout.


Par rapport au chiffre 4, il est de 10pp. Et sur le 5 chiffres, c'est 100pp. Qu'est-ce qu'il y a de mal à ça ?
 
PapaYozh:

À en juger par le journal, la fonction OrderSend() place l'ordre correctement, au prix que vous lui avez transmis.


A en juger par le journal, c'est correct. Mais si vous essayez de le faire dans le testeur avec les mêmes paramètres, les commandes ne sont pas placées correctement de façon périodique, ce que j'ai déjà dit. C'est ce que j'ai écrit. J'ai lu le journal, tout est beau et clair... En regardant la capture d'écran... (Quand je regarde le graphique, jeremarque que l'entrée d'achat est un peu plus basse que l'entrée d'achat... C'est contraire à la condition.

Mais il est également étrange que je n'ai pas remarqué cela sur le M5, MAIS il a été remarqué que certaines entrées sont manquées.

Raison: