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

 
Artyom Trishkin:

Grazie.

 
Buon pomeriggio, per favore aiutatemi con una domanda su un semplice ciclo.
L'essenza del ciclo è che la variabile I viene incrementata di uno.
Il valore viene stampato.
Il ciclo stesso:

per (int i=0; i<100000;i++)
{
Stampa("I =",i);
se(i>3000)
{
Stampa("I =",i);
pausa;
}

Il problema è che se il numero nella condizione if(i>3000) è approssimativamente maggiore di 100 (nel mio caso tremila),
allora la stampa produce valori diversi. Costantemente.
Il mio punto è che se il ciclo assomiglia a questo
per (int i=0; i<100000;i++)
{
Stampa("I =",i);
se(i>100)
{
Stampa("I =",i);
pausa;
}

La stampa nel tester mostra il valore I = 0, poi 1, poi 2, poi 3, poi 4,... e così via fino a 100.
Ma se la condizione è per esempio if(i>3000), Print mostrerà il valore da... Non so nemmeno come dirlo correttamente...
da un singolo numero, ad esempio 2895 e poi aggiunge uno!

Ecco un esempio di come può apparire:

se i > 100

100


se i >3000

3000



Qual è il problema? Ho lottato tutto il giorno e non riesco a capirlo(((( Per favore AIUTATEMI!







 
eflaer:
Qual è il problema? Ho lottato tutto il giorno e non riesco a capirlo(((( Per favore aiutatemi!

aprire il file di log, c'è un rapporto completo

 
Taras Slobodyanik:

aprire il file di log, c'è un rapporto completo

Grazie, ho aperto il file di log, infatti tutto il conto alla rovescia inizia con zero................ perché non è tutto nel registro?

Come faccio a far apparire tutto nel log, ho bisogno di tutto il tempo, sto cercando un bug nell'algoritmo.

 
Semplicemente non è conveniente aprire un file di log txt di 7+GB ogni volta.......
 
eflaer:

Grazie, ho aperto il file di log, infatti tutto il conto alla rovescia inizia con zero................ perché non è tutto nel logbook?

Come faccio a far apparire tutto nel log, ho bisogno dell'intera linea temporale, sto cercando un bug nell'algoritmo.

Poiché la registrazione e il lavoro con gli oggetti grafici richiede molte risorse (tempo), MT è ottimizzato per questo, e può "ingoiare" parte del log, ma eseguire rapidamente il corpo dello script stesso

aggiungere Sleep(120) dopo Print().


eflaer:
Non è conveniente aprire ogni volta il file di log, txt che pesa 7+GB.......

Cancella il file di log periodicamente, è registrato per data, se ci scrivi solo esperimenti oggi, perché hai bisogno di un file così grande?

 
Grazie mille! Davvero utile! Continuerò a cercare l'errore...
 
Vitali Vakulin:
Salve.Vorrei fare un drawdown del 10% in modo che se ho un drawdown per esempio, il mio Expert Advisor non aprirà nuovi ordini, si limiterà a recuperare quelli aperti al TP e basta, si apriranno solo quelli di media. Questo mi aiuterà a non cadere in un grande drawdown, se il mio trading viene effettuato su diverse coppie. Capisco il lavoro della funzione e vorrei poterla implementare.

Ragazzi, per favore aiutatemi.

 

Buona sera.

Primi tentativi di scrivere un EA. Potete dirmi perché il mio Expert Advisor apre solo Buy? Dov'è l'errore?

extern double volume     = 0.05;   // Volume
extern int    stopLoss   = 1;      // StopLoss
extern int    takeProfit = 3;      // TakeProfit
extern int    slippage  = 10;          // Slippage
extern int    Period_bars  = 100;    // Period
extern int    magic      = 321;    // Magic
extern int    ATR_Period = 50;      // ATR Period

datetime newCandle;
double ABS_High=0;
double ABS_Low=1000000;

int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+

void OnDeinit(const int reason)
  {
//---
 

  }

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+

void OnTick()
  {

        double TD_Close=Close[1];

        double ATR=iATR(Symbol(),Period(),ATR_Period,0);

        double bsl=NormalizeDouble(Ask-(stopLoss*ATR),_Digits);

        double btp=NormalizeDouble(Ask+(takeProfit*ATR),_Digits); 

        double ssl=NormalizeDouble(Bid+(stopLoss*ATR),_Digits);

        double stp=NormalizeDouble(Bid-(takeProfit*ATR),_Digits); 

        for (int i=2; i<=Period_bars; i++)
        {
                if (Period_bars<=Bars-1)
                {
                        if (ABS_High<High[i]) ABS_High=High[i];
                        if (ABS_Low>Low[i]) ABS_Low=Low[i];
                }

                break;
        }

        if (TD_Close>ABS_High)
        {
                if (OrdersTotal () < 1 && newCandle != Time[0]) int tiket=OrderSend(Symbol(),OP_BUY,volume,Ask,slippage,bsl,btp,"Система пробоя открыла ордер BUY ",magic,0);

                else newCandle = Time[0];
        }
        else
        if (TD_Close<ABS_Low)
        {
                if (OrdersTotal () < 1 && newCandle != Time[0]) int tiket=OrderSend(Symbol(),OP_SELL,volume,Bid,slippage,ssl,stp,"Система пробоя открыла ордер SELL ",magic,0);
                else newCandle = Time[0];
        }
}

 
Andrey.Sabitov:

Buona sera.

Primi tentativi di scrivere un EA. Potete dirmi perché il mio Expert Advisor apre solo Buy? Dov'è l'errore?



Inserisci (nel) codice con più attenzione :-)

Non riesco a vedere dove ABS_High è cambiato, sembra essere costante 0 e la condizione TD_Close>ABS_High è sempre corretta

Motivazione: