[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 398

 
solnce600:

Penso di aver fatto tutto bene .... Ancora non si apre (nel tester)

Nessuna informazione di errore neanche nel registro http://clip2net.com/s/5aLodh

Non riesco a capire - qual è il problema?

Dobbiamo normalizzare Price.

double Price=NormalizeDouble(0.9022, Digits);
 
PapaYozh:

Dobbiamo normalizzare Price.

Papà! Grazie mille..... e un'altra piccola domanda....

Voglio aprire un ordine solo se

1. La distanza tra il prezzo di apertura della candela N 30 e il massimo della candela N 1 è più di 150 p.


2. Il tempo di apertura di una candelaN 30 è uguale a - QUALSIASI ORA, QUALSIASI DATA, ma il valore di MINUTI DEVE ESSERE 15 ( cioè0:15;1:15;....23:15)

se ((High[1]-Open[30])> 1500*Point) && (??????????????????)

//ordine aperto

Volevo creare la seconda condizione usando la funzione Time [30], ma questa funzione restituisce valori non solo in minuti ma anche in ore, giorni e anni.

per la candela di cui ho bisogno. Anche la funzione Minute( ) non mi va bene, perché restituisce il valore dei minuti solo per la candela zero.

Si prega di consigliare il modo migliore per codificare questo punto.



 
solnce600:

Papà! Grazie mille..... e un'altra piccola domanda....

Voglio aprire un ordine solo se

1. La distanza tra il prezzo di apertura della candela N 30 e il massimo della candela N 1 è più di 150 p.


2. Iltempo di apertura di una candela N 30 è uguale a - QUALSIASI ORA, QUALSIASI DATA, ma il valore di MINUTI DEVE ESSERE 15 ( cioè0:15;1:15;....23:15)

se ((High[1]-Open[30])> 1500*Point) && (??????????????????)

//ordine aperto

Volevo creare la seconda condizione usando la funzione Time [30], ma questa funzione restituisce valori non solo in minuti ma anche in ore, giorni e anni.

per la candela di cui ho bisogno. Anche la funzione Minute( ) non mi va bene, perché restituisce il valore dei minuti solo per zero candele.

Per favore, consigliate come codificarlo meglio.

https://docs.mql4.com/ru/dateandtime/TimeMinute

 
PapaYozh:

Dobbiamo normalizzare Price.

Normalizzato. Ancora non si apre...

Anche se l'altro codice si apre senza normalizzazione....

int start()
 {
 double Price=NormalizeDouble(0.9022, Digits); 
 if  ((iTime( NULL,0, 0) )== D'14.08.2000 14 00')
 if (Bid == Price)
if(NormalizeDouble (MathAbs (Bid - Price ), Digits) <= 0.0005)  
 int Ticket= OrderSend(Symbol(),OP_SELL,0.1,Bid,1,Ask+1490*Point,Ask-110*Point,"jfh",123 );
}
return(0);
 
 
solnce600:

Normalizzato. Ancora non si apre...

Anche se altri codici si aprono senza normalizzazione....

Usate Print() e vedete quale condizione fallisce.
 
Buon pomeriggio a tutti. Date un'occhiata a questo indicatore. È possibile farlo funzionare correttamente?
Quando il prezzo si muove verso il basso c'è già una linea blu oltre a quella rossa (le rosse sono aggiunte, vedi allegati). Poi un cambio di tendenza, e qui tutto è corretto - solo il blu.

grazie in anticipo


/* Decompilato cancellato /*


 
solnce600:

Papà! Grazie mille..... e un'altra piccola domanda....

Voglio aprire un ordine solo se

1. La distanza tra il prezzo di apertura della candela N 30 e il massimo della candela N 1 è più di 150 p.


2. Iltempo di apertura di una candela N 30 è uguale a - QUALSIASI ORA, QUALSIASI DATA, ma il valore di MINUTI DEVE ESSERE 15 ( cioè0:15;1:15;....23:15)

se ((High[1]-Open[30])> 1500*Point) && (??????????????????)

//ordine aperto

Volevo creare la seconda condizione usando la funzione Time [30], ma questa funzione restituisce valori non solo in minuti ma anche in ore, giorni e anni.

per la candela di cui ho bisogno. Anche la funzione Minute( ) non mi va bene, perché restituisce il valore dei minuti solo per la candela zero.

Per favore, ditemi il modo migliore per codificare questo punto.

Per fissare (includere nei calcoli) il tempo dall'inizio (di QUALSIASI candela), è conveniente usare iBarShift (Symbol(), 1, punto di oscillazione). E il punto di oscillazione è l'inizio della barra del periodo che viene tracciato. Nel suo caso:

    if (iBarShift (Symbol(), 1, iOpen (Symbol(), PERIOD_M30, 0)) == 15) //что-то делаем

Avendo dato un'occhiata a un pezzo del tuo codice, posso dire che non pensi affatto a quello che stai scrivendo. Prova a pensarci (estratto):

if((Minute( ) ==45)&&(Minute( ) <50))

...

 
TarasBY:


Avendo intravisto un pezzo del tuo codice, posso dire che non stai pensando affatto a quello che stai scrivendo. Prova a pensarci (frammento):

...


Grazie per la sua risposta. Mi scusi per aver inviato il suo codice senza commenti.

Quello che pensate non abbia senso ha senso, e funziona

se(Bid==Price) // se il tempo è uguale al tempo di apertura della candela.si forma una nuova candela

if((Minute( ) ==45)&&(Minute( ) <50)) // se il valore del minuto all'apertura di una nuova candela è tra 45 e 50(il fatto è che alcune candele si aprono a 45 min, e non esattamente a 45 min. Ma con un ritardo, quindi uso &&(Minute( ) <50) per evitare di perdere candele che si aprono a 45 minuti ma in realtà si aprono 1,2,3,4 minuti dopo.)

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-1500*Point,Bid+150*Point, "jfh",123 );

}

ritorno;

Quindi l'ordine si apre all'inizio di ogni candela di 15 o 5 o 1 minuto, che tecnicamente si apre a 45 minuti (+ non più di 4 minuti, cioè con un ritardo).
 
solnce600:

Sto cercando di farvi capire un piccolo punto. Un punto molto IMPORTANTE: "quello che volevi prescrivere" e "quello che hai prescritto" sono cose completamente DIVERSE! Se nella condizione:

if((Minute( ) ==45)&&(Minute( ) <50))

Minute() == 46, allora la condizione GENERALE NON FUNZIONA!!! Che ne dite di questo:

if ((Minute() >= 45) && (Minute() < 50))

??? :-[

Motivazione: