consulente esperto - domande varie - pagina 16

 

Mercato chiuso!

#1 - Non ho mai chiamato l'oggetto Button da OnTick(), Start(), quindi è normale?
#2
- Posso applicare all'oggetto Button 'ANCHOR_RIGHT_UPPER'?
#3 - Quindi, ho ancora bisogno di aiuto per la mia preoccupazione #145, per favore.

Grazie!

 

#1 - I never call Button Object by OnTick(), Start(), so is it normal?

#2- Posso applicare all'oggetto Button 'ANCHOR_RIGHT_UPPER'?

No, il punto di ancoraggio è fissato ad ANCHOR_LEFT_UPPER

#3 - Quindi, ho ancora bisogno di aiuto per la mia preoccupazione #145, per favore.

Sì, sei corretto - EventSetMillisecondTimer(250)

 
honest_knave:


No, il punto di ancoraggio è fissato ad ANCHOR_LEFT_UPPER
Sì, sei corretto - EventSetMillisecondTimer(250)

Lo apprezzo molto. Un grande grazie amico.
 

#Profit Orders Counting - Open

Cerco solo di ottenere tutte le posizioni redditizie per calcolare tutto in un unico valore.
Mi dà valori separati.

Ho davvero perso la testa. Ho provato alcuni modi, e ho fatto molte ricerche, ma nessun buon risultato.
Per favore, aiutatemi, se è possibile spiegatemi un po' di più sul calcolo dei profitti, lo apprezzo molto.

Spero di ottenere presto una buona risposta.

void profitcalcfnc()
{
    double trueprofit = 0;
    for ( int i = OrdersTotal() - 1; i >= 0; i-- )
    {
        if  ( ! OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) ) continue;
        if  ( closeothers == false && OrderSymbol() != Symbol() ) continue;
        trueprofit = OrderProfit() + OrderSwap() + OrderCommission();
        if  ( trueprofit >= 0 )
        {
            Print( "Profit: ", trueprofit );
            ObjectSetString  ( 0, "all profit counting object", OBJPROP_TEXT, DoubleToString( trueprofit, 2 ) );
        }
    }
    //---
    return;
}

Grazie in anticipo.

 
trueprofit = OrderProfit() + OrderSwap() + OrderCommission();

State sovrascrivendo il valore di trueprofit ad ogni iterazione del ciclo, piuttosto che aggiungere al valore.

Ricordate questo:

profit = OrderProfit();

è stato cambiato in questo:

profit_buy += OrderProfit();
Devi essere chiaro tra ciò che vuoi che accada ad ogni iterazione del ciclo (ogni ordine) e ciò che vuoi che accada dopo il ciclo (dopo aver controllato tutti gli ordini).
 
honest_knave:
Devi essere chiaro tra ciò che vuoi che accada ad ogni iterazione del ciclo (ogni ordine) e ciò che vuoi che accada dopo il ciclo (dopo aver controllato tutti gli ordini).

Grazie per la tua rapida risposta.
Forse sono molto stanco, mi dispiace. (Solo non riesco a capire cosapotrei fare).

Ho bisogno di descrivere un po' di più la mia preoccupazione ( quanto posso ).
Allora, ho 2 funzioni:

  1. Uso il primo di essi per la funzione Button - che quando faccio clic su di esso tutte le posizioni redditizie si chiudono. Finora funziona bene. (Non posso testarlo abbastanza - il mio broker ha disabilitato le transazioni)
  2. Uso il secondo di essi per la funzione Label - che potrebbe mostrarmi tutti i valori redditizi in un solo oggetto Label. (Ma non posso farlo)

Infine, vorrei che questo ( il mio ultimo codice di commento ) il profitto calcolasse la funzione potrebbe calcolare entrambi i tipi di ordini " OP_SELL e OP_BUY " solo redditizio.

Grazie in anticipo.

 

come stai cercando di mostrare tutti i valori redditizi in un'etichetta?

Intendi tutti sommati AcountProfit() o per ogni OrderProfit() separato.

Se hai bisogno di qualcosa come questo:


Si prega di vedere questo articolo:

https://www.mql5.com/en/articles/2723

Graphical Interfaces X: Updates for Easy And Fast Library (Build 3)
Graphical Interfaces X: Updates for Easy And Fast Library (Build 3)
  • 2016.10.17
  • Anatoli Kazharski
  • www.mql5.com
The next version of the Easy And Fast library (version 3) is presented in this article. Fixed certain flaws and added new features. More details further in the article.
 

Grazie per il suo commento.
Mi dispiace per la confusione.

No, penso di aver bisogno di qualcosa di diverso da questo.
Cercherò di chiarire il mio problema.

Ho 3 posizioni per EURUSD. Due di loro posizioni redditizie, una di loro posizione in perdita. Quindi ho solo bisogno di calcolare due di loro che è sono redditizi.
es: se ognuno di loro +1.00 (2 posizioni redditizie = +2.00) solo ho bisogno di ottenere tutte le posizioni redditizie valore.

Print( "Profit: ", 2.00 ); // absolutely no separately - I just need - could adds profitable values 1.00 + 1.00 = 2.00

Ho appena fatto veloce sotto scheda per mi aiuta quello che sto cercando di dire. (al di sotto di questo file immagine di commento)
(L'inglese non è la mia lingua madre - a volte ho difficoltà con esso)

Tutto il meglio.

File immagine della scheda del pannello commerciale

 
double totalprofit=0;

// in your orderselect loop put
if(OrderProfit()>0)
{
  totalprofit=totalprofit+OrderProfit();
}
 

#Conteggio degli ordini di profitto - chiuso

Marco vd Heijden:
if(OrderProfit()>0)
{
  totalprofit=totalprofit+OrderProfit();
}

Ho risolto il mio problema dopo il tuo grande codice di esempio.
Grande uomo, un grande grazie!



honest_knave:

Stai sovrascrivendo il valore di trueprofit ad ogni iterazione del ciclo, piuttosto che aggiungerlo al valore.
Ricorda questo:
Devi essere chiaro tra ciò che vuoi che accada ad ogni iterazione del ciclo (ogni ordine) e ciò che vuoi che accada dopo il ciclo (dopo aver controllato tutti gli ordini).

Appena finito lo script del codice qui sotto.
Ancora una volta controllo il tuo commento, poi so che me lo spieghi. Ma il mio inglese impedisce di capirlo.

Tutto il meglio per ognuno di voi.

void calc()
{
    double trueprofit  = 0;
    double totalprofit = 0;

    for ( int i = OrdersTotal() - 1; i >= 0; i-- )
    {
        if  ( ! OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) ) continue;
        if  ( closeothers != true && OrderSymbol() != Symbol() ) continue;

        trueprofit = OrderProfit() + OrderSwap() + OrderCommission();
        if  ( trueprofit >= 0 )
        {
            totalprofit += OrderProfit() + OrderSwap() + OrderCommission();
            Print( "Profit: ", DoubleToString( totalprofit, 2 ) );
            ObjectSetString  ( 0, _Checkthisout_name_Label, OBJPROP_TEXT, "Total Profit: " + DoubleToString( totalprofit, 2 ) );
        }
    }
    //---
    return;
}

Spero che questo codice funzioni bene. Se qualcosa di sbagliato nel codice di cui sopra, per favore fatemelo sapere.
Grazie per tutto.

Motivazione: