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

 
sergeev:
Cosa esattamente non funziona?


la posizione non si apre.
 
IgorM:

Prova in questo modo:


O io non capisco qualcosa, o tu hai frainteso il problema.

c'è un prezzo Close[2] di 1,34529 e un prezzo Open[1] di 1,34530

Ho una condizione per aprire la posizione.

Close[2] >= Open[1]

Poiché 10 - 20 pips (in 5 cifre) non giocano un ruolo importante, ho bisogno di metterlo nel programma,

Se il prezzo di chiusura è 1,34529 e il prezzo di apertura è 1,34530, la posizione può ancora essere aperta.

 
kilnart:

la posizione non si apre.

???

allora cosa c'entra la condizione del prezzo?

Guarda il codice dopo, c'è un altro errore.

 
Poi il prezzo che soddisfa la condizione va sul grafico e la posizione viene aperta.
 
Ricontrollo il codice e ti faccio sapere.
 
kilnart:


O io non capisco, o tu hai frainteso il compito.

......

10 - 20 ppts (in 5 cifre) non giocano un grande ruolo, è necessario metterlo nel programma

a quanto pare hai scritto prima il tuo post precedente e poi ti sei chiesto solo quello che volevi sentire in risposta....

davvero, 10-20pts in 5 cifre non importa molto, ho mostrato come confrontare correttamente le variabili come il doppio, sospetto che il tuo problema non sia nel fare la giusta condizione. Prova a formulare prima una domanda chiara e non ambigua per ottenere una risposta non ambigua

 
IgorM:

a quanto pare hai scritto prima il tuo post precedente e poi ti sei chiesto solo quello che volevi sentire in risposta....

davvero, 10-20 pp in 5 cifre non è un grosso problema, ho mostrato come confrontare correttamente le variabili di tipo doppio, ho il sospetto che il tuo problema non è nel fare la condizione giusta. Prova a formulare prima una domanda chiara e non ambigua per ottenere una risposta non ambigua


Solo che, imho, è sbagliato paragonare i doppi così. Per esempio, quattro cifre, i prezzi 1.00014 e 1.00016 sono equivalenti a 1.0001 e 1.0002, ma 1.00016 a 1.00014 < Punto
 
220Volt: Solo che, imho, è sbagliato paragonare il doble in questo modo. Per esempio, quattro cifre, prezzi 1.00014 e 1.00016, equivalenti a 1.0001 e 1.0002, ma 1.00016 - 1.00014 < Punto

Tu confondi il confronto di doppie e l'arrotondamento, hai bisogno di una chiara dichiarazione della domanda: o arrotondare una 5 cifre in una 4 cifre e poi fare l'analisi nella 4 cifre, o semplicemente confrontare correttamente due doppie.

Se confrontate due doppie allora quella parte di codice che ho citato funzionerà correttamente sia per 4 che per 5 cifre:

switch(Digits){
   case 5: if(1.00014-1.00016>=10*Point); условие= false, -0.00002 меньше 0.00001*10   // цена больше на 10 пп в 5-ти знаке
   case 4: if(1.0001-1.0002>=Point); условие= false, -0.0001 меньше 0.0001          // цена больше на 1 пп в 4-х знаке
}

guarda: https://www.mql5.com/ru/articles/1561 e https://www.mql5.com/ru/forum/101433

SZZ: ho fatto un errore nel mio codice: il caso dovrebbe essere chiuso da break, cioè così:

switch(Digits){
   case 5: if(Close[2]-Open[1]>=10*Point);// цена больше на 10 пп в 5-ти знаке
           break;
   case 4: if(Close[2]-Open[1]>=Point);// цена больше на 1 пп в 4-х знаке
           break;
}
 
IgorM:

Tu confondi il confronto e l'arrotondamento del doppio, hai bisogno di una chiara dichiarazione della domanda: o arrotondare 5 cifre a 4 cifre e poi fare l'analisi in 4 cifre o semplicemente confrontare correttamente due doppi.

Se confrontate due doppie allora quella parte di codice che ho citato funzionerà correttamente sia per 4 che per 5 cifre:

guarda: https://www.mql5.com/ru/articles/1561 e https://www.mql5.com/ru/forum/101433

ZS: Ho fatto un errore nel mio codice: il caso dovrebbe essere chiuso con break, cioè così:


Anche se probabilmente hai ragione, probabilmente non ha importanza per l'autore. Io conto ogni pip, quindi guardo queste situazioni dal mio punto di vista.
 

Ecco, sono tutto incasinato e la mia testa non funziona più.

Ecco il codice

       double Low1=Low[iLowest(NULL,0,MODE_LOW,3,0)],
              Low2=Low[iLowest(NULL,0,MODE_LOW,20,0)];
         
         if(Low1<Low2 && Open[2]>Close[2])    
          {
            if(Open[1]<=Close[2] && Open[2]<Close[1])
             {
                 double sl=Low[iLowest(NULL,0,MODE_LOW,3,0)],
                        tp=Ask+(Open[2]-Low[2]);
                 OrderSend(Symbol(),OP_BUY,0.1,Ask,3,sl,tp);
                 return;
             }
          }

Ho bisogno di trovare il punto minimo delle ultime 3 candele. confrontarlo con il prezzo minimo delle ultime 20 candele. se le ultime 3 candele sono più basse e la candela è nera ( Open[2]>Close[2] ) allora guarda oltre.

Ho bisogno di trovare un takeover ribassista ( Open[1]<=Close[2] && Open[2]<Close[1] ).

E aprire una posizione di acquisto.

Sembra essere corretto, ma sento che c'è qualcosa di sbagliato.

Vi sarò molto grato se potete aiutarmi.