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

 
SGarnov:

Numero di stop di fila su una coppia di valute.

L'Expert Advisor sta su diverse coppie di valute e nella storia ci sono diversi stop e in diversa sequenza, per capire la storia l'EA inizialmente etichetta gli ordini con ID ma non li trova nella storia, ho pensato che ОrderMagikNumber() li cercherà. Forse, a causa del fatto che nella storia, l'EA smette di "vedere" gli stop di diverse coppie di valute? Non ho provato ad usare l'EA su una coppia e sarà inutile.

Devo esporre di nuovo il codice sorgente? Tutto quello che deve fare è correggere "cercare i trade stop dalla storia e farli aggiungere al take appena piazzato".

E se ci sono più di due stop su una coppia, come si riprende il lavoro dell'EA su questa coppia?

E comunque OrderMagicNumber() imposta l'EA e gli ordini inseriti manualmente senza un mago
 
MakarFX:

E se ci sono più di due stop di fila su una coppia, come si riattiva l'EA su quella coppia?

Lo faccio con un nuovo pendolo, che ho impostato io stesso.
 
SGarnov:
Unnuovo pendolo, che ho montato io stesso.
Devo aggiungere i punti delle perdite precedenti o un nuovo ciclo di conteggio delle perdite?
 
MakarFX:
È necessario aggiungere i punti delle perdite precedenti o del nuovo ciclo di perdite?

No. Non è necessario aggiungere i precedenti. solo quando l'EA inizia a lavorare.

L'Expert Advisor implementerà sempre solo 4 varianti di eventi, se il coefficiente di Stop Loss è 2.

A) Take profit + 1 stop, l'Expert Advisor smetterà di funzionare

B) Prendi + 1 stop, l'EA smetterà di funzionare

C) Take + 2 ferma EA smette di funzionare

D) 3 fermate EA smette di funzionare

 
SGarnov:

Buon pomeriggio. Aiuto con l'EA. Secondo la strategia, se uno stop è scattato, allora l'EA dovrebbe aggiungere (il numero di punti) al prossimo set takeaway
dalla storia per ID, ma non lo fa per qualche motivo.

Cosa c'è di sbagliato nel codice?

Se volete assicurarvi un profitto minimo, è sufficiente aggiungere spread allo stop e take profit ad un certo valore. Più precisamente, la quantità di serie aritmetica * spread (quanti spread sono persi, di quanto è aumentato). Basta non aumentare l'intervallo molto più grande di quello giornaliero.

L'opzione migliore - in OrderMagic o Comment, salvare il valore iniziale dello stop in punti, o il numero di fallimenti in una riga. In generale, l'Expert Advisor dovrebbe ricordare tutti i suoi ordini/posizioni e non interrogare inutilmente il terminale (e il server)

 
Maxim Kuznetsov:

Per farlo funzionare con un profitto minimo, è sufficiente aggiungere lo spread sia allo stop che al take. Più precisamente, la quantità di serie aritmetiche * spread (quanti spread vengono persi, di quanto vengono aumentati). Basta non aumentare l'intervallo molto più grande di quello giornaliero.

L'opzione migliore - in OrderMagic o Comment, salvare il valore iniziale dello stop in punti, o il numero di fallimenti in una riga. In generale, l'Expert Advisor dovrebbe ricordare tutti i suoi ordini/posizioni e non interrogare inutilmente il terminale (e il server)

Per quanto riguarda il codice, dovrebbe, ma non lo vedo nella cronologia, puoi aiutarmi?
 

Sto chiedendo aiuto alla comunità...
Come dichiarare e creare oggetti globali MQL5 correttamente?

Se lo faccio in questo modo

int OnInit()
{
   CIsNewBar* NB_M1=new CIsNewBar(_Symbol,PERIOD_M1);  // Эта строка потом будет в цикле для разных символов
}

void OnTick()
{
    if (NB_M1.IsNewBar())  // (1) Если появился новый бар M1
        {....}
    ......
}

Il compilatore si lamenta della linea in OnTick(): 'NB_M1' - identificatore non dichiarato, che è logico, perché una variabile locale è creata in OnInit().

Se inserite la dichiarazione globale prima di OnInit():

CIsNewBar* NB_M1;

si compila senza errori e l'esperto funziona. Sembra che l'oggetto sia creato due volte - durante la dichiarazione globale e in OnInit().
Ma il compilatore ha questo avvertimento

la dichiarazione di 'NB_M1' nasconde la variabile globale -> per linea in OnInit()

vedere la dichiarazione precedente di 'NB_M1'

Significa che una variabile locale (all'interno di una funzione) viene creata in OnInit() che nasconde una variabile globale con lo stesso nome?
E se è così, come può questa variabile locale essere "vista" da un'altra funzione, OnTick() ?




 
SGarnov:

No. Non hai bisogno di aggiungere i precedenti. solo quando l'EA inizia a lavorare.

L'Expert Advisor implementerà sempre solo 4 opzioni, se il valore di Stop Loss è uguale a 2.

A) Prendere

B) Prendere + 1 fermata

C) Prendere + 2 fermate

D) 3 fermate

il consulente smette di funzionare

Capisco, farò un tentativo.
 

Non so ancora a chi è indirizzato questo messaggio. Non posso creare un pannello opaco. Le funzioni OBJ_BITMAP_LABEL, OBJ_RECTANGLE_LABEL sono progettate per decorare o creare nuovi oggetti. Ma non hanno un'opzione di non trasparenza. Forse non ho studiato abbastanza la lingua o è un difetto dei creatori. Gli oggetti creati in primo piano appaiono attraverso il pannello di controllo. Il contrario può essere usato, ma sovraccaricherà il Procyc. Se qualcuno sa come farlo, per favore me lo dica.

 
MakarFX:
Capisco, lo proverò.

Per facilitarvi prendete il mio codice sorgente, ha una logica che funziona, tranne il problema che ho descritto, non lo capisco bene, la mia testa sta bollendo ma non riesco a trarne alcun uso.

Motivazione: