Chiusura di mezzi lotti. - pagina 14

 
Ottimo consiglio grazie! Proverò sicuramente a seguire questa strada - non ho un prezzo di take profit fisso in relazione a un valore di pip (cioè sempre 100 pip) Viene fatto in base a dove si trova il 60 EMA = stop loss e il TP fisso finale è 1:2 (quindi potrebbe essere qualsiasi valore di pip relativo alla distanza di 2x pip dello stop loss...) È un po' più difficile per me farlo per questo motivo...

Ultima domanda, la normalizzazione dei raddoppi di prezzo è davvero così cruciale... Non ne capisco lo scopo...?
 

Sì, può essere un problema con i doppi, OrderTakeProfit() OrderStopLoss() OrderLots() specialmente se fai dei calcoli su di essi. Ha colpito uno dei miei EA quando stavo facendo qualcosa di simile alla tua chiusura parziale degli ordini. Dai un'occhiata a questo thread https://www.mql5.com/en/forum/141034

 
Bene - l'ho fatto funzionare perfettamente... Il problema è che voglio allontanarmi da "If(OrderOpenPrice() > OrderStoploss())" per filtrare un trade che viene continuamente chiuso allo stesso prezzo...

Ho provato a scervellarmi ma non riesco a mettere giù la logica per farlo tramite l'OrderTicket() sul "OP_BUY" non appena viene attivato, e al numero OrderTicket() sulla posizione rimanente dopo che la metà è chiusa?

Una volta che l'OP_BUY è stato dimezzato in OrderClose() la posizione rimanente ha un numero di ticket diverso... Qualcuno può illuminarmi come faccio a confrontare i due in modo da poter dire a OrderClose() di fermarsi dopo che l'ha fatto una volta?
 
Pleasssssse - So di aver esaurito questo thread, ma questo è l'ultimo pezzo :)?

Ho tutta la menta e il set - Solo non capisco la logica nel confrontare ciò che ho scritto sopra.

Ho intenzione di fare un thread per aiutare gli altri dopo aver completato questo - sarebbe solo giusto!
 
Chiunque :(
 

Ti ho già detto come fare, prendi l'OrderOpenTime() del ticket che stai per chiudere. Dopo averlo chiuso in parte, fai di nuovo OrderSelect() e il ticket che ha lo stesso OrderOpenTime() è la parte rimanente dell'ordine chiuso in parte.

 

Ah sì - Scusa, devo averlo perso la prima volta!

Mi sono appena seduto e ci ho pensato, e faccio fatica a capirne la logica? Potresti darmi un'indicazione?

Al momento ho questo nella sezione "int Start()":

Ovviamente devo rimuovere la parte "OrderOpenPrice() > OrderStopLoss()), ma con cosa la sostituisco affinché il "CloseHalfOrder();" NON venga chiamato continuamente? Non riesco a mettere giù la logica (un po' lento oggi!) Sto facendo il confronto con il trade chiuso nella storia?

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

      if(OrderType()==OP_SELL && OrderStopLoss() > OrderOpenPrice())
         {
         CloseHalfOrder1(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
         }   
      
 
DomGilberto:

Ah, sì, scusa, devo essermelo perso la prima volta!

Mi sono appena seduto e ci ho riflettuto un po' su, e faccio fatica a capirne la logica? Potresti darmi un suggerimento?

Al momento ho questo nella sezione "int Start()":

Ovviamente devo rimuovere la parte "OrderOpenPrice() > OrderStopLoss()), ma con cosa la sostituisco in modo che il "CloseHalfOrder();" NON venga chiamato continuamente? Non riesco a mettere giù la logica (un po' lento oggi!) Sto facendo il confronto con il trade chiuso nella storia?

Nel punto che ho segnato nel tuo codice che ordine hai selezionato?

 if(OpenOrdersThisPair(Symbol())>0) //If there is a trade open = do below, which ever is applicable.
      {

      //  order currently selected is ??
 
      if(OrderType()==OP_BUY && OrderOpenPrice() > OrderStopLoss())
         {
         CloseHalfOrder(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
         }

      if(OrderType()==OP_SELL && OrderStopLoss() > OrderOpenPrice())
         {
         CloseHalfOrder1(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
         }   
      

È l'ordine corretto? Se è l'ordine corretto è un caso o un progetto?

 
L'ho pensato anch'io - dice che ho bisogno di OrderSelect() prima di usare OrderType, ma funziona? Ho sempre e solo un ordine aperto in qualsiasi momento...

Non riesco a pensare a come usare OrderOpenTime() a mio vantaggio e impedire che CloseHalfOrder sia chiamato ogni volta...
 
DomGilberto:
L'ho pensato anch'io - dice che ho bisogno di OrderSelect() prima di usare OrderType, ma funziona? Ho sempre e solo un ordine aperto in qualsiasi momento...

Se hai l'EA in esecuzione su due simboli, avrai potenzialmente due ordini aperti contemporaneamente... non puoi testarlo nello Strategy Tester, quale ordine verrà selezionato? Quello giusto o quello sbagliato?
Motivazione: