[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 600

 
rigonich:

Per rispondere a questa domanda in modo più preciso, è necessario vedere il codice dell'Expert Advisor. Tuttavia, questo di solito accade quando la scrittura di un Expert Advisor non tiene conto di alcune caratteristiche del lavoro di Expert Advisors con gli indicatori da chiamare. Gli Expert Advisor non calcolano da soli i valori degli indicatori, ma li prendono dai buffer degli indicatori già pronti. Per questo motivo, se hai bisogno, per esempio, di ricordare i valori precedenti dell'indicatore o qualcos'altro, che l'indicatore stesso fa, devi includere tutto questo nel tuo Expert Advisor. E a volte ci sono indicatori "storti", ma penso che tu abbia uno stocastico standard e non ha niente a che fare con questo.


Tutti gli indicatori, compresi quelli standard, sono ridisegnati su 0 bar.

Un consiglio... Se avete una domanda come questa, c'è una funzione come questa:

bool WindowScreenShot( string filename, int size_x, int size_y, int start_bar=-1, int chart_scale=-1, int chart_mode=-1)
Salva l'immagine del grafico corrente in un file GIF. In caso di fallimento restituisce FALSE. Per ottenere informazioni sull'errore è necessario chiamare la funzione GetLastError().

Lo screenshot viene salvato nella cartella terminal_directory\experts\files(terminal_directory\tester\files in caso di test di Expert Advisor) o nelle sue sottocartelle.

 
r772ra:


Tutti gli indicatori, compresi quelli standard, sono ridisegnati sulla barra 0.

Un consiglio... Se avete una domanda come questa, c'è una funzione come questa:

bool WindowScreenShot( string filename, int size_x, int size_y, int start_bar=-1, int chart_scale=-1, int chart_mode=-1)
Salva l'immagine del grafico corrente in un file GIF. In caso di fallimento restituisce FALSE. Per ottenere informazioni sull'errore è necessario chiamare la funzione GetLastError().

Lo screenshot viene salvato in terminal_directory\experts\files(terminal_directory\tester\files in caso di test di Expert Advisor) o nelle sue sottocartelle.


Non tutti, ma alcuni di loro, e non solo sulla barra zero, ma in generale, sono completamente d'accordo con te che è più costoso lavorare sulla barra zero.

Sono così confuso. Non riesco a capire come uno screenshot possa aiutare a risolvere il problema?

 
rigonich:


In realtà, non tutti, e alcuni non solo sulla barra zero, ma in generale sono assolutamente d'accordo con te che lavorare sulla barra zero è "più costoso".

Sono così confuso. Non riesco a capire come uno screenshot possa aiutare a risolvere un problema?


WindowScreenShot fa uno screenshot di un grafico, penso che sia chiaro. Se lo metti subito dopo la funzione di apertura di una posizione,

sai, si pone la domanda PERCHE' ?????? Diamo un'occhiata all'immagine.

 
r772ra:


WindowScreenShot fa un'istantanea del grafico, penso che questo sia chiaro. Se lo metti subito dopo la funzione di apertura della posizione,

vedete, è sorta la domanda PERCHE' ?????? Vedi foto.


C'è un assistente del genere.
 
r772ra:

C'è un tale assistente.

Capito. Grazie, interessante, dovrò provare.
 
rigonich:

Per rispondere più precisamente, è necessario guardare il codice di un EA. Questo di solito accade quando non si tiene conto di alcune peculiarità di come funziona un EA con gli indicatori da chiamare. Gli Expert Advisor non calcolano da soli i valori degli indicatori, ma li prendono dai buffer degli indicatori già pronti. Per questo motivo, se hai bisogno, per esempio, di ricordare i valori precedenti dell'indicatore o qualcos'altro, che l'indicatore stesso fa, devi includere tutto questo nel tuo Expert Advisor. E a volte ci sono indicatori "storti", ma penso che tu abbia uno stocastico standard e non ha niente a che fare con questo.


Grazie per la risposta, ma non mi ha aiutato molto, ancora una volta posterò il problema, forse qualcun altro ha qualche idea su questo argomento?

Buon pomeriggio per favore aiutatemi, non riesco a capire perché si aprono ordini indesiderati ((, nello screenshot sono cerchiati in rosso, il codice è allegato...

File:
 
rigonich:

Se è così, spetta agli sviluppatori dell'aiuto.


Gli sviluppatori non hanno nulla a che fare con questo. :__

Invece di ( Hour()>=10 || Hour()<20 ) avresti dovuto renderlo semplice Hour()>=10 && Hour()<20

e tutto ha funzionato.

 
Ragazzi, potreste dirmi come fare in modo che il tester visualizzi i trade e gli indicatori usati nell'EA nella finestra di visualizzazione?
 

Si prega di consigliare dove guardare per vedere come è codificata la condizione "Se l'ultima operazione di take profit era > 0 allora....".

cioè la contabilità delle operazioni già chiuse (automaticamente).

 
lottamer:

Si prega di consigliare dove guardare per vedere come è codificata la condizione "Se l'ultima operazione di take profit era > 0 allora....".

cioè la contabilizzazione di operazioni già chiuse (automaticamente).


https://www.mql5.com/ru/forum/131859

https://www.mql5.com/ru/forum/131859/page4#434230

Funzione isCloseLastPosByTake().

Questa funzione restituisce una bandiera per chiudere l'ultima posizione di Takei. La bandierina è alzata - True - TakeProfit è scattato. Flag abbassato - Falso - la posizione è stata chiusa per un altro motivo. Una selezione più accurata delle posizioni da considerare è specificata utilizzando parametri esterni:

  • sy - Nome dello strumento di mercato. Se si specifica questo parametro, la funzione considererà solo le posizioni dello strumento specificato. Il valore predefinito "" significa qualsiasi strumento di mercato. NULL significa lo strumento corrente.
  • op - operazione commerciale, tipo di posizione. Valori validi: OP_BUY, OP_SELL o -1. Il valore predefinito -1 significa qualsiasi posizione.
  • mn - Identificatore di posizione, MagicNumber. Il valore predefinito -1 significa qualsiasi identificatore.
  • //+----------------------------------------------------------------------------+
    //|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
    //+----------------------------------------------------------------------------+
    //|  Версия   : 19.05.2008                                                     |
    //|  Описание : Возвращает флаг закрытия последней позиции по тейку.           |
    //+----------------------------------------------------------------------------+
    //|  Параметры:                                                                |
    //|    sy - наименование инструмента   (""   - любой символ,                   |
    //|                                     NULL - текущий символ)                 |
    //|    op - операция                   (-1   - любая позиция)                  |
    //|    mn - MagicNumber                (-1   - любой магик)                    |
    //+----------------------------------------------------------------------------+
    bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
      datetime t;
      double   ocp, otp;
      int      dg, i, j=-1, k=OrdersHistoryTotal();
    
      if (sy=="0") sy=Symbol();
      for (i=0; i<k; i++) {
        if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
          if (OrderSymbol()==sy || sy=="") {
            if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
              if (op<0 || OrderType()==op) {
                if (mn<0 || OrderMagicNumber()==mn) {
                  if (t<OrderCloseTime()) {
                    t=OrderCloseTime();
                    j=i;
                  }
                }
              }
            }
          }
        }
      }
      if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
        dg=MarketInfo(sy, MODE_DIGITS);
        if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
        ocp=NormalizeDouble(OrderClosePrice(), dg);
        otp=NormalizeDouble(OrderTakeProfit(), dg);
        if (ocp==otp) return(True);
      }
      return(False);
    }