[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 60

 

à artmedia70:

L'ordre est déjà fermé en ce qui concerne cette condition.

 

à Demlin:

Eh bien, je peux le voir disparaître de Trading.

 
demlin:

Bonjour à tous !

L'indicateur dessine une ligne qui, le jour suivant, s'écarte des barres et s'accroche sur le côté. Lorsque je redémarre l'indicateur, il dessine à nouveau normalement. Qu'est-ce que ça peut être ?


L'indicateur est de travers. Nous devons le refaire.
 
Vinin:

L'indicateur est de travers. Nous devons le refaire.
Je comprends, mais quel pourrait être le problème ?
 
Solree:

à Demlin:

Eh bien, je peux le voir disparaître de Trading.

Pourquoi ne pas organiser une recherche des commandes à partir de l'historique ? Quand vous trouvez le bon ordre, vous comptez le temps de fermeture.
 

à delmin:

Afin de ne pas faire une telle chose, j'utilise un ticket. En général, nous pouvons réécrire la logique (au moins, nous pouvons écrire la valeur retournée de OrderClose() dans bool et ensuite la vérifier). Je suis juste curieux de savoir pourquoi il ne renvoie pas la bonne valeur pour un ordre fermé et je ne veux pas surcharger le programme avec des actions inutiles. J'espère que vous m'aiderez :)

 
Solree:

à delmin:

Afin de ne pas faire une telle chose, j'utilise un ticket. En fait, nous pouvons réécrire la logique (au moins, nous pouvons écrire la valeur retournée de OrderClose() dans bool et ensuite la vérifier). Je suis juste curieux de savoir pourquoi il ne renvoie pas la bonne valeur pour un ordre fermé et je ne veux pas surcharger le programme avec des actions inutiles. J'espère que vous m'aiderez :)

J'ai déjà répondu à votre question : vous devez vérifier l'heure de clôture d'un ordre par ticket juste après sa sélection. Seulement pour les ordres fermés, il est supérieur à zéro. Mais dans votre cas, la vérification de l'heure de clôture passe après le blocage de la clôture des autres ordres, et vous, respectivement, vérifiez l'heure de clôture des autres ordres. En général, vous obtenez des réponses aussi complètes que la quantité de code que vous avez montrée.
 
demlin:
Je comprends, mais quel pourrait être le problème ?

Vous devez regarder le code, sinon seuls les télépathes peuvent aider.
 
    if (tempWho == 0 && pos != -1)
    {
        if (OrderSelect(pos, SELECT_BY_TICKET))
        {
            if (OrderType() == OP_BUY)
            {
                if (who != 1)
                {
                    while(!OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), 0))
                        Sleep(3000);
                    
                    pos = -1;
                }
            }
            else if (OrderType() == OP_SELL)
            {
                if (who != 2)
                {
                    while(!OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), 0))
                        Sleep(3000);
                    
                    pos = -1;
                }
            }
            
            Alert(OrderCloseTime());
            
            if (OrderCloseTime() != 0)
            {
                if (OrderProfit() < 0)
                {
                    if (tempCount != 0)
                    {
                        tempLot += lot;
                        tempCount--;
                    }
                    else
                    {
                        tempLot = lot;
                        tempCount = countLot;
                    }
                }
                else
                {
                    tempLot = lot;
                    tempCount = countLot;
                }
            }
        }
    }

Voici le code du bloc où le contrôleur de l'heure de fermeture fait tout le travail.

Le moment où l'on appelle la fonction n'a-t-il pas d'importance ? L'essentiel est d'avoir un ordre fermé. Ou pas... ?

Z.Y. l'a déjà modifié pour qu'il soit plus rentable en termes de performance. Mais je me demande toujours ce que je fais de mal avec OrderCloseTime().

 
Solree:

Voici le code pour le bloc où le contrôleur de l'heure de fermeture fait tout le travail.

Le moment où l'on appelle la fonction n'a-t-il pas d'importance ? L'essentiel est d'avoir un ordre fermé. Ou pas... ?

Z.Y. l'a déjà modifié pour le rendre plus rentable en termes de productivité. Mais je me demande encore ce que je fais de mal avec OrderCloseTime().

Vous feriez mieux d'écrire ce que vous voulez atteindre.