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

 

Buona sera a tutti!

È sorta una domanda alla quale non avevo mai pensato prima. Cos'è una zecca? Come si forma? Quando si accumula un volume sufficiente di affari? Non può essere un prezzo minimo o un passo temporale, perché i tick non sono distribuiti uniformemente nel tempo e possono ripetere valori bid-ask precedenti.

E come funzionano gli scambi in MT? Per esempio, chiediamo il prezzo Ask, facciamo i calcoli e inviamo un ordine di acquisto. Sarà eseguito al prezzo di Ask che abbiamo ricevuto o al prezzo del prossimo tick (supponendo che tutti i calcoli siano fatti prima di ricevere informazioni su un nuovo tick)? Cioè, c'è una certa durata del tick e da cosa dipende, se sì?

 
AlexeyVik:

A seconda del numero di linee, dichiarate i buffer degli indicatori e contemporaneamente scrivete il valore in uno dei buffer dove viene disegnata la linea. E poi leggere questo valore dall'Expert Advisor attraverso iCustom().

È in due parole.

Sapete che quando disegnate la linea, specificate l'ora di inizio e di fine e il prezzo rispettivamente. Per il buffer, un ciclo deve essere tracciato su tutte le barre. Avresti dovuto guardare prima il codice e poi dare dei consigli. Altrimenti il tuo consiglio è inutile 0......
 
nikelodeon:
Sapete che quando disegnate la linea, specificate l'ora di inizio e di fine e, di conseguenza, il prezzo. Per il buffer, dovremmo fare un ciclo su tutte le barre. Avresti dovuto guardare prima il codice e poi dare dei consigli. Altrimenti il tuo consiglio è inutile 0......

Devi mettere il prezzo nel buffer.

E il ciclo è necessario solo per garantire che le letture siano per tutte le barre. Per essere più precisi, è solo per bellezza, e come regola, tutti lavorano con letture delle ultime due barre, 0 e 1.

Se un indicatore non contiene l'elaborazione di tutte le barre, sembra che non sia necessario.

Sono pigro come molti altri ad afferrare il codice, forse anche più pigro di tutti loro insieme, e tu mi consigli di guardare il codice... di cosa ho bisogno? Ho chiesto in poche parole. Qualunque sia la domanda, questa è la risposta. E se il mio consiglio è inutile, significa che sto consigliando la persona sbagliata.

 
AlexeyVik:

È il prezzo che deve essere messo nel buffer.

E il ciclo è necessario solo per garantire che le letture siano per tutte le barre. Per essere più precisi, è solo per bellezza, e come regola, tutti lavorano con letture delle ultime due barre, 0 e 1.

Se il vostro indicatore non contiene l'elaborazione di tutte le barre, probabilmente non ne avete bisogno.

Sono pigro come la maggior parte delle persone a scavare in questo codice, e forse anche più pigro di tutti loro insieme, e tu mi consigli di guardare il codice... di cosa ho bisogno? Ho chiesto in poche parole. Qualunque sia la domanda, questa è la risposta. E se il mio consiglio è inutile, significa che sto consigliando la persona sbagliata.

Non voglio davvero, anche se non sono un buon programmatore, ma scrivo codice, non importa quanto possa essere brutto. E l'essenza della domanda è questa. Come organizzare un ciclo per il buffer per visualizzare i livelli di opzioni sulla storia. In modo da poter poi lavorare con questa storia, controllare le ipotesi e salvare i dati. Dobbiamo organizzare un ciclo competente. Penso che sia qui che il compito diventa interessante...... Ma non mi viene in mente nessuna idea.... come farlo. Sento che è necessario legarsi alle date e in qualche modo danzare da esse. Ma c'è un problema di tempo. In generale, risulta essere un bel problema .... Mi piacerebbe sentire un'opinione su più dettagli. E il fatto che nel buffer bisogna scrivere il prezzo!!!! Non sono così stupido, credetemi, da non capirlo.....

 
Penso che dovremmo aspettare l'inizio della settimana e vedere se i professionisti tornano dalla campagna e iniziano a consigliare.....
 
nikelodeon:

Non sono proprio un programmatore, ma scrivo ancora codice, non importa quanto sia storto. E l'essenza stessa della domanda è. Come organizzare un ciclo per il buffer per visualizzare i livelli di opzioni sulla storia. In modo da poter poi lavorare con questa storia, controllare le ipotesi e salvare i dati. Dobbiamo organizzare un ciclo competente. Penso che sia qui che il compito diventa interessante...... Ma non mi viene in mente nessuna idea.... come farlo. Sento che è necessario legarsi alle date e in qualche modo danzare da esse. Ma c'è un problema di tempo. In generale, risulta essere un bel problema .... Mi piacerebbe sentire un'opinione su più dettagli. E il fatto che nel buffer bisogna scrivere il prezzo!!!! Non sono così stupido, credetemi, da non capirlo.....

Ecco, l'intero ciclo è a posto e organizzato correttamente e i buffer si riempiono.

 for(i=limit; i>=0; i--){  
      if ((Close[i+5]>Level1)&&(Open[i+5]>Level1)&&(Close[i]>Level1)&&(Open[i]>Level1)&&(Close[i+1]>Level1)&&(Open[i+1]>Level1)&&(Close[i+2]>Level1)&&(Open[i+2]>Level1)&&(Close[i+3]>Level1)&&(Open[i+3]>Level1)&&(Close[i+4]>Level1)&&(Open[i+4]>Level1)) qLevel1=Level1+EnterUP;  
      if ((Close[i+5]<Level1)&&(Open[i+5]<Level1)&&(Close[i]<Level1)&&(Open[i]<Level1)&&(Close[i+1]<Level1)&&(Open[i+1]<Level1)&&(Close[i+2]<Level1)&&(Open[i+2]<Level1)&&(Close[i+3]<Level1)&&(Open[i+3]<Level1)&&(Close[i+4]<Level1)&&(Open[i+4]<Level1)) qLevel1=Level1-EnterDw;  
      if ((Close[i+5]>Level2)&&(Open[i+5]>Level2)&&(Close[i]>Level2)&&(Open[i]>Level2)&&(Close[i+1]>Level2)&&(Open[i+1]>Level2)&&(Close[i+2]>Level2)&&(Open[i+2]>Level2)&&(Close[i+3]>Level2)&&(Open[i+3]>Level2)&&(Close[i+4]>Level2)&&(Open[i+4]>Level2)) qLevel2=Level2+EnterUP;  
      if ((Close[i+5]<Level2)&&(Open[i+5]<Level2)&&(Close[i]<Level2)&&(Open[i]<Level2)&&(Close[i+1]<Level2)&&(Open[i+1]<Level2)&&(Close[i+2]<Level2)&&(Open[i+2]<Level2)&&(Close[i+3]<Level2)&&(Open[i+3]<Level2)&&(Close[i+4]<Level2)&&(Open[i+4]<Level2)) qLevel2=Level2-EnterDw;  
      if ((Close[i+5]>Level3)&&(Open[i+5]>Level3)&&(Close[i]>Level3)&&(Open[i]>Level3)&&(Close[i+1]>Level3)&&(Open[i+1]>Level3)&&(Close[i+2]>Level3)&&(Open[i+2]>Level3)&&(Close[i+3]>Level3)&&(Open[i+3]>Level3)&&(Close[i+4]>Level3)&&(Open[i+4]>Level3)) qLevel3=Level3+EnterUP;  
      if ((Close[i+5]<Level3)&&(Open[i+5]<Level3)&&(Close[i]<Level3)&&(Open[i]<Level3)&&(Close[i+1]<Level3)&&(Open[i+1]<Level3)&&(Close[i+2]<Level3)&&(Open[i+2]<Level3)&&(Close[i+3]<Level3)&&(Open[i+3]<Level3)&&(Close[i+4]<Level3)&&(Open[i+4]<Level3)) qLevel3=Level3-EnterDw;  
      if ((Close[i+5]>Level4)&&(Open[i+5]>Level4)&&(Close[i]>Level4)&&(Open[i]>Level4)&&(Close[i+1]>Level4)&&(Open[i+1]>Level4)&&(Close[i+2]>Level4)&&(Open[i+2]>Level4)&&(Close[i+3]>Level4)&&(Open[i+3]>Level4)&&(Close[i+4]>Level4)&&(Open[i+4]>Level4)) qLevel4=Level4+EnterUP;  
      if ((Close[i+5]<Level4)&&(Open[i+5]<Level4)&&(Close[i]<Level4)&&(Open[i]<Level4)&&(Close[i+1]<Level4)&&(Open[i+1]<Level4)&&(Close[i+2]<Level4)&&(Open[i+2]<Level4)&&(Close[i+3]<Level4)&&(Open[i+3]<Level4)&&(Close[i+4]<Level4)&&(Open[i+4]<Level4)) qLevel4=Level4-EnterDw;  
      if ((Close[i+5]>Level5)&&(Open[i+5]>Level5)&&(Close[i]>Level5)&&(Open[i]>Level5)&&(Close[i+1]>Level5)&&(Open[i+1]>Level5)&&(Close[i+2]>Level5)&&(Open[i+2]>Level5)&&(Close[i+3]>Level5)&&(Open[i+3]>Level5)&&(Close[i+4]>Level5)&&(Open[i+4]>Level5)) qLevel5=Level5+EnterUP;  
      if ((Close[i+5]<Level5)&&(Open[i+5]<Level5)&&(Close[i]<Level5)&&(Open[i]<Level5)&&(Close[i+1]<Level5)&&(Open[i+1]<Level5)&&(Close[i+2]<Level5)&&(Open[i+2]<Level5)&&(Close[i+3]<Level5)&&(Open[i+3]<Level5)&&(Close[i+4]<Level5)&&(Open[i+4]<Level5)) qLevel5=Level5-EnterDw;  
      if ((Close[i+5]>Level6)&&(Open[i+5]>Level6)&&(Close[i]>Level6)&&(Open[i]>Level6)&&(Close[i+1]>Level6)&&(Open[i+1]>Level6)&&(Close[i+2]>Level6)&&(Open[i+2]>Level6)&&(Close[i+3]>Level6)&&(Open[i+3]>Level6)&&(Close[i+4]>Level6)&&(Open[i+4]>Level6)) qLevel6=Level6+EnterUP;  
      if ((Close[i+5]<Level6)&&(Open[i+5]<Level6)&&(Close[i]<Level6)&&(Open[i]<Level6)&&(Close[i+1]<Level6)&&(Open[i+1]<Level6)&&(Close[i+2]<Level6)&&(Open[i+2]<Level6)&&(Close[i+3]<Level6)&&(Open[i+3]<Level6)&&(Close[i+4]<Level6)&&(Open[i+4]<Level6)) qLevel6=Level6-EnterDw;  
      if ((Close[i+5]>Level7)&&(Open[i+5]>Level7)&&(Close[i]>Level7)&&(Open[i]>Level7)&&(Close[i+1]>Level7)&&(Open[i+1]>Level7)&&(Close[i+2]>Level7)&&(Open[i+2]>Level7)&&(Close[i+3]>Level7)&&(Open[i+3]>Level7)&&(Close[i+4]>Level7)&&(Open[i+4]>Level7)) qLevel7=Level7+EnterUP;  
      if ((Close[i+5]<Level7)&&(Open[i+5]<Level7)&&(Close[i]<Level7)&&(Open[i]<Level7)&&(Close[i+1]<Level7)&&(Open[i+1]<Level7)&&(Close[i+2]<Level7)&&(Open[i+2]<Level7)&&(Close[i+3]<Level7)&&(Open[i+3]<Level7)&&(Close[i+4]<Level7)&&(Open[i+4]<Level7)) qLevel7=Level7-EnterDw;  
      if ((Close[i+5]>Level8)&&(Open[i+5]>Level8)&&(Close[i]>Level8)&&(Open[i]>Level8)&&(Close[i+1]>Level8)&&(Open[i+1]>Level8)&&(Close[i+2]>Level8)&&(Open[i+2]>Level8)&&(Close[i+3]>Level8)&&(Open[i+3]>Level8)&&(Close[i+4]>Level8)&&(Open[i+4]>Level8)) qLevel8=Level8+EnterUP;  
      if ((Close[i+5]<Level8)&&(Open[i+5]<Level8)&&(Close[i]<Level8)&&(Open[i]<Level8)&&(Close[i+1]<Level8)&&(Open[i+1]<Level8)&&(Close[i+2]<Level8)&&(Open[i+2]<Level8)&&(Close[i+3]<Level8)&&(Open[i+3]<Level8)&&(Close[i+4]<Level8)&&(Open[i+4]<Level8)) qLevel8=Level8-EnterDw;  
      if ((Close[i+5]>Level9)&&(Open[i+5]>Level9)&&(Close[i]>Level9)&&(Open[i]>Level9)&&(Close[i+1]>Level9)&&(Open[i+1]>Level9)&&(Close[i+2]>Level9)&&(Open[i+2]>Level9)&&(Close[i+3]>Level9)&&(Open[i+3]>Level9)&&(Close[i+4]>Level9)&&(Open[i+4]>Level9)) qLevel9=Level9+EnterUP;  
      if ((Close[i+5]<Level9)&&(Open[i+5]<Level9)&&(Close[i]<Level9)&&(Open[i]<Level9)&&(Close[i+1]<Level9)&&(Open[i+1]<Level9)&&(Close[i+2]<Level9)&&(Open[i+2]<Level9)&&(Close[i+3]<Level9)&&(Open[i+3]<Level9)&&(Close[i+4]<Level9)&&(Open[i+4]<Level9)) qLevel9=Level9-EnterDw;  
      if ((Close[i+5]>Level10)&&(Open[i+5]>Level10)&&(Close[i]>Level10)&&(Open[i]>Level10)&&(Close[i+1]>Level10)&&(Open[i+1]>Level10)&&(Close[i+2]>Level10)&&(Open[i+2]>Level10)&&(Close[i+3]>Level10)&&(Open[i+3]>Level10)&&(Close[i+4]>Level10)&&(Open[i+4]>Level10)) qLevel10=Level10+EnterUP;  
      if ((Close[i+5]<Level10)&&(Open[i+5]<Level10)&&(Close[i]<Level10)&&(Open[i]<Level10)&&(Close[i+1]<Level10)&&(Open[i+1]<Level10)&&(Close[i+2]<Level10)&&(Open[i+2]<Level10)&&(Close[i+3]<Level10)&&(Open[i+3]<Level10)&&(Close[i+4]<Level10)&&(Open[i+4]<Level10)) qLevel10=Level10-EnterDw;  
      
Buffer1[i]=qLevel1;      
Buffer2[i]=qLevel2;      
Buffer3[i]=qLevel3;      
Buffer4[i]=qLevel4;      
Buffer5[i]=qLevel5;      
Buffer6[i]=qLevel6;      
Buffer7[i]=qLevel7;      
Buffer8[i]=qLevel8;      
Buffer9[i]=qLevel9;           
Buffer10[i]=qLevel10;  
//Buffer11[i]=LevelsVerticalShift;
 }

Ma ci deve essere qualche file per questo indicatore. Non si sa cosa dovrebbe esserci dentro.

 
nikelodeon:

Salva i valori delle linee di tendenza (segmenti orizzontali) nelle variabili del terminale, che per ogni linea possono assumere la forma di elementi di un array (se vuoi leggerli in un ciclo): {Line[0][0], Line[0][1], Line[0][2]..}, {Line[1][0], Line[1][1], Line[1][2]..}, ecc. Un'altra variabile di termine "Status 0/1" è usata per indicare ad un altro indicatore/consigliere quando i parametri di una nuova linea devono essere letti, dopo di che "Status" deve essere riportato alla sua posizione iniziale. Se le linee non vengono lette tutte insieme, ma man mano che arrivano, si può fare con un solo set Line[][].
 
AlexeyVik:

Ecco, l'intero ciclo è a posto e organizzato correttamente e i buffer si stanno riempiendo.

Ma ci deve essere un file per questo indicatore. Non si sa cosa dovrebbe esserci dentro.

Che fa cose così terribili. L'autore non può pensarci su?
 
Vinin:
Chi fa cose così spaventose? L'autore non può pensarci?
E io? Non sono l'autore... Non ho nemmeno bevuto un drink con lui.
 
DD! Non posso aprire una finestra nel terminale. È congelato fino al midollo. Qualche indicatore si blocca lì e non permette di aprire la finestra. Per favore consigliatemi come posso vedere quali indicatori sono impostati su questo grafico. Voglio usarlo come base per il mio robot di trading.