Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 908

 
Grazie, ragazzi.
 
A.Vakutin:

Per favore, condividete, chi lo sa e sa come proibire ad un EA di vendere dopo l'attivazione di uno stop?

// Оставанивливает работу всех советников, если сработал SL.

#include <MT4Orders.mqh>      // https://www.mql5.com/ru/code/16006
#include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003

void OnTrade()
{
  static int PrevTotal = OrdersHistoryTotal();
  const int Total = OrdersHistoryTotal();
  
  for (int i = Total - 1; i >= PrevTotal; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderCloseReason() == DEAL_REASON_SL))
    {
      long Chart = ChartFirst();
  
      while (Chart != -1)
      {
        if ((Chart != ChartID()) && EXPERT::Is(Chart))
          EXPERT::Remove(Chart);
  
        Chart = ChartNext(Chart);
      }

      break;
    }        
    
  PrevTotal = Total;
}
 

Buona sera, utenti del forum!

È sorto un dilemma.

Ho avuto una transazione e l'ho memorizzata in una variabile

datetime now=TimeCurrent();

Qualche tempo dopo, si è verificato un evento e memorizzo il tempo in una variabile

datetime now2=TimeCurrent();

Come posso controllare se sono passati 15 minuti tra questi eventi?

Pensavo di avere due variabili ora e ora2 impostate in secondi, ho provato a prendere la differenza e dovrebbe essere più di 700 secondi

 if(now2-now>700)

MA non funziona((

Sto chiedendo aiuto alla comunità!

 
ISL:

Buona sera, utenti del forum!

È sorto un dilemma.

Ho avuto una transazione e l'ho memorizzata in una variabile

Qualche tempo dopo, si è verificato un evento e memorizzo il tempo in una variabile

Come posso controllare se sono passati 15 minuti tra questi eventi?

Pensavo di avere due variabili ora e ora2 impostate in secondi, ho provato a prendere la differenza e dovrebbe essere più di 700 secondi

MA non funziona((

Per favore, aiutate la comunità!

La variabile datetime è rappresentata come data e ora. Si può risolvere il problema in diversi modi, per esempio per rappresentare 700 (anche se 15 minuti sono 900 secondi) nel tipo datetime

if(now2-now>(datetime)700)

o viceversa rappresentare le variabili come tipo int

if(int(now2-now)>700)

o come questo

if((int)now2-(int)now>700)
Comunque, dobbiamo controllare...
 
Alexey Viktorov:

La variabile datetime è rappresentata come data e ora. Puoi risolvere il problema in diversi modi, ad esempio rappresentare 700 (anche se 15 minuti sono 900 secondi) come datetime


La sera sta arrivando)))

 
ISL:

La serata si fa sentire)))

Già... Mi ci è voluta un'ora e mezza per collegare la funzione dall'inluder...

 
Vladimir Karputov:

Collegare la classe di trading standard CTrade
(viene fornito di serie con il terminale)

e chiamare due metodi:

SetTypeFillingBySymbol

Imposta il tipo di ordine secondo il simbolo specificato

SetMarginMode

Imposta la modalità di calcolo del margine secondo le impostazioni correnti del conto

Vladimir, buona sera, potresti per favore consigliarmi di fare una funzione che calcoli la percentuale di profitto voglio calcolare il volume scambiato ma non riesco a farlo bene, penso di dover identificare l'ordine con la direzione fuori e usarli per calcolare il volume

double ALL_PROFIT(int rezult)
  {
   HistorySelect(0,TimeCurrent());
   double   rez=0.0;
   double   alprof=0.0;
   uint     total=HistoryDealsTotal();
   for(uint i=0;i<=total;i++) 
     {
      if(m_ticket.SelectByIndex(i))
        {
         if(m_ticket.Magic()==Mg)
           {
            alprof+=(m_ticket.Profit()+m_ticket.Swap()+m_ticket.Commission());
            rez=alprof;
            if(rezult==1 && alprof!=0.00){rez=alprof/(AccountInfoDouble(ACCOUNT_BALANCE)-alprof)*100;}
            if(rezult==2){rez+=m_ticket.Volume();}      
           }
        }
     }
   return(NormalizeDouble(rez,2)); 
  }
a proposito, il numero di posizioni chiuse è anche un problema per scoprire quanti di loro hanno scambiato
 
TYRBO:

Vladimir, buona sera, potresti suggerire una funzione che calcola la percentuale di profitto, voglio calcolare il volume scambiato e non funziona correttamente, penso che ho bisogno di identificare l'ordine con la direzione fuori e con loro per calcolare il volume.

Non capisco niente, tutte le lettere sono ammucchiate. Passate il vostro codice attraverso lo styler del codice.

 
TYRBO:

Vladimir, buona sera, potresti suggerire una funzione che calcola la percentuale di profitto, voglio calcolare il volume scambiato e non funziona correttamente, penso che ho bisogno di identificare l'ordine con la direzione fuori e con loro per calcolare il volume.


a proposito, è anche un problema con il numero di posizioni chiuse

Si prega di inviare il codice correttamente. Ti ho già corretto una volta e ho messo il codice correttamente.

 
TYRBO:

Vladimir, buona sera, potresti suggerire una funzione che calcola la percentuale di profitto, voglio calcolare il volume scambiato e non funziona correttamente, penso che ho bisogno di identificare l'ordine con la direzione fuori e con loro per calcolare il volume.

a proposito, anche il numero di posizioni chiuse è un problema

Ho inviato il vostro codice correttamente per la terza volta. Mi chiedo quanti altri tentativi dobbiamo fare. :)