Comment créer un tableau de nombres magiques ? - page 3

 
Je voudrais un numéro distinct pour les ordres d'achat et les ordres de vente, est-ce possible ?
 
7bit:
idée : vous pourriez utiliser toujours le même nombre magique comme d'habitude pour le rendre compatible avec tout ce qui utilise des nombres magiques, mais aussi le combiner avec la chaîne de commentaire en incluant un nombre dans le commentaire qui est unique pour chaque paire de transactions. Vous pourriez alors trouver l'autre transaction de chaque paire de transactions en recherchant simplement une transaction avec le même nombre magique et le même commentaire.

Comment trouver un ordre par commentaire et numéro magique ?

J'ai 15 déclencheurs

Je ne veux pas d'un standard, disons TP 200, SL 300.

chaque paire de devises aura un TP et SL différent selon les statistiques du trigger

Si un déclencheur à forte probabilité se présente, je veux l'identifier et prendre des mesures.

trigger1 eur/usd 100 prob : 94%, usd/jpy 300 prob:74% eur/jpy 200 prob.100%.

si le trigger 1 a été négocié pour l'une des paires eur/usd, il n'y a plus de négociation pour cette paire pour ce trigger

je veux toujours trader pour le trigger2 trigger3 et (trigger1 juste une paire différente)

 

y pas

int MagicNoBuy  = 12345;
int MagicNoSell = 67890;

OrderSend(Symbol(),OP_BUY,1,Ask,......,MagicNoBuy ,.,..);
OrderSend(Symbol(),OP_SELL,1,Bid,......,MagicNoSell,.,..);
 
vous n'avez pas besoin de magie séparée pour l'achat et la vente, vous pouvez facilement les filtrer avec OrderType()
 
7bit:
vous n'avez pas besoin de magie séparée pour l'achat et la vente, vous pouvez facilement les filtrer avec OrderType()


merci pour votre aide

 
7bit:
vous n'avez pas besoin de magie séparée pour l'achat et la vente, vous pouvez facilement les filtrer avec OrderType()
et vous pouvez filtrer les paires de devises avec OrderSymbol()
for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
    OrderSelect(pos, SELECT_BY_POS)             // Only my orders w/
&&  OrderMagicNumber() == Magic.Number          // my magic number
&&  OrderSymbol()      == Symbol() ){           // and period and symbol
 

J'utilise une GAMME de nombres magiques, afin de pouvoir utiliser différentes méthodes SL pour les transactions.

Par exemple : MAGIC_NUMBER_BASE = 1234500

& j'utilise ensuite un 'offset' de 0-99 pour regrouper mes trades par type de SL. J'utilise ensuite un code comme

      if(OrderMagicNumber() < MY_MAGIC_LO || OrderMagicNumber() > MY_MAGIC_HI)

pour trouver mes trades (en fait, ce code sert à EXCLURE mes trades !)

 
sxTed:

Jon cette fonction émet des numéros uniques

//+------------------------------------------------------------------+
//| Function..: SequenceNumber                                       |
//| Purpose...: Generate a sequential number.                        |
//| Returns...: dSeqNum - next sequence number.                      |
//| Notes.....: MT4 keeps the value of the global variable at the    |
//|             client terminal for 4 weeks since the last access.   |                        
//|             Use SequenceNumber() to generate a unique identity   |
//|             for each order (and passed via parameter <magic>     |
//|             number, or converted to a string and passed via the  |
//|             parameter <comment> to the OrderSend() function) as  |
//|             the trade servers of some brokers do modify the      |
//|             ticket number of a pending order when it changes to  |
//|             a market order.                                      |
//|             The same sequence number could, for example, be used |
//|             to identify the two positions of a straddle order.   |
//|             ******************************************************
//|             * If the expert has to close partial lots, then MT4  *
//|             * retains in the new order the contents of the       *
//|             * OrderMagicNumber() but loses OrderComment().       *
//|             ******************************************************
//| Sample....: string sNumber=DoubleToStr(SequenceNumber(),0);      |
//|             if(OrderSend("EURUSD",OP_BUY,1,Ask,3,Ask-25*Point,   |
//|                          Ask+25*Point,sNumber,16384,0,Green) > 0)|
//|                OrderSend("EURUSD",OP_BUY,1,Ask,3,Ask-25*Point,   |
//|                          Ask+65*Point,sNumber,16384,0,Green);    |
//+------------------------------------------------------------------+
double SequenceNumber() {
  double dSeqNum=1, d;
  string sName="SequenceNumber";

  while(GlobalVariableCheck("Semaphore")) d+=0;
  GlobalVariableSet("Semaphore",1);
  if(GlobalVariableCheck(sName)) dSeqNum=GlobalVariableGet(sName)+1;
  GlobalVariableSet(sName,dSeqNum);
  GlobalVariableDel("Semaphore");
  return(dSeqNum);
}

Merci, j'ai enfin pu revoir ce fil de discussion et j'essaie ceci. Je ne comprends pas l'échantillon. Pourquoi OrderSend > 0, puis effectuer un autre OrderSend ? S'il vous plaît aider !

J'ai réalisé que le numéro de séquence augmente avec chaque ordre et que je pouvais l'attribuer à un commentaire ou à un numéro magique, ce qui est génial. La meilleure partie est qu'ils restent dans le système même après que j'ai redémarré MT4.

Cependant, comment puis-je les identifier et les comparer plus tard ?


Comment chaque série d'ordres est placée :

string sNumber=DoubleToStr(SequenceNumber(),0);
int ticket=OrderSend(Symbol(),OP_BUY,LotSize,MarketInfo(Symbol 1,MODE_ASK),3,0,0,sNumber,12345,0,Green)
&   ticket=OrderSend(Symbol(),OP_SELL,LotSize,MarketInfo(Symbol 2,MODE_ASK),3,0,0,sNumber,12345,0,Red);


i.e. je trade en paire, Ordre 1 & 2, puis Ordre 3 & 4, et ainsi de suite....

Ordre 1 - Séquence #1

Ordre 2 - Séquence n°2

Ordre 3 - Séquence #3

Ordre 4 - Séquence #4

Ordre 5 - Séquence #5

Ordre 6 - Séquence #6


Maintenant qu'ils ont un numéro de séquence unique qui s'incrémente,

Comment les sélectionner et les comparer ?

Je voudrais sélectionner et comparer

Ordre 1 & 2, puis Ordre 3 & 4, puis Ordre 5 & 6, et ainsi de suite ...


Merci d'avance !

 

... Suite de la réponse ci-dessus


Ou peut-être pourrais-je contrôler quand le numéro de séquence augmente ?

Par exemple, après chaque série d'ordres ? Par exemple, après 2 ordres.

Ainsi, lors de la sélection et de la comparaison, je pourrais juste sélectionner les commandes ayant le même numéro de séquence.

Comment coder cela ?


Merci !

 
Pourquoi ne pas utiliser le numéro de ticket unique que vous obtenez lorsque vous utilisez ordersend()?

Enregistrez-les dans un Array[][]


exemple.


Commerce 1
Tableau de tickets [1] [0] = Ticket0 ;
TicketArray [1] [1] = Ticket1 ;

Négociation 2
Tableau de tickets [2] [0]
Tableau de tickets [2] [1] = Ticket1

Commerce 3
Tableau de tickets [3] [0]
Tableau de tickets [3] [1]

... Et ainsi de suite