[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 47

 
Tiken123:

Se conoscete la funzione per calcolare il saldo totale delle perdite delle posizioni CHIUSE per SL e il saldo totale dei trade redditizi APERTI, scrivete per favore.

Il calcolo del saldo delle perdite deve partire dall'ultimo valore massimo del deposito

La tua domanda è in qualche modo simile a quella precedente, quindi ho modificato un po' la funzione della risposta precedente. Confesso che non l'ho testato, ma dovrebbe funzionare. Le variabili profitto e perdita dichiarate a livello globale dovrebbero mostrare il profitto e la perdita totali rispettivamente per le posizioni chiuse.

Se avete bisogno di farlo anche per gli ordini aperti, aggiungete un secondo ciclo for per selezionarli non nella storia, ma secondo il criterio OrdersTotal(): for(int n=1; n<=OrdersTotal(); n++)

E aggiungere i valori ottenuti alle stesse variabili profitto e perdita.

//+----------------------------------------------------------------------------+
// Прибыльно или убыточно закрылся последний ордер, и возврат типа такого ордера
int fHistory(){
  profit = 0; loss = 0;
  for(int i=OrdersHistoryTotal(); i >= 0; i--){               // Выборка в истории
     if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true){    // Если есть следующий в истории
        if(OrderMagicNumber()!=magN) continue;                // Ордера не нашего эксперта

        if(OrderProfit() > 0 ) profit = profit+OrderProfit(); // Если прибыль по посл.ордеру - суммируем

        if(OrderProfit() < 0 ) loss = loss + OrderProfit();   // Если убыток по посл.ордеру - суммируем

     }
  }
  return(-1);
}
 
Twilight:

Per esempio, ho bisogno di sapere se un limite di acquisto pendente è stato attivato e, se lo è, a quale prezzo, e quindi impostarne uno nuovo.

Se c'è un ordine di tipo OP_BUYLIMIT su ogni tick utilizzando la funzione OrderType(), quando questo tipo scompare, significa che l'ordine si è aperto ed è diventato OP_BUY. Tutti i 6 tipi sono elencatiqui. Usando la funzione OrderOpenPrice(), puoi scoprire a quale prezzo è stato aperto l'ordine.
 
Twilight:

Come posso sapere se un ordine ha attivato un trailing stop e piazzare nuovi ordini quando il trailing stop è stato attivato?

Intendeva chiudere l'ordine o modificarlo?
Se è chiuso, hai bisogno di sapere se ha appena chiuso? O ha chiuso con uno StopLoss? (Può chiudere a TakeProfit e OrderClose() o OrderCloseBy())
 

Ecco la mia nuova funzione di controllo della barra:

bool IsNewBar()
{
  if(bartime != iTime(Symbol(),i_trading_TF,0))
  {
    bartime = iTime(Symbol(),i_trading_TF,0);
    return(true);
  }
  
  return(false);
}

dove, i_trading_TF è una variabile dichiarata globalmente esterna. Così, quando imposto il mio Expert Advisor su un grafico, posso impostare il valore di questa variabile nella finestra pop-up e quindi impostare il timeframe di apertura della barra da controllare.

Ho visto una funzione simile in un Expert Advisor ma con un parametro formale nell'intestazione della funzione. Ecco qui:

bool IsNewBar(int i_trading_TF)
{
  if(bartime != iTime(Symbol(),i_trading_TF,0))
  {
    bartime = iTime(Symbol(),i_trading_TF,0);
    return(true);
  }
  
  return(false);
}

Il lasso di tempo viene passato attraverso il parametro della funzione. Tuttavia, se la variabilei_trading_TF è dichiarata a livello globale, non credo che abbia senso passarla tramite un parametro formale, poiché la sua visibilità non è limitata.

Per favore, commentate questo punto.

La prima opzione funziona anche per me, ma è strano che alcuni programmatori abbiano l'abitudine di riempire di parametri formali anche quelle funzioni dove non lo farei io stesso.

 
pu6ka:
Ad ogni tick, controlla la presenza di un ordine di tipo OP_BUYLIMIT usando la funzione OrderType(), quando questo tipo scompare, significa che l'ordine si è aperto ed è diventato di tipo OP_BUY. Tutti i 6 tipi sono elencatiqui. Usando la funzione OrderOpenPrice(), puoi scoprire a quale prezzo è stato aperto l'ordine.
Non deve essere per forza così. Può essere ucciso manualmente. Piuttosto, è necessario memorizzare il ticket dell'ordine; non appena troviamo l'assenza dell'ordine con questo ticket e l'apparizione di una posizione di mercato con lo stesso ticket - allora sì, è scattato...
 
hoz:

Ecco la mia nuova funzione di controllo della barra:

dove, i_trading_TF è una variabile dichiarata globalmente esterna. Così, quando imposto il mio Expert Advisor su un grafico, posso impostare il valore di questa variabile nella finestra di pop-up e quindi impostare il timeframe di apertura della barra a cui voglio controllare.

Ho visto una funzione simile in un Expert Advisor ma con un parametro formale nell'intestazione della funzione. Ecco qui:

Il lasso di tempo viene passato attraverso il parametro della funzione. Tuttavia, se la variabilei_trading_TF è dichiarata a livello globale, non credo che abbia senso passarla tramite un parametro formale, poiché la sua visibilità non è limitata.

Per favore, commentate questo punto.

La prima opzione funziona anche per me, ma è strano che alcuni programmatori abbiano l'abitudine di riempire di parametri formali anche quelle funzioni dove non lo farei io stesso.

Ha senso se l'EA analizza diversi frame e una nuova barra deve essere formata ad ogni frame.

Non è tutto, aggiungiamo il nome dello strumento ai parametri trasferiti

bool IsNewBar(string Symb,int i_trading_TF)
{
  if(bartime != iTime(Symb,i_trading_TF,0))
  {
    bartime = iTime(Symb,i_trading_TF,0);
    return(true);
  }
  
  return(false);
}
e analizzare il fatto della formazione di una nuova barra, qualsiasi strumento, punto.
 
artmedia70:
Non necessariamente. Può anche essere ucciso manualmente. Piuttosto, è necessario ricordare il ticket dell'ordine pendente; non appena un ordine pendente con quel ticket viene trovato mancante e appare una posizione di mercato con lo stesso ticket, allora sì, viene attivato...

Sì, è più corretto. Ma possiamo controllare l'idea nel tester in questo modo. Per tracciare quattro tipi di ordini pendenti, abbiamo bisogno di 4 variabili aggiuntive per tracciare i tick. Anche se se ce ne sono più di uno in sospeso per un tipo, allora dovresti sicuramente inserire una variabile per i biglietti.
 
r772ra:

Ha senso se l'EA analizza diversi frame e ogni frame ha bisogno del fatto di formare una nuova barra.

Non è tutto, aggiungiamo il nome dello strumento ai parametri

e analizzare il fatto della formazione di una nuova barra, qualsiasi simbolo, punto.

Pensate che sia ragionevole "coinvolgere" un simbolo nel "meccanismo di ricerca di una nuova barra"? :)))
 
TarasBY:
Pensate che sia appropriato "coinvolgere" un simbolo nel "meccanismo di ricerca di una nuova barra"? :)))

Sarebbe interessante fare un controllo universale della nuova barra. A proposito - tutto è lì per questo
 
Vinin:

Sarebbe interessante fare un controllo universale della nuova barra. A proposito - tutto è lì per questo
Stai parlando di "considerare" e DC?! ;)