ouvrir des ordres avec un écart de 10pip - page 3

 
    &&  OrderMagicNumber()  == 0           // my magic number

0 est le nombre magique par défaut, de sorte que votre condition n'exclura pas les transactions ouvertes manuellement.

         Tip   =OrderType();                    // Type of selected order
         Price =OrderOpenPrice();               // Price of selected order
         SL    =OrderStopLoss();                // SL of selected order 
         TP    =OrderTakeProfit();               // TP of selected order
         Lot   =OrderLots();                     // Amount of lots

Vous stockez ici les valeurs du dernier ordre sélectionné. Si vous voulez stocker les valeurs delastTicket, vous devrez le re=sélectionner.

Pourquoi bouclez-vous sur les ordres pour trouver le dernier ordre, vous ne faites rien avec le résultat ?

Vos deux blocs de code sont totalement indépendants l'un de l'autre.

 
GumRai:

0 est le nombre magique par défaut, de sorte que votre condition n'exclura pas les transactions ouvertes manuellement.

Vous stockez ici les valeurs du dernier ordre sélectionné. Si vous voulez stocker les valeurs delastTicket, vous devrez le re=sélectionner.

Pourquoi bouclez-vous sur les ordres pour trouver le dernier ordre, vous ne faites rien avec le résultat ?

Vos deux blocs de code sont totalement indépendants l'un de l'autre.




GumRai: merci pour votre réponse, selon vos points de repère

OrderMagicNumber() == 0 ------------j'ai mis 0 car je testais mon code donc je l'ai posté sans la valeur numéro, merci pour les recommandations et corrections

OrderMagicNumber() == 1234

lastTicket je l'ai placé à mon ordersend


lastTicket=OrderSend(Symbol(),OP_BUY,mylot(),Ask,0,0,0, "Mon Commentaire",magic,0,Green) ;

if(lastTicket>0)
{
bool b=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+(StopLoss*Point),Digits),NormalizeDouble(Ask-(TakeProfit*Point),Digits),0,Red) ;
}



mais je ne sais pas si j'ai bien compris, parce que tout ce que je veux que mon ea fasse, c'est placer plusieurs types d'ordres de vente, donc je veux que l'ea obtienne le prix ouvert le plus élevé dans le symbole du graphique actuel et ouvre 10pip au-dessus de celui-ci. et que toute transaction en dessous du dernier ordre actuel soit rejetée.

Pour obtenir ce que je veux, je procède étape par étape. J'essaie d'abord d'obtenir le dernier ordre ouvert, en suivant la procédure que WHRoeder m'a donnée.

donc ma boucle à travers l'ordre n'est pas seulement de définir 1 commerce ouvert, mais de multiples commerce ouvert, c'est pourquoi je veux obtenir le dernier ticket ouvert haut. s'il vous plaît GumRai si je me trompe dans mon orderselected me mettre à travers merci pour la volonté d'aider.



// Orders accounting 

{
     datetime lastTime  = 0;
    int      lastTicket = -1; // None open.
    for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
        OrderSelect(0, SELECT_BY_POS,MODE_TRADES)                 // Only my orders w/
    &&  OrderMagicNumber()  == 0           // my magic number
    &&  OrderSymbol()       == Symbol()                 // and my pair.
    &&  OrderOpenTime()     >=  lastTime
    &&  OrderTicket()       >   lastTicket
    ){
      lastTime   = OrderOpenTime();
      lastTicket = OrderTicket();
    }
 
}

         Tip   =OrderType();                    // Type of selected order
         Price =OrderOpenPrice();               // Price of selected order
         SL    =OrderStopLoss();                // SL of selected order 
         TP    =OrderTakeProfit();               // TP of selected order
         Lot   =OrderLots();                     // Amount of lots
   
////////////////////////////////////////////////////////////////////////////////////////////////////////
//---------------------------------------- 5 ------------------------------------//
/*this is the poinnt where main formular or trading system EA-MA is based*/
//---------------------------------------------------------------------------
// Trading criteria
       
rsi1=iRSI(NULL,0,14,PRICE_CLOSE,1);
rsi2=iRSI(NULL,0,14,PRICE_CLOSE,0); 
     
 if(rsi2>70 && Ask > High[1] + (10*pips2dbl) )
  {
      Opn_S=true;
     } 
     else 
   if(rsi2>70 && Ask < High[1] + (10*pips2dbl)) 
      {
      Opn_S=false;
     }


lastTicket=OrderSend(Symbol(),OP_BUY,mylot(),Ask,0,0,0,"My Comment",magic,0,Green);

         if(lastTicket>0)
     {
      bool b=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+(StopLoss*Point),Digits),
                         NormalizeDouble(Ask-(TakeProfit*Point),Digits),0,Red);
     }
 

Essayez de ne pas inclure de longues lignes de code dans vos messages, cela les rend difficiles à lire.

   if(lastTicket>0)
     {
      bool b=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+(StopLoss*Point),Digits),
                         NormalizeDouble(Ask-(TakeProfit*Point),Digits),0,Red);
     }

Rien ne vous empêche d'utiliser 2 lignes comme ci-dessus.

 
dan100:

WHRoeder ce code est tout dans mon calcul d'exécution d'ordre s'il vous plaît je demande de m'aider à modifier mes erreurs et me mettre à travers. merci pour votre volonté d'aider



dan100:

WHRoeder ce code est tout dans mon calcul d'exécution d'ordre s'il vous plaît je demande de m'aider à modifier mes erreurs et de me mettre à travers. merci pour votre volonté d'aider






GumRai : merci pour vos corrections, mais ai-je bien compris le code ci-dessus ?

 
dan100: J'attends toujours votre aide.WHRoeder
Vous allez attendre longtemps.
  1. Je t' ai dit ce que tu devais faire, tu ne l'as pas fait.
  2. Je t' ai rappelé ici que tu ne l'avais toujours pas fait.
  3. Et maintenant vous demandez à nouveau mais vous ne l'avez toujours pas fait.
 
WHRoeder:
dan100: j'attends toujours votre aide.WHRoeder
Vous allez attendre longtemps.
  1. Je vous ai dit ce que vous deviez faire, vous ne l'avez pas fait.
  2. Je vous ai rappelé ici que vous ne l'aviez toujours pas fait.
  3. Et maintenant vous demandez à nouveau mais vous ne l'avez toujours pas fait.



WHRoeder je ne comprenais plus c'est toute la partie logique de mon ea et c'est aussi là que se trouve ma connaissance du code pour l'instant.je ne sais plus quoi présenter, après tout

je ne sais plus quoi présenter, après tout c'est pour cela que je suis ici pour demander de l'aide. mais si vous pouvez me permettre de vous envoyer le code entier de l'ea je serai bien s'il vous plaît, s'il vous plaît WHRoeder s'il vous plaît aidez moi je sais que vous le pouvez.j'attends votre approbation et le lien pour envoyer l'ea entier

J'attends votre approbation et votre lien pour envoyer les codes ea complets.


en outre formellement avant que vous me donniez cette formule......

  1. Trouvez le trade ouvert avec le prix ouvert le plus élevé.
  2. Si le marché n'a pas atteint le prix + 10 pips, retourner
  3. ouvrir un nouvel ordre.


Je n'ai testé le dernier prix qu'avec la moyenne mobile croisant le prix ASK ou le prix BID et j'ai découvert par la suite qu'il ouvrait parfois des ordres en dessous du prix élevé du graphique actuel, c'est donc ce que je veux corriger.

Je n'ai pas de code pour tester le haut, il y a juste la moyenne mobile, le Ask et le 10point, donc pas de code à utiliser pour les tests.

 
dan100:

GumRai merci pour vos corrections. Mais ai-je bien compris le code ci-dessus ?

Tout d'abord, ce que vous essayez de faire n'est pas clair.

Vous dites

"mais je ne sais pas si je l'ai bien compris parce que tout ce que je veux que mon ea fasse, c'est placer plusieurs types d'ordres de vente, donc je veux que l'ea obtienne le prix ouvert le plus élevé dans le symbole actuel du graphique et ouvre 10pip au-dessus de lui. et que toute transaction en dessous du dernier ordre actuel soit rejetée.

Pour obtenir ce que je veux, j'ai procédé étape par étape. J'ai d'abord essayé d'obtenir le dernier ordre ouvert, en suivant la procédure queWHRoederm'a donnée."

Alors, qu'est-ce que vous voulez trouver ?

L'ordre avec le prix ouvert le plus élevé ?

ou

L'ordre qui a été ouvert le plus récemment ?

Comment peut-on vous aider si vous êtes incapable de décrire ce que vous voulez ?

     datetime lastTime  = 0;
    int      lastTicket = -1; // None open.
    for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
        OrderSelect(0, SELECT_BY_POS,MODE_TRADES)                 // Only my orders w/
    &&  OrderMagicNumber()  == 0           // my magic number
    &&  OrderSymbol()       == Symbol()                 // and my pair.
    &&  OrderOpenTime()     >=  lastTime
    &&  OrderTicket()       >   lastTicket
    ){
      lastTime   = OrderOpenTime();
      lastTicket = OrderTicket();
    }

Ce code trouve le dernier ordre ouvert, mais il ne stocke le prix nulle part.

      
rsi1=iRSI(NULL,0,14,PRICE_CLOSE,1);
rsi2=iRSI(NULL,0,14,PRICE_CLOSE,0); 
     
 if(rsi2>70 && Ask > High[1] + (10*pips2dbl) )
  {
      Opn_S=true;
     } 
     else 
   if(rsi2>70 && Ask < High[1] + (10*pips2dbl)) 
      {
      Opn_S=false;
     }

Ici, vous donnez une valeur à Opn_S, mais vous ne faites rien avec.

   lastTicket=OrderSend(Symbol(),OP_BUY,mylot(),Ask,0,0,0,"My Comment",magic,0,Green);

Ici, il n'y a pas de conditions pour ouvrir un ordre et vous écrasez la valeur de lastTicket.

Votre code n'a aucune logique, c'est juste 3 sections de code qui n'ont aucun rapport entre elles.

 
GumRai merci encore pour vos indications et le résumé. ce que je veux trouver est

le prix ouvert le plus élevé dans le symbole graphique actuel et ouvrir 10pip au-dessus si c'est un achat/ouvrir 10pips en dessous si c'est une vente.

s'il vous plaît aidez-moi avec elle

 
dan100:
GumRai merci encore pour vos indications et le résumé. ce que je veux trouver est

le plus haut prix ouvert dans le symbole du graphique actuel

Aidez-moi, s'il vous plaît

Pourquoi avez-vous besoin d'aide ?

Si vous pouvez écrire du code pour trouver l'ordre avec le dernier OrderOpenTime (le plus élevé), il devrait être facile de trouver l'ordre avec le OrderOpenPrice le plus élevé.

C'est une simple substitution.

 
GumRai:

Pourquoi avez-vous besoin d'aide à ce sujet ?

Si vous pouvez écrire du code pour trouver l'ordre avec le dernier OrderOpenTime (le plus élevé), il devrait être facile de trouver l'ordre avec le OrderOpenPrice le plus élevé.

Il s'agit d'une simple substitution.



Oui, j'écris mes codes et j'en recherche certains, mais quand je ne vois pas le résultat souhaité, je cherche des solutions, même si je sais que je n'ai pas encore trouvé la moitié des erreurs.

Les erreurs sont parfois difficiles à résoudre, même si elles sont simples ou petites. S'il vous plaît, GumRai, aidez-moi, je vous en serai reconnaissant.

Raison: