[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 315

 
dekker:

Amici!

È sorta una domanda globale

È possibile ottenere il flusso di tick nel terminale durante il fine settimana, in modo da poter scrivere e fare il debug degli EA in modo tranquillo?

Ho già qualche consiglio su come usarlo nel mio robot di trading.

Non posso usare un solo tick per attivare l'EA, ho bisogno di un flusso di tick in un certo intervallo

esiste una cosa del genere in natura?

server mt4 che emulano le quotazioni in streaming nei fine settimana?

ci sono broker che lavorano nei fine settimana, cercate su Google
 
dekker:

Amici!

È sorta una domanda globale

È possibile ottenere il flusso di tick nel terminale durante il fine settimana, in modo da poter scrivere e fare il debug degli EA tranquillamente?

Ho già qualche consiglio su come usarlo nel mio robot di trading.

Non posso usare un solo tick per far scattare l'EA, ho bisogno di un flusso di tick in un certo intervallo

esiste una cosa del genere in natura?

server mt4 che emulano le quotazioni in streaming nei fine settimana?

Appendere uno script -
#import "user32.dll"
   int PostMessageA(int hWnd, int Msg, int wParam, string lParam);
   int RegisterWindowMessageA(string lpString);
#import

int start(){
   bool asd;
   while(!IsStopped()){
      PostMessageA (WindowHandle (Symbol(), Period()), WM_COMMAND, 33324, 0);
      PostMessageA (WindowHandle (Symbol(), 0), RegisterWindowMessageA ("MetaTrader4_Internal_Message"), 2, 1);
      Sleep(5000);
      if(asd){Comment("A");asd=false;}else{Comment("V");asd=true;}
   }
   return(0);
}
emulazione di tick. Non so se è quello di cui hai bisogno o no. C'è anche un timer, sia con kernel32 che con user32, cercatelo sul forum.
 

Ciao a tutti, per favore aiutate un nuovo arrivato.

La domanda è la seguente ... per esempio ho un indicatore ed è disegnato nella #proprietà indicator_separate_window, l'indicatore ha due "buffer", risultano due linee ... la mia domanda è come fare una freccia o linea nella finestra MAIN (non la finestra dell'indicatore, ma la finestra del grafico dei prezzi) quando le linee si incrociano ...?

Per esempio prendere un normale RSI, come fare una linea che attraversa con zero per visualizzare le frecce sul grafico del prezzo ...

 
clubsmi:

Ciao a tutti, per favore aiutate un nuovo arrivato.

La domanda è la seguente ... per esempio ho un indicatore ed è disegnato nella #proprietà indicator_separate_window, l'indicatore ha due "buffer", risultano due linee ... la mia domanda è come fare una freccia o linea nella finestra MAIN (non la finestra dell'indicatore, ma la finestra del grafico dei prezzi) quando le linee si incrociano ...?

Per esempio prendere un RSI regolare, come fare la linea che attraversa lo zero per visualizzare le frecce sul grafico del prezzo ...


Altro indicatore su#property indicator_chart_window via iCustom, e lì su DRAW_ARROW.
 

Non riesco a capire l'espressione:

if (counted_bars==0 && downloadhistory)

se il numero di barre contate =0 edownloadhistory?downloadhistory è una variabile logica globale inizialmentefalsa. Quale condizione porta con sé? Capirei se la condizione fosse questa

se (counted_bars==0 && downloadhistory == false)

Spiegare a un principiante, per favore!

 
dekker:

Amici!

È sorta una domanda globale

È possibile ottenere il flusso di tick nel terminale durante il fine settimana, in modo da poter scrivere e fare il debug degli EA in modo tranquillo?

Ho già qualche consiglio su come usarlo nel mio robot di trading.

Non posso usare un solo tick per attivare l'EA, ho bisogno di un flusso di tick in un certo intervallo

esiste una cosa del genere in natura?

server mt4 che emula un flusso di quotazioni nei fine settimana ?

Biblioteca.

Sezione"4.7 Funzioni per controllare gli aggiornamenti del grafico".

 

Un'altra cosa:)

C'è uno ZigZag nell'applicazione MT4 negli indicatori personalizzati. Ha dei parametri:

//---- indicator parameters
extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;

Cosa rappresentano?

 

Vadim, non funziona. Dato che è il fine settimana, sto studiando la lettura-scrittura per conto mio. Sto scrivendo due script per il controllo: ne metto uno su un lasso di tempo di secondi e genera un array elemento per elemento. Il secondo lo invio a qualsiasi coppia e stampa questo array. Quindi, sceneggiature:

Secondi:

#import "SharedMemoryMT4.dll"
        bool MemoryWriteInt(int nArea, string sPrefixArea, int nIndex, string sName, int nStartByte, int nValue);
        int MemoryCreateProjection(int nArea, string sPrefixArea, int hFileUser, int nIndex, string sName, int nSize);
        bool MemoryResize(int nArea, string sPrefixArea, int nIndex, string sName, int nSize);
#import
int Σ, Δt, j;
int start(){
   GlobalVariableSet("nAddress", MemoryCreateProjection(1, "", NULL, -1, "ind", 4));
   for(int i=1; i>Bars; i++){
      Δt=Time[i-1]-Time[i];
      Σ=Σ+Δt;
      MemoryResize(1, "", -1, "ind", 4*Σ);//=ArrayResize(ind, Σ);
      for(; j<Σ; j++) MemoryWriteInt(1, "", -1, "ind", j*4, i);
   }
   /*
   Δt[0]=1 => addr(j*4)=0*4=0, var(i)=0x0001.//out: {0x0001}
   Δt[0]=2 => addr(j*4)=0*4=0, var(i)=0x0001,
              addr(j*4)=1*4=4, var(i)=0x0001.//out: {0x0001, 0x0001}
   Δt[0]=1, Δt[1]=2 => addr(j*4)=1*4=4, var(i)=0x0002,
                       addr(j*4)=2*4=8, var(i)=0x0002.//out: {0x0001, 0x0002, 0x0002}
   Δt[0]=2, Δt[1]=2 => addr(j*4)=2*4=8, var(i)=0x0002,
                       addr(j*4)=3*4=12, var(i)=0x0002.//out: {0x0001, 0x0001, 0x0002, 0x0002}
   */
   return(0);
  }

Il secondo script, che stampa l'array, si blocca su qualsiasi coppia già formata:

#import "SharedMemoryMT4.dll"
        int MemoryReadInt(int nArea, string sPrefixArea, int nIndex, string sName, int nStartByte);
        bool MemoryUnProjection(int nArea, string sPrefixArea, int nIndex, string sName, int pcAddress);
        int MemorySize(int nArea, string sPrefixArea, int nIndex, string sName);
#import

int start(){
   for(int i=0; i<MemorySize(1, "", -1, "ind"); i=i+4) Print(MemoryReadInt(1, "", -1, "ind", 4*i));
   MemoryUnProjection(1, "", -1, "ind", GlobalVariableGet("nAddress"));
   return(0);
  }

Per essere giusti, ho messo

{MemoryWriteInt(1, "", -1, "ind", j*4, i); Print(j, " - ", i);}

il secondo per. Guardando il registro. Almeno alcuni valori sono scritti agli indirizzi, o meglio agli offset relativi a nAddress: 0-3FF, 7FF-83FF, BFFF-C3FF. Per tutti gli altri intervalli - errore critico inMemoryWriteInt. Allego il file della cronologia con i candelieri secondi.

File:
sec_eurusd1.zip  18 kb
 
gyfto:

Vadim, non funziona. Dato che è il fine settimana, sto studiando la lettura-scrittura per conto mio. Sto scrivendo due script per il controllo: ne ho messo uno su un timeframe di secondi e genera un array elemento per elemento. Il secondo lo mando a qualsiasi coppia e stampa questo array. Quindi, sceneggiature:

Secondi:

Il secondo script, che stampa l'array, si blocca su qualsiasi coppia già formata:

Per essere giusti, ho messo

il secondo per. Guardando il registro. Almeno alcuni valori sono scritti agli indirizzi, o meglio agli offset relativi a nAddress: 0-3FF, 7FF-83FF, BFFF-C3FF. Per tutti gli altri intervalli - errore critico inMemoryWriteInt. Allego il file della cronologia con i candelieri secondi.

Lo script di prova del kit funziona?

Non è necessario cambiare la dimensione della memoria allocata così spesso. Questo è un freno. La memoria è allocata discretamente da 4Kb. Arrotondato. Questa è una funzione di mappatura.

Fate un semplice progetto di prova in modo da poterlo controllare. Quello che pubblicate è impossibile da controllare. Ci sono troppi errori di sintassi.

 
GaNDarM:

Non riesco a capire l'espressione:

se il numero di barre contate =0 edownloadhistory?downloadhistory è una variabile logica globale inizialmentefalsa. Quale condizione porta con sé? Capirei se la condizione fosse questa

se (counted_bars==0 && downloadhistory == false)

Per favore, spiegatelo a un principiante!


Lasciatemi provare ora. Quando scriviamo

bool bVar=true;
if(bVar) какие-то_действия
//------------------
bool bVar=false;
if(!bVar) какие-то_действия
//------------------
if(true) какие-то_действия

allora in tutti i casi queste azioni saranno sempre eseguite, perché le prime due sono simili alla terza (controllare, semplificare l'espressione). Cioè, se sono variabili booleane, non abbiamo bisogno di mettere ==true, ==false, perché sono già vere o false da sole.

Motivazione: