¿Cómo crear una matriz de números mágicos? - página 3

 
Me gustaría tener un número separado para las órdenes de compra y de venta, ¿es posible?
 
7bit:
idea: se podría utilizar siempre el mismo número mágico como de costumbre para que sea compatible con todo lo que utiliza números mágicos, pero también combinarlo con la cadena de comentarios mediante la inclusión de un número en el comentario que es único para cada par de operaciones. De este modo, se podría encontrar la otra operación de cada par de operaciones simplemente buscando una operación con la misma magia y comentario.

¿Cómo puedo encontrar una orden por comentario y número mágico?

Tengo 15 disparadores

no quiero un estándar digamos TP 200 SL 300

cada par de divisas tendrá un TP y un SL diferentes dependiendo de las estadísticas del disparador

si un disparador de alta probabilidad viene quiero identificarlo y tomar acción

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

si el trigger 1 se negocia para uno de los pares eur/usd no se negocia más para ese par para ese trigger

todavía quiero negociar para el trigger2 trigger3 y (trigger1 sólo par diferente)

 

y no

int MagicNoBuy  = 12345;
int MagicNoSell = 67890;

OrderSend(Symbol(),OP_BUY,1,Ask,......,MagicNoBuy ,.,..);
OrderSend(Symbol(),OP_SELL,1,Bid,......,MagicNoSell,.,..);
 
no necesitas magia separada para la compra y la venta, puedes filtrarlas fácilmente con OrderType()
 
7bit:
no necesitas magia separada para la compra y la venta, puedes filtrarlas fácilmente con OrderType()


gracias por tu ayuda

 
7bit:
no necesitas magia separada para la compra y la venta, puedes filtrarlas fácilmente con OrderType()
y puedes filtrar los pares de divisas con 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
 

Utilizo un RANGO de números mágicos, para poder utilizar diferentes métodos de SL para las operaciones.

Por ejemplo, MAGIC_NUMBER_BASE = 1234500

& luego uso 'offset' de 0-99 para agrupar mis operaciones por tipo de SL. Luego uso un código como

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

para encontrar mis operaciones (¡en realidad ese código es para EXCLUIR mis operaciones!)

 
sxTed:

Jon esta función emite números únicos

//+------------------------------------------------------------------+
//| 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);
}

Gracias, por fin puedo volver a visitar este hilo y está probando esto. No entiendo la Muestra. ¿Por qué OrderSend > 0, y luego realizar otro OrderSend? ¡Por favor, ayuda!

Me he dado cuenta de que el número de secuencia se incrementa con cada orden y que puedo asignarlo al comentario o al número mágico, lo cual es genial. Lo mejor es que permanecen en el sistema incluso después de reiniciar MT4.

Sin embargo, ¿cómo puedo identificar y comparar más tarde?


Cómo se coloca cada conjunto de órdenes:

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);


Es decir, yo comercio en el par, Orden 1 y 2, luego Orden 3 y 4, y así sucesivamente....

Orden 1 - Secuencia #1

Orden 2 - Secuencia #2

Orden 3 - Secuencia #3

Orden 4 - Secuencia #4

Orden 5 - Secuencia #5

Orden 6 - Secuencia #6


Ahora que tienen un número de secuencia único que se incrementa,

¿Cómo las selecciono y comparo?

Me gustaría seleccionar y comparar

Orden 1 y 2, luego Orden 3 y 4, luego Orden 5 y 6, y así sucesivamente ...


Gracias de antemano.

 

... Continuación de la respuesta anterior


¿O tal vez podría controlar cuándo se incrementa el número de secuencia?

¿Por ejemplo, después de cada conjunto de pedidos? Por ejemplo, después de 2 pedidos.

Así, al seleccionar y comparar, sólo podría seleccionar los pedidos con el mismo número de secuencia.

¿Cómo codificar eso?


Gracias.

 
¿Por qué no utilizar el número de ticket único que se obtiene cuando se utiliza ordersend()?

Guarda estos en un Array[][]


ejemplo.


Comercio 1
TicketArray [1] [0] = Ticket0;
TicketArray [1] [1] = Ticket1;

Operación 2
TicketArray [2] [0]
TicketArray [2] [1]

Comercio 3
TicketArray [3] [0]
TicketArray [3] [1]

... Y así sucesivamente