Chiusura di mezzi lotti. - pagina 15

 
Sto usando questo? Accoppiandolo con "if(OpenOrdersThisPair(Symbol())>0)" sopra, questo dovrebbe mantenere gli EA separati da ogni coppia? Ho capito cosa stai dicendo però. Qualche suggerimento su come posso distinguere un trade che è stato dimezzato da uno che non lo è usando OrderOpenTime()? Un piccolo calcio nella giusta direzione...?

//+----------------------------------------------------------------------------------------------------------------------------------------+  
//| Check to see if any order open on this currency pair                                                                                   |
//+----------------------------------------------------------------------------------------------------------------------------------------+   

int OpenOrdersThisPair(string pair)
  {
   int total=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==pair) total++;
     }
   return(total);
  }
 
DomGilberto:
Sto usando questo? Abbinato a "if(OpenOrdersThisPair(Symbol())>0)" sopra, questo dovrebbe mantenere gli EA separati da ogni coppia?

No, supponiamo che tu abbia 2 EA in esecuzione e ognuno ha un ordine aperto, hai un 50:50 di possibilità che l'ultimo OrderSelected() dalla funzione OpenOrdersThisPair() sia quello sbagliato... la funzione ne restituirà uno ma potresti avere l'ordine sbagliato selezionato.
 
Perdonatemi, ma non capisco come questo sia vero? Mi sto assicurando che l'OrderSymbol()==coppia? Quindi l'EA pertinente che è attaccato a EURUSD, lo rileverebbe è l'orderselect su EURUSD?
 
Questo potrebbe risolvere il problema? Nel diario mi dice questo? Che ne dite di "OrderSymbol()==OrderSymbol()" lol? se è QUESTO simbolo... non so se è da ritardati o no...

   if(OpenOrdersThisPair(Symbol())>0) //If there is a trade open = do below, which ever is applicable.
     {
     if(OrderSelect(OrderTicket(),SELECT_BY_TICKET, MODE_TRADES)==True)
         {   
         Print("The Symbol is: ", OrderSymbol());  
         }
         
         if(OrderType()==OP_BUY && OrderOpenPrice() > OrderStopLoss() && OrderSymbol()==OrderSymbol())
               {
               CloseHalfOrder(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
               }

         if(OrderType()==OP_SELL && OrderStopLoss() > OrderOpenPrice() && OrderSymbol()==OrderSymbol()) // lol? If this symbol is, this symbol...
               {
               CloseHalfOrder1(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
               }
            
2013.08.08 18:51:21	2010.02.08 01:00  Trend Fishing 3 Exits GBPJPY,H1: The Symbol is: GBPJPY

 

E se confrontassi l'OrderCloseTime() e l'OrderOpenTime()?

Sicuramente questo sarebbe il modo MIGLIORE per fare ciò che voglio? In questo modo posso aggiungere tutte le funzioni OrderClose che voglio? Dopo tutto, potrei semplicemente selezionare il trade nella cronologia che ha lo stesso OrderOpenTime() dell'attuale "OP_BUY", ma se OrderCloseTime() > OrderOpenTime(), allora questo fermerebbe OrderClose(), chiudendo continuamente a metà!?!

Qualcuno per favore mi dica che ho qualcosa su cui lavorare qui :( haha.

 
DomGilberto:
Perdonami, ma non capisco come questo sia vero? Mi sto assicurando che l'OrderSymbol()==coppia? Quindi l'EA pertinente che è collegato a EURUSD, lo rileverebbe è l'ordine selezionato su EURUSD?

Prima fai OrderSelect() . . . poi controlli . . .

if(OrderSymbol()==pair) total++;

. . . e questo va bene per quella funzione, se i simboli non corrispondono non incrementi il conteggio . . . ma significa comunque che l'ultimo Ordine selezionato non era per il simbolo su cui stai lavorando.

Hai bisogno di un ulteriore ciclo e trovare un ordine valido e poi uscire dal ciclo . . . allora hai l'ordine corretto selezionato.

 
Sono confuso, ho testato il mio EA su 16 coppie diverse, simultaneamente questa settimana e non ha mai selezionato quella sbagliata :s? Mi manca qualcosa?
 
DomGilberto:
Sono confuso, ho testato il mio EA su 16 coppie diverse, simultaneamente questa settimana e non ha mai selezionato quella sbagliata :s? Mi manca qualcosa?
Per quanto posso vedere sembra possibile che possa selezionare l'ordine sbagliato, io lo sistemerei per essere sicuro piuttosto che rischiare. Controlla il tuo codice, se non può succedere allora non hai bisogno di sistemarlo.
 

DomGilberto:
I thought that too - It says I need OrderSelect() before using OrderType, but it works? I only ever have one order open at any given time...

I can't think of how to use OrderOpenTime() to my advantage and stop CloseHalfOrder being called every time...

L'EA chiude parzialmente l'ordine, l'EA ha bisogno di sapere quale ordine non deve chiudere nuovamente, quindi ottenere OrderOpenTime() prima di chiudere parzialmente. Codifica l'EA per non chiudere nuovamente gli ordini parziali su quella coppia di valute con lo stesso OrderOpenTime().

 
SDC:

L'EA chiude parzialmente l'ordine, l'EA ha bisogno di sapere quale ordine non deve chiudere nuovamente, quindi ottenere OrderOpenTime() prima di chiudere parzialmente. Codifica l'EA per non chiudere nuovamente gli ordini parziali su quella coppia di valute con lo stesso OrderOpenTime().


Sì, sto iniziando ad arrivarci ora - presumo di dover fare un confronto con i trade che hanno chiuso nella storia sullo stesso OrderSymbol()?

Il problema che ho però; sto cercando di chiudere parzialmente lo stesso "OP_BUY" o "OP_SELL" fino a 4 volte a prezzi diversi... Penso che la domanda che dovrei fare è: posso ottenere un modo in cui ho una regola per cui TUTTE le chiusure parziali (di qualsiasi lotto e prezzo su una data operazione) si chiuderanno solo parzialmente una volta ai loro parametri predefiniti "OrderClose()" impostati...

Il modo in cui sto cercando di farlo ora, confrontando OrderOpenTime(), funzionerà essenzialmente solo una volta, e limiterà qualsiasi altro tipo di funzione OrderClose()... Voglio trovare un modo in cui posso avere una regola applicata a 4 funzioni OrderClose()... (se questo ha senso?)

So che la gente suggerisce di aprire 4 ordini, ma senza andare troppo in profondità, è meno efficiente per me farlo in questo modo.