[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 181

 

Hallo zusammen!


Meine Frage ist von einem Neuling.

Ich habe einen Indikator, der Daten aus externen Dateien in einem Diagramm anzeigt. Hier sind meine Fragen:

1. Wie öffne ich das Standarddialogfeld für die Dateiauswahl?

2. Wie lässt sich die Beschränkung der Ordner umgehen, in denen die Dateien des Codes geöffnet werden können (Experten/Dateien)?

3. Wie kann ein Steuerelement im Diagramm erstellt werden, das angeklickt werden kann, um das Skript zu deaktivieren? Die Hauptfrage ist, wie man einen EA, zum Beispiel eine Art von Schaltfläche oder etwas anderes, um mit dem Benutzer durch sie zu interagieren) zu machen?


Danke!

 

Erklären Sie dem Nerd, wo der Fehler liegt!

Ich mache ein einfaches Skript auf Finam Demo, um Alert(BId) Preis zeigen;

Alles funktioniert, aber aus irgendeinem Grund der Preis mit 4 Dezimalstellen angezeigt wird, obwohl die Kurse in 5 Dezimalstellen für EURUSD sind. Auch der IMA wird mit 4 und nicht mit 5 Dezimalstellen berechnet.

Was mache ich falsch, bitte beraten????

 
Onesto:

Erklären Sie dem Nerd, wo der Fehler liegt!

Ich mache ein einfaches Skript auf Finam Demo, um Alert(BId) Preis zeigen;

Alles funktioniert, aber aus irgendeinem Grund der Preis mit 4 Dezimalstellen angezeigt wird, obwohl die Kurse in 5 Dezimalstellen für EURUSD sind. Auch der IMA wird mit 4 und nicht mit 5 Dezimalstellen berechnet.

Bitte beraten Sie mich, was ich falsch mache ????

Sie machen alles richtig, aber das Terminal druckt 4 Nachkommastellen, konvertieren Sie double in string, bevor Sie mit der richtigen Anzahl von Nachkommastellen drucken.

Alert(DoubleToStr(Bid,Digits));

 
sanderz:

Hallo zusammen!


Meine Frage ist von einem Neuling.

Ich habe einen Indikator, der Daten aus externen Dateien in einem Diagramm anzeigt. Hier sind meine Fragen:

1. Wie öffne ich das Standarddialogfeld für die Dateiauswahl?

2. Wie lässt sich die Beschränkung der Ordner umgehen, in denen die Dateien des Codes geöffnet werden können (Experten/Dateien)?

3. Wie kann ein Steuerelement im Diagramm erstellt werden, das angeklickt werden kann, um das Skript zu deaktivieren? Die Hauptfrage ist, wie man einen EA, zum Beispiel eine Art von Schaltfläche oder etwas anderes, um mit dem Benutzer durch sie zu interagieren) zu machen?


Danke!

1-2.Standard ist was? In jedem Fall müssen Sie für die ersten beiden Fragen WinAPI und/oder eine externe DLL verwenden.

3. Direkt aus dem Skript, um ein grafisches Element in der Schleife zu machen, um seine Koordinaten zu verfolgen und wenn Sie es ziehen, wird das Skript pausieren oder entladen.

Am einfachsten ist es, einen Blick in den Quellcode zu werfen, denn dort finden sich zahlreiche visuelle Spielereien.

 
Liebe Forumsmitglieder, können Sie mir helfen, eine Tabelle mit allen Transaktionen aus Quicksilver in Excel auszugeben, damit sie online aktualisiert wird und ich die Anzahl der angezeigten Zeilen ändern kann. Ich habe es versucht, aber die gesamte Tabelle wird angezeigt und nicht aktualisiert.
 
splxgf:

1-2. Welches ist das Standardmodell? Die ersten beiden Fragen erfordern jedoch in jedem Fall WinAPI und/oder eine externe DLL.

3. Direkt aus dem Skript, um ein grafisches Element in der Schleife zu machen, um seine Koordinaten zu verfolgen und wenn Sie es ziehen, wird das Skript pausieren oder entladen.

Am einfachsten ist es, einen Blick in den Quellcode zu werfen, denn dort finden sich zahlreiche visuelle Spielereien.

Danke.
 
splxgf:

Sie machen alles richtig, aber das Terminal hat die alte Angewohnheit, 4 Dezimalstellen auszugeben, konvertieren Sie double in einen String, bevor Sie ihn mit der richtigen Anzahl von Ziffern ausgeben.

Alert(DoubleToStr(Bid,Digits));


Danke, jetzt verstehe ich.

Werden bei der Berechnung im Expert Advisor Body die Daten 5- oder 4-stellig angegeben?

 
Onesto:


Danke, jetzt verstehe ich.

Und wenn ich im EA-Körper rechne, gehen die Daten mit 5 oder mit 4?

Die Berechnungen werden mit der normalen Anzahl von Ziffern durchgeführt, die mit Alert(Bid*100000) überprüft wird;
 

Lieber, ich habe wieder eine Frage:

double hc=(iHigh(NULL,0,1)-iClose(NULL,0,1));
double cl=(iClose(NULL,0,1)-iLow(NULL,0,1));

if((iClose(NULL,0,1)<iOpen(NULL,0,1))&&(hc>cl))

pre12=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,Ask+100*Punkt,"",0,0,CLR_NONE);


Es gibt ein Problem: Positionen werden 17-40 Mal alle 1 Minute eröffnet, obwohl ich sie auf 15-Minuten-Charts teste. Und der Orden soll nicht mehr als einmal alle 15 Minuten öffnen. Nur dann ist die Bedingung erfüllt, dass der Schlusskurs der vorangegangenen Kerze niedriger ist als ihr Eröffnungswert.

Warum ist das so?

 
NaVolne:

Lieber, ich habe wieder eine Frage:

if((iClose(NULL,15,1)<iOpen(NULL,15,1))&&(hc>cl))

pre12=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,Ask+100*Punkt,"",0,0,CLR_NONE);


Es gibt ein Problem: Positionen werden 17-40 Mal alle 1 Minute geöffnet, obwohl ich sie auf 15-Minuten-Charts teste. Und ich gehe davon aus, dass ein Auftrag nicht häufiger als einmal alle 15 Minuten geöffnet werden sollte. Nur dann ist die Bedingung erfüllt, dass der Schlusskurs der vorangegangenen Kerze niedriger ist als ihr Eröffnungswert.

Warum ist das so?


Ich gehe davon aus, dass der Auftrag einmal alle 15 Minuten geöffnet werden muss, und zwar zu Beginn des

im Bereich der Variablendeklaration

double OpenBar=0; 

 

int start()
   {
    //Проверка на начало нового бара
    double CurOpenBar=iOpen(NULL,PERIOD_M15,0);  
    if (OpenBar==CurOpenBar) {return;} else {OpenBar=CurOpenBar;}
    //ваш код
   }


oder so ähnlich...

Aber Ihre Bedingung ist bei jedem Tick erfüllt, also wird der Auftrag bei jedem Tick geöffnet...