[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 37

 
nuan:
Domanda: come posso chiudere programmaticamente tutti gli ordini, per esempio ogni 30 minuti?

datetime prevtime;
int Magic=11111;
int slippage=5;

//=====================
 int start(){
 
    datetime TimeM30=iTime(NULL,30,0);
    if(TimeM30==prevtime) return(0); 
    prevtime = TimeM30;   
    CloseAllPos();
  return(0);
 }
//=====================
 void CloseAllPos(){
   double maxlot=0;
   for(int i=OrdersTotal()-1; i>=0; i--){
     if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))continue;
     if(OrderSymbol()!=Symbol())continue;
     if(OrderMagicNumber()!=Magic)continue; 
      if(maxlot<OrderLots()){ 
         maxlot=OrderLots();
         if(OrderType()==OP_BUY)OrderClose(OrderTicket(),maxlot,NormalizeDouble(Bid, Digits),slippage,Yellow);
         if(OrderType()==OP_SELL)OrderClose(OrderTicket(),maxlot,NormalizeDouble(Ask, Digits),slippage,Yellow);
  } } }
 
Grazie
 
Sostituito i prezzi di chiusura con i prezzi di apertura - il risultato è identico al precedente, eccetto che ora la linea del capitale è strettamente sopra la linea del bilancio. Il numero di affari e il profitto sono diminuiti un po', ma la situazione si è stabilizzata ancora di più. Non ci sono compravendite perdenti nel periodo studiato.
 
Vinin:


Se ho capito bene, con un controllo sulla condizione degli ordini nel mercato? -

...
if (OrderType()<2) 
//здесь  корректировка размера позиций с учетом ввода/вывода


Roba interessante! Puoi postare il codice completo? Non è chiaro come gli ordini siano legati ai fondi depositati/prelevati. Possiamo determinare quanti soldi sono stati depositati sul conto all'inizio, il saldo iniziale per così dire, senza ricalcolare la storia delle posizioni chiuse? Non tutti i broker forniscono l'intera storia di trading, alcuni non più vecchi di 1 mese, quindi il ricalcolo della redditività dell'Expert Advisor è sbagliato: la data di inizio è corretta, ma il saldo è quello di un mese fa. Di conseguenza, il profitto mensile si estende su tutto il periodo di trading.

 
nuan:
Domanda: come posso chiudere programmaticamente tutti gli ordini, per esempio ogni 30 minuti?

datetime prevtime;
int Magic=11111;
int slippage=5;

//=====================
 int start(){
 
    datetime TimeM30=iTime(NULL,30,0);
    if(TimeM30==prevtime) return(0); 
    prevtime = TimeM30;   
    CloseAllPos();
  return(0);
 }
//=====================
 void CloseAllPos(){
   double maxlot=0;
   for(int i=OrdersTotal()-1; i>=0; i--){
     if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))continue;
     if(OrderSymbol()!=Symbol())continue;
     if(OrderMagicNumber()!=Magic)continue; 
      if(maxlot<OrderLots()){ 
         maxlot=OrderLots();
         if(OrderType()==OP_BUY)OrderClose(OrderTicket(),maxlot,NormalizeDouble(Bid, Digits),slippage,Yellow);
         if(OrderType()==OP_SELL)OrderClose(OrderTicket(),maxlot,NormalizeDouble(Ask, Digits),slippage,Yellow);
  } } }


чет он не работает , закрывает в секунду
 
forexnew:


Se ho capito bene, con un controllo sulla condizione degli ordini nel mercato? -


Roba interessante! Puoi postare il codice completo? Non è chiaro come gli ordini siano legati ai fondi depositati/prelevati. Possiamo determinare quanti soldi sono stati depositati sul conto all'inizio, il saldo iniziale per così dire, senza ricalcolare la storia delle posizioni chiuse? Non tutti i broker forniscono l'intera storia di trading, alcuni non più vecchi di 1 mese, quindi il ricalcolo della redditività dell'Expert Advisor è sbagliato: la data di inizio è corretta, ma il saldo è quello di un mese fa. Di conseguenza, il profitto mensile si estende su tutto il periodo di trading.


Questo probabilmente non è il caso, dopo tutto.
Nel terminale, aprite la scheda "Storia dell'account", cliccate con il tasto destro e selezionate "Tutta la storia".
La storia sarà scaricata fino a quando il conto è stato aperto.
 
forexnew:


Se ho capito bene, con un controllo sulla condizione degli ordini nel mercato? -


Roba interessante! Puoi postare il codice completo? Non è chiaro come gli ordini siano legati ai fondi depositati/prelevati. Possiamo determinare quanti soldi sono stati depositati sul conto all'inizio, il saldo iniziale per così dire, senza ricalcolare la storia delle posizioni chiuse? Non tutti i broker forniscono l'intera storia di trading, alcuni non più vecchi di 1 mese, quindi il ricalcolo della redditività dell'EA è sbagliato: la data di inizio è corretta, ma il saldo è quello di un mese fa. Di conseguenza, il profitto mensile si estende su tutto il periodo di trading.

Qui non si tratta di questo, ma di tenere traccia programmaticamente se ci sono stati depositi/prelievi da/verso il conto entro un certo tempo. Non c'è ancora un codice, c'è una formula di base per calcolare la regolazione del volume della posizione qui. (Il numero (in termini di fondi totali) di collocamenti/prelievi è legato ad esso)
 
nuan:


Cosa vuol dire "si chiude in un secondo"?
Molto tempo? O cosa?

 

La carta significa che chiude l'ordine nello stesso secondo, non in 30 minuti.


L'ho impostato come nel tuo esempio


datetime TimeM30=iTime(NULL,30,0);
    if(TimeM30==prevtime) return(0); 
    prevtime = TimeM30;   
    CloseAllPosTime();
Il robot non chiude per altri motivi, cioè non chiude allo stop o al profitto.


1 2011.07.29 00:00 comprare 1 0.01 1.4328 1.3328 1.5328 0.00 1000.00
2 2011.07.29 00:01 chiudere 1 0,01 1,4327 1,3328 1,5328 -0,10 999,90
3 2011.07.29 00:01 comprare 2 0,01 1,4329 1,3329 1,5329 0,00 999,90
4 2011.07.29 00:01 chiudere 2 0,01 1,4326 1,3329 1,5329 -0,30 999,60
5 2011.07.29 00:01 comprare 3 0,01 1,4328 1,3328 1,5328 0,00 999,60
6 2011.07.29 00:03 chiudere 3 0,01 1,4327 1,3328 1,5328 -0,10 999,50
7 2011.07.29 00:03 comprare 4 0,01 1,4329 1,3329 1,5329 0,00 999,50
8 2011.07.29 00:03 chiudere 4 0,01 1,4329 1,3329 1,5329 0,00 999,50


 
Roman.:
Non è questo il problema qui, ma se ci sono stati depositi/prelievi al/dal conto entro un certo tempo. Non c'è ancora un codice, c'è una formula di base per calcolare la regolazione del volume della posizione qui. (Il numero (in termini di fondi totali) dei depositi/prelievi è legato ad esso)

Ho capito.

E se si considera l'apertura di un conto con $0 come inizio, e il 1° deposito come rabbocco. È possibile determinare programmaticamente tutti i topping (compreso il primo) che sono stati fatti sul conto?