[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 315

 
dekker:

Freunde!

Eine globale Frage ist aufgetaucht

Ist es möglich, den Tick-Stream im Terminal am Wochenende zu erhalten, so dass ich EAs in Ruhe schreiben und debuggen kann?

Ich habe bereits ein paar Tipps, wie ich sie in meinem Handelsroboter verwenden kann.

ich kann nicht einen Tick verwenden, der den EA auslöst, ich brauche einen Fluss von Ticks in einem bestimmten Bereich

gibt es so etwas in der Natur?

mt4-Server, die Streaming-Kurse an Wochenenden emulieren?

es gibt Makler, die an Wochenenden arbeiten, googeln Sie danach
 
dekker:

Freunde!

Eine globale Frage ist aufgetaucht

Ist es möglich, den Tick-Stream im Terminal am Wochenende zu erhalten, so dass ich EAs in Ruhe schreiben und debuggen kann?

Ich habe bereits ein paar Tipps, wie ich sie in meinem Handelsroboter verwenden kann.

ich kann nicht einen Tick verwenden, der den EA auslöst, ich brauche einen Fluss von Ticks in einem bestimmten Bereich

gibt es so etwas in der Natur?

mt4-Server, die Streaming-Kurse an Wochenenden emulieren?

Ein Skript aufhängen -
#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);
}
Zecken-Emulation. Ich weiß nicht, ob Sie das brauchen oder nicht. Es gibt auch einen Timer, entweder mit kernel32 oder user32, schauen Sie im Forum nach.
 

Hallo zusammen, bitte helfen Sie einem Neuankömmling.

Die Frage ist wie folgt ... zum Beispiel habe ich einen Indikator und es ist in der #property indicator_separate_window gezeichnet, der Indikator hat zwei "Puffer", es stellt sich heraus, zwei Linien ... meine Frage ist, wie man einen Pfeil oder eine Linie in der MAIN-Fenster (nicht der Indikator-Fenster, aber der Preis Chart-Fenster), wenn die Linien kreuzen ...?

Nehmen wir zum Beispiel einen regulären RSI, wie man eine Linie mit Null kreuzt, um Pfeile auf dem Preisdiagramm anzuzeigen ...

 
clubsmi:

Hallo zusammen, bitte helfen Sie einem Neuankömmling.

Die Frage ist wie folgt ... zum Beispiel habe ich einen Indikator und es ist in der #property indicator_separate_window gezeichnet, der Indikator hat zwei "Puffer", es stellt sich heraus, zwei Linien ... meine Frage ist, wie man einen Pfeil oder eine Linie in der MAIN-Fenster (nicht der Indikator-Fenster, aber der Preis Chart-Fenster), wenn die Linien kreuzen ...?

Nehmen wir zum Beispiel einen regulären RSI, wie man eine Linie mit Null kreuzt, um Pfeile auf dem Preisdiagramm anzuzeigen ...


Anderer Indikator auf#property indicator_chart_window über iCustom, und dort auf DRAW_ARROW.
 

Ich kann den Ausdruck nicht verstehen:

if (counted_bars==0 && downloadhistory)

wenn Anzahl der gezählten Takte =0 unddownloadhistory?downloadhistory ist eine globale logische Variable, die zunächstfalsch ist. In welchem Zustand ist es? Ich würde es verstehen, wenn die Bedingung diese ist

if (gezählte_Balken==0 && downloadhistory == false)

Erklären Sie das bitte einem Anfänger!

 
dekker:

Freunde!

Eine globale Frage ist aufgetaucht

Ist es möglich, am Wochenende den Tick-Stream im Terminal zu erhalten, so dass ich EAs in Ruhe schreiben und debuggen kann?

Ich habe bereits ein paar Tipps, wie ich sie in meinem Handelsroboter verwenden kann.

ich kann nicht einen Tick verwenden, der den EA auslöst, ich brauche einen Fluss von Ticks in einem bestimmten Bereich

gibt es so etwas in der Natur?

mt4-Server, der am Wochenende einen Strom von Kursen emuliert?

Bibliothek.

Abschnitt"4.7 Funktionen zur Aktualisierung der Regelkarte".

 

Eine Sache noch:)

In der MT4-Anwendung gibt es unter den benutzerdefinierten Indikatoren einen ZigZag. Sie hat Parameter:

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

Wofür stehen sie?

 

Vadim, es funktioniert nicht. Da es Wochenende ist, lerne ich das Lesen und Schreiben allein. Ich schreibe zwei Skripte für die Überprüfung: Ich habe eine von ihnen auf eine Sekunden Zeitrahmen und es erzeugt ein Array Element für Element. Die zweite sende ich an ein beliebiges Paar und es wird dieses Array gedruckt. Also, Skripte:

Sekunden:

#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);
  }

Das zweite Skript, das das Array ausgibt, hängt sich an ein bereits gebildetes Paar:

#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);
  }

Um fair zu sein, habe ich

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

die zweite für. Ich schaue mir das Protokoll an. Zumindest einige Werte werden an Adressen bzw. Offsets relativ zu nAddress geschrieben: 0-3FF, 7FF-83FF, BFFF-C3FF. Für alle anderen Bereiche - kritischer Fehler inMemoryWriteInt. Ich füge eine History-Datei mit Sekunden-Candlesticks bei.

Dateien:
sec_eurusd1.zip  18 kb
 
gyfto:

Vadim, es funktioniert nicht. Da es Wochenende ist, lerne ich das Lesen und Schreiben allein. Ich schreibe zwei Skripte für die Überprüfung: Ich habe eine von ihnen auf einen Sekunden-Zeitrahmen und es erzeugt ein Array Element für Element. Die zweite sende ich an ein beliebiges Paar und es wird dieses Array gedruckt. Also, Skripte:

Sekunden:

Das zweite Skript, das das Array ausgibt, hängt sich an ein bereits gebildetes Paar:

Um fair zu sein, habe ich

die zweite für. Ich schaue mir das Protokoll an. Zumindest einige Werte werden an Adressen bzw. Offsets relativ zu nAddress geschrieben: 0-3FF, 7FF-83FF, BFFF-C3FF. Für alle anderen Bereiche - kritischer Fehler inMemoryWriteInt. Ich füge eine History-Datei mit Sekunden-Candlesticks bei.

Funktioniert das Testskript aus dem Kit?

Sie brauchen die Größe des zugewiesenen Speichers nicht so oft zu ändern. Dies ist eine Bremse. Der Speicher wird diskret in 4Kb zugewiesen. Aufgerundet. Dies ist eine Zuordnungsfunktion.

Erstellen Sie ein einfaches Testprojekt, damit Sie es überprüfen können. Was Sie veröffentlichen, lässt sich nicht überprüfen. Es gibt zu viele Syntaxfehler.

 
GaNDarM:

Ich kann den Ausdruck nicht verstehen:

wenn Anzahl der gezählten Takte =0 unddownloadhistory?downloadhistory ist eine globale logische Variable, die zunächstfalsch ist. In welchem Zustand ist sie? Ich würde es verstehen, wenn die Bedingung diese ist

if (gezählte_Balken==0 && downloadhistory == false)

Bitte erklären Sie es einem Anfänger!


Lassen Sie es mich jetzt versuchen. Wenn wir schreiben

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

dann werden diese Aktionen in jedem Fall durchgeführt, da die ersten beiden der dritten ähnlich sind (prüfen, Ausdruck vereinfachen). Das heißt, wenn es sich um boolesche Variablen handelt, brauchen wir nicht ==true, ==false einzugeben, da sie bereits von sich aus true oder false sind.

Grund der Beschwerde: