Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 587

 
Andrey Barinov:

Ecco come si compila:


Grazie. Ho ingenuamente pensato che sistemare una dozzina di errori di compilazione avrebbe trasformato un codice mql4 funzionante in un indicatore mql5)

Non vuole mostrare il massimo, il minimo di un giorno. Quanto è lontano dall'obiettivo?

 
bij:

Grazie. Ho ingenuamente pensato che sistemare una dozzina di errori di compilazione avrebbe trasformato un codice mql4 funzionante in un indicatore mql5)

Non vuole mostrare un minimo di un giorno. Quanto è lontano dall'obiettivo?

Non lo so :)

Prova ad espandere gli array di buffer all'inizio di OnCalculate usando ArraySetAsSeries

 
bij:

Grazie. Ho ingenuamente pensato che correggere una dozzina di errori di compilazione avrebbe trasformato un codice mql4 funzionante in un indicatore mql5)

Non vuole mostrare il massimo, il minimo di un giorno. Quanto è lontano dall'obiettivo?

C'è una tale quantità di linee di codice solo per mostrare l'alto e il basso della giornata?
 
Alexey Viktorov:
È una quantità enorme di linee di codice solo per mostrare gli alti e i bassi della giornata?
Sì, c'è anche la chiusura del giorno, ma è nella storia, non solo il giorno precedente. Questa è la difficoltà.
 
bij:
Sì, anche la chiusura del giorno, ma è nella storia, non solo il giorno precedente. Questa è la parte difficile.

Questo è il tuo codice? O è stato scritto su ordinazione?

Puoi mostrarmi un'istantanea di come appare in MT4?

 
Alexey Viktorov:

Questo è il tuo codice? O è stato scritto su ordinazione?

Puoi mostrarmi un'istantanea di come appare in MT4?

L'indicatore viene dalla rete. Non ho MT4 a portata di mano, te lo dico a parole. Linee dall'inizio alla fine di ogni giorno, per i prezzi High, Low e Close del giorno. Ma, invece di una linea alprezzo di chiusura del giorno, voglio mettere una linea al prezzo di chiusura della barra alle 21:00

Forse si può davvero rendere tutto più semplice che artificioso.

 

Sto chiudendo 4 posizioni in una volta, come posso contarle come una in fila nella funzione di conteggio delle perdite?

Possono chiudere, a causa dello slittamento, non allo stesso prezzo e l'ora può essere diversa

Prova:

int CountLOS()
  {
  double priceold=0;
  datetime datold;
   int count=0;
   for(int trade=OrdersHistoryTotal()-1;trade>=0; trade--)
     {
      OrderSelect(trade,SELECT_BY_POS,MODE_HISTORY);
      if(OrderSymbol()==Symbol())
        {
         if(OrderType()==OP_BUY || OrderType()==OP_SELL)
           {
            if(OrderMagicNumber()==_MagicNumber)
              {
               if(OrderProfit()<=0&&datold !=OrderCloseTime()) {count++; datold =OrderCloseTime();}
               //if(OrderProfit()<=0&&priceold !=OrderClosePrice()) {count++; priceold =OrderClosePrice();}
               else  break;
              }
           }
        }
     }
   return(count);
  }
 
lil_lil:

Sto chiudendo 4 posizioni in una volta sola, come posso contarle come una in fila nella funzione di conteggio delle perdite?

Potrebbero non chiudere allo stesso prezzo a causa dello slippage e i tempi potrebbero essere diversi

Il prezzo a causa dello slippage è diverso e anche il tempo; uno ha chiuso alla fine del secondo, mentre l'altro ha chiuso all'inizio del secondo successivo. Cerca di registrare i ticker degli ordini al momento della chiusura. Puoi registrarli in un file...

 
lil_lil:

Sto chiudendo 4 posizioni in una volta, come posso contarle come una in fila nella funzione di conteggio delle perdite?

Possono chiudere, a causa dello slittamento, non allo stesso prezzo e l'ora può essere diversa

Prova:

Faccio un ciclo con gli ultimi chiusi. Se l'ultimo chiuso è negativo, allora guardo tutti quelli chiusi per 120 secondi (2 minuti) e calcolo il profitto totale

 
lil_lil:

Sto chiudendo 4 posizioni in una volta, come posso contarle come una in fila nella funzione di conteggio delle perdite?

Possono chiudere, a causa dello slittamento, non allo stesso prezzo e l'ora può essere diversa

Ci ho provato:

Qualcosa del genere:

 datetime _oct=0,time=0,_pt=0;
 int _cnt=0;
  for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
   if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
    if(OrderSymbol()==symb && OrderMagicNumber()==mg) {
     int OrdersType=OrderType();
     // BUY && SELL
     if(OrdersType<=1) {
       CopyTime(OrderSymbol(),PERIOD_D1,0,1,itime);
       if((OrderCloseTime()>=itime[0] && OrderCloseTime()<itime[0]+86400)) {
         _Get.Hist.BS._ProfitDaily+=OrderProfit()+OrderCommission()+OrderSwap(); // Profit за сегодня
       }
       // 120 секунд разницы между закрытием первой и последней в сетке
       _oct=OrderCloseTime();
       if(_cnt==0 && _oct!=0) time=_oct;
        if(_oct+120>=time) {
          _Get.Hist.BS._ProfitOldClose+=OrderProfit()+OrderSwap()+OrderCommission(); // Profit последнего трейда
          _cnt++;
        }
     }
  }}} 
Motivazione: