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

 
trader781:

Non capisco dove metterlo e perché non è (-1)

c'è un parametro di ingresso bool

void OnTick

{analisi dell'apertura degli ordini, trailing stop}

vuoto Trailing Stop

{corrisponde alle condizioni di chiusura

se sì, copriamo tutto quello che c'è

}

Infatti, ritorna; è un vuoto

Non so quale sia la vostra logica. Come ti aspetti che io indovini quello che hai lì?
 
trader781:

di tre punti

1 punto esterno dove impostiamo se vogliamo aprire il secondo o più ordini

2) una condizione in cui dobbiamo aprire il primo ordine

3) punto di chiusura dell'ordine

Posso mandarti il codice ma è lo stesso per tutti

Allora, perché sporcate il thread se non avete bisogno di aiuto?

Non troverete messaggi utili in mille pagine inutili

P.S. O il tuo obiettivo è quello di riempire i tuoi post al massimo?
 
trader781:
Allora chiedo uno schema dell'interruttore su questi tre punti. Allora cancellerò i miei post se li consideri spazzatura.

Qual è questo punto?

1 punto esterno dove impostiamo se vogliamo aprire il secondo o più ordini

2) una condizione in cui dobbiamo aprire il primo ordine

3) punto di chiusura dell'ordine

Sai almeno cosa vuoi?

Non si può impostare un ordine nel punto 2, non si può chiudere e si può solo cancellare. In generale, tutto quello che hai è in qualche modo logicamente incoerente e vago, devi essere un deputato.

 

C'è questa parte del codice:

if(ObjectFind(0,nm)<0) {
    ObjectCreate(0,nm,OBJ_TEXT,0,0,0);
    ObjectSetString(0,nm,OBJPROP_PRICE, TIME(0)+Period()*60*3); // сдвиг вправо на 3 свечи
}

Domanda:Periodo() restituisce un valore sano fino a M30, da H1 un insieme di cifre, e non è più possibile compensare il segno in questo modo.

Come spostare da N - candelieri indipendentemente dal periodo? Non devo scrivere una funzione separata, vero?

 
Vitaly Muzichenko:

C'è questa parte del codice:

if(ObjectFind(0,nm)<0) {
    ObjectCreate(0,nm,OBJ_TEXT,0,0,0);
    ObjectSetString(0,nm,OBJPROP_PRICE, TIME(0)+Period()*60*3); // сдвиг вправо на 3 свечи
}

Domanda:Periodo() restituisce un valore sano fino a M30, da H1 un insieme di cifre, e il marcatore non può più essere spostato in questo modo.

Come spostare da N - candelieri indipendentemente dal periodo? Non devo scrivere una funzione separata, vero?

PeriodSeconds(PERIOD_CURRENT)*3
 
Artyom Trishkin:
PeriodSeconds(PERIOD_CURRENT)*3

Grazie!

La domanda è: quanto è corretta questa voce, è all'inizio del programma, mentre in tutto il programma vengono usati molti Time[0] e Time[1], e non per essere chiamati ogni volta, è scritto in una variabile. Sembra che non ci siano errori al di fuori dell'array, ma tutto è definito superficialmente:

datetime TM[], TIME0, TIME1;

//------------
void OnTimer()

ArraySetAsSeries(TM, true);
  if(CopyTime(_Symbol, PERIOD_CURRENT, 0, 2, TM)==-1) return;
   TIME0 = TM[0];
   TIME1 = TM[1];

Grazie!

 
Vitaly Muzichenko:

Qual è questo punto?

1 punto esterno dove impostiamo se vogliamo aprire il secondo o più ordini

2) una condizione in cui dobbiamo aprire il primo ordine

3) punto di chiusura dell'ordine

Sai almeno cosa vuoi?

Non si può impostare un ordine nel punto 2, non si può chiudere e si può solo cancellare. In generale, sei sempre in qualche modo logicamente incoerente e vago, hai bisogno di essere un deputato.

per favore. Ecco il parametro esterno bool OpenOrders=false;//+---ordine aperto

Ho bisogno che apra gli ordini, li chiuda e poi rimanga sul grafico senza consumare risorse

al momento è autosegata (funziona, ma è inaccettabile per un elemento del pannello)

File:
 
trader781:

per favore. Ecco il parametro esterno bool OpenOrders=false;//+---ordine aperto

Ho bisogno che apra un ordine, lo chiuda e poi rimanga sul grafico senza consumare risorse

al momento è autosegata (funziona, ma è inaccettabile per un elemento del pannello)

Io l'avrei fatto. Aggiungere "Disabilitato" al codice

P.S. Sostituire la linea 72 con "if(! Disabled) return;". Penso che la logica della bandiera sia chiara.
File:
 
Vitaly Muzichenko:

Io farei quanto segue. Aggiungere "Disabilitato" al codice.

P.S. Sostituire la linea 72 con "if(! Disabled) return;". Penso che la logica della bandiera sia chiara.

No, non è chiaro. Tornare da dove siamo venuti.

1) Disabled=true

inizializzare a true inite

passare a ontik if(!Disabled) return;

aprire chiudere

Disabled=false; exit. Tutto è a posto.

2) Disabled=false

inizializzare ontik a true

passare a ontic if(!Disabled) return;

aprire chiudere

Disabled=false; exit. Dove devo aprire il prossimo ordine? Qualche variante dovrebbe permetterlo.

Ora capisci perché ti ho chiesto di descrivere la logica?

Ho anche un'opzione di 2 EAs.

 
trader781:

No, non capisco. Torniamo da dove siamo venuti.

1) Disabled=true

inizializzare nell'inite a true

passare a ontik if(!Disabled) return;

aprire chiudere

Disabled=false; exit. Tutto è a posto.

2) Disabled=false

inizializzare ontik a true

passare a ontic if(!Disabled) return;

aprire chiudere

Disabled=false; exit. Dove devo aprire il prossimo ordine? Qualche variante dovrebbe permetterlo.

Ora capisci perché ti ho chiesto di descrivere la logica?

Ho anche un'opzione di 2 EAs.

Non è chiaro. Se hai bisogno di fermare l'EA, allora la variante suggerita fa fronte a questo, se non c'è bisogno di fermarlo, allora lascialo commerciare e non limitarlo in alcun modo. Se volete fare trading su richiesta dopo lo stop, è sufficiente cambiare il tempo, Disabilitato diventerà vero e il programma continuerà a lavorare