Chiudere solo le compravendite redditizie, all'obiettivo di profitto - pagina 4

 
af1:

Ok Raptor, proverò a fare quel ciclo, ma prima di farlo, cosa succede se cambio solo

Da questo:
A questo:


Questo potrebbe fare il lavoro?

No, devi fare il conto alla rovescia quando chiudi/cancelli gli ordini.
 
RaptorUK:
No, devi fare il conto alla rovescia quando chiudi/cancelli gli ordini.


Ciao Raptor!

Ho controllato il codice e ad essere sincero non vedo molta differenza tra la linea di codice suggerita nel tuo post:

for(PositionIndex = TotalNumberOfOrders - 1; PositionIndex >= 0 ; PositionIndex --)

e la linea di codice dell'ea che sto testando:

for(i=OrdersTotal()-1;i>=0;i--)

L'unica differenza che ho visto è che tu aggiungi MODE_TRADES, e non hai aggiunto sleep. Questo è rilevante?

Potresti dare qualche indicazione su cosa dovrei cambiare nel codice?

 
af1:


Ciao Raptor!

Ho controllato il codice e ad essere sincero non vedo molta differenza tra la linea di codice suggerita nel tuo post:

e la linea di codice dell'ea che sto testando:

L'unica differenza che ho visto è che tu aggiungi MODE_TRADES, e non hai aggiunto sleep. Questo è rilevante?

Potresti dare qualche indicazione su cosa dovrei cambiare nel codice?

Scusa, ho visto questo . . .

for(int i=0;i<OrdersTotal();i++)
      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue;
         if(OrderType()==OP_SELL)  
         {
            OrdersSELL++;
            SellLots += OrderLots();
            double ThisTradeProfit=OrderProfit() + OrderCommission() + OrderSwap();
            if(ThisTradeProfit>0)
            BuyProfit += ThisTradeProfit;
         }

. . . e il tuo post e ho pensato che fosse il tuo codice OrderClose() . . .

 
af1:


Non ho aggiunto i 2 extern bool, ho solo cambiato questo per chiudere "solo gli ordini di acquisto"

e cambiare questo per chiudere "solo ordini di vendita"

Così ora ho due EA. Uno per chiudere gli acquisti e uno per chiudere le vendite. Per me va bene.


Ho testato su entrambi gli account, demo e reale. Sulla demo funziona bene, ma sul conto reale, una volta raggiunto l'obiettivo di profitto, inizierà a chiudere le posizioni, ma poi si fermerà chiudendo le posizioni quando gli ordini rimanenti scendono sotto l'obiettivo di profitto. Questo succede se il prezzo sta cambiando al momento della chiusura. Quindi tende a lasciare aperti gli ordini redditizi, invece di chiuderli tutti (ordini redditizi).

Ho letto questo post da RaptorUK https://www.mql5.com/en/forum/139654. È qualcosa del genere, ma non so davvero quale potrebbe essere la soluzione migliore per questo problema.



Ho appena notato questo - non so se farà molta differenza, ma non è giusto

for(int i=0;i<OrdersTotal();i++)

      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue;
         if(OrderType()==OP_SELL)  
         {
            OrdersSELL++;
            SellLots += OrderLots();
            double ThisTradeProfit=OrderProfit() + OrderCommission() + OrderSwap();
            if(ThisTradeProfit>0)
            BuyProfit += ThisTradeProfit;
         }
 
af1:


Non ho aggiunto i 2 extern bool, ho solo cambiato questo per chiudere "solo gli ordini di acquisto"

e cambiare questo per chiudere "solo ordini di vendita"

Così ora ho due EA. Uno per chiudere gli acquisti e uno per chiudere le vendite. Per me va bene.


Ho testato su entrambi gli account, demo e reale. Sulla demo funziona bene, ma sul conto reale, una volta raggiunto l'obiettivo di profitto, inizierà a chiudere le posizioni, ma poi si fermerà chiudendo le posizioni quando gli ordini rimanenti scendono sotto l'obiettivo di profitto. Questo succede se il prezzo sta cambiando al momento della chiusura. Quindi tende a lasciare aperti gli ordini redditizi, invece di chiuderli tutti (ordini redditizi).

Ho letto questo post da RaptorUK https://www.mql5.com/en/forum/139654. È qualcosa del genere, ma non so davvero quale potrebbe essere la soluzione migliore per questo problema.



Questo suggerisce che ci sono errori nella chiusura dei trade, cosa dice il log?

Forse il tuo slippage a soli 5 punti è troppo piccolo?

 
RaptorUK:

Scusa, ho visto questo. . .

. . . e il tuo post e ho pensato che fosse il tuo codice OrderClose() . . .

Nessun problema.

GumRai:


Ho appena notato questo - non so se farà molta differenza, ma non è giusto

for(int i=0;i<OrdersTotal();i++)

Nella demo non ho visto alcuna differenza, ma nel conto reale il problema si presenta quando si chiudevano "curiosamente" gli ordini di vendita, quindi forse questo potrebbe risolvere il problema...

Fatemi provare di nuovo con questa modifica e vi comunicherò i risultati.

GumRai:


Questo suggerisce che ci sono errori nella chiusura dei trade, cosa dice il log?

Forse il tuo slippage a soli 5 punti è troppo piccolo?

Nessun errore nel registro.

Forse uno slippage più grande potrebbe aiutare. Lo testerò.

 

Ciao amici

C'è qualcuno che ha un EA per MT5 per chiudere tutte le operazioni a profitto raggiunto.

 
BobyGill:

Ciao amici

C'è qualcuno che ha un EA per MT5 per chiudere tutti i trade a profitto raggiunto.

Perché avete tirato fuori un argomento vecchio di 6 anni nella sezione MT4 per chiedere di MT5?

 
Ragazzi...
Mi stavo solo chiedendo ...
È possibile utilizzare la stessa logica, ma quello che la rende diversa è solo quando la transazione totale viene colpita, diciamo 200 transazioni , allora si attiverà il profitto di chiusura.