Come creare una matrice di numeri magici? - pagina 3

 
Vorrei un numero separato per gli ordini di acquisto e gli ordini di vendita, è possibile?
 
7bit:
idea: si potrebbe usare sempre lo stesso numero magico come al solito per renderlo compatibile con tutto il resto che usa i numeri magici ma anche combinarlo con la stringa di commento includendo un numero nel commento che è unico per ogni coppia di trade. Potresti quindi trovare l'altro trade di ogni coppia di trade semplicemente cercando un trade con la stessa magia e lo stesso commento.

Come posso trovare un ordine per commento e numero magico?

Ho 15 trigger

non voglio uno standard, diciamo TP 200 SL 300

ogni coppia di valute avrà un diverso TP e SL a seconda delle statistiche del trigger

se arriva un trigger con maggiore probabilità, voglio identificarlo e agire

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

se il trigger 1 è stato negoziato per una delle coppie eur/usd, non c'è più trading per quella coppia per quel trigger

voglio ancora scambiare per trigger2 trigger3 e (trigger1 solo coppia diversa)

 

y non

int MagicNoBuy  = 12345;
int MagicNoSell = 67890;

OrderSend(Symbol(),OP_BUY,1,Ask,......,MagicNoBuy ,.,..);
OrderSend(Symbol(),OP_SELL,1,Bid,......,MagicNoSell,.,..);
 
non avete bisogno di magia separata per comprare e vendere, potete facilmente filtrarli con OrderType()
 
7bit:
non avete bisogno di magia separata per comprare e vendere, potete facilmente filtrarli con OrderType()


grazie per il tuo aiuto

 
7bit:
non avete bisogno di magia separata per comprare e vendere, potete facilmente filtrarli con OrderType()
e si possono filtrare le coppie di valute 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
 

Io uso un RANGE di numeri magici, così posso usare diversi metodi SL per i trade.

ad esempio MAGIC_NUMBER_BASE = 1234500

& poi uso 'offset' di 0-99 per raggruppare i miei trade per tipo di SL. Poi uso un codice come

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

per trovare le mie compravendite (in realtà quel codice è per ESCLUDERE le mie compravendite!)

 
sxTed:

Jon questa funzione emette numeri unici

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

Grazie, finalmente riesco a rivisitare questo thread e sta provando questo. Non capisco il campione. Perché OrderSend > 0, quindi eseguire un altro OrderSend? Si prega di aiutare!

Ho capito che il numero di sequenza aumenta con ogni ordine e che posso assegnarlo a un commento o a un numero magico, il che è fantastico. La parte migliore è che rimangono nel sistema anche dopo aver riavviato MT4.

Tuttavia, come faccio a identificarli e confrontarli in seguito?


Come ogni serie di ordini viene piazzata:

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


cioè faccio trading in coppia, ordine 1 & 2, poi ordine 3 & 4, e così via....

Ordine 1 - Sequenza #1

Ordine 2 - Sequenza #2

Ordine 3 - Sequenza #3

Ordine 4 - Sequenza #4

Ordine 5 - Sequenza #5

Ordine 6 - Sequenza #6


Ora che hanno un numero di sequenza unico che aumenta,

Come faccio a selezionarli e confrontarli?

Vorrei selezionare e confrontare

Ordine 1 & 2, poi Ordine 3 & 4, poi Ordine 5 & 6, e così via ...


Grazie in anticipo!

 

... Continua dalla risposta precedente


O forse potrei controllare quando il numero di sequenza aumenta?

Cioè dopo ogni serie di ordini? Come dopo 2 ordini.

Così quando si seleziona e si confronta, potrei solo selezionare gli ordini con lo stesso numero di sequenza.

Come codificare questo?


Grazie!

 
Perché non usare il numero di biglietto unico che si ottiene quando si usa ordersend()?

Salvare questi in un Array[][]


esempio.


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

Scambio 2
TicketArray [2] [0]
TicketArray [2] [1]

Scambio 3
TicketArray [3] [0]
TicketArray [3] [1]

... E così via