Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 151

 
Forexman77:
Können Sie mir sagen, wie ich einen Stop auf das Hoch oder Tief des Balkens setzen kann, auf dem der Handel geöffnet ist?

Wenn hoch, dann High[ ] anstelle von Stop, wenn niedrig Low[ ], aber beachten Sie zwei Dinge.


(1) Dies ist die Spanne und der Abstand zu dem vom Händler festgelegten Anschlag.

2. Sie können einen Stopp nicht richtig auf dem sich bildenden Balken platzieren. Das heißt, High[0]. Und zwar nur auf den vorherigen Bars. D.h. Hoch[1], usw.

 
satorifx:

Guten Tag.

Können Sie mir sagen, wie ich 2 Koordinatensysteme in einem Diagramm programmatisch verknüpfen kann? (X,Y) und (Zeit,Preis)? Sie benötigen ein Etikett mit den Koordinaten (X,Y), das sich immer am Mindestpreis im Diagramm befindet.

artmedia70:
Es gibt Unterschiede. Auf dem Chart im Allgemeinen, d.h. auf allen im Terminal verfügbaren Historien, oder auf dem sichtbaren Chart (innerhalb des Bildschirms)?


Genau auf der sichtbaren Karte auf dem Bildschirm

 
satorifx:

Genau auf der sichtbaren Grafik auf dem Bildschirm

Geben Sie dieses Skript in die Tabelle ein:

//+------------------------------------------------------------------+
//|                                       sc_LowestPricePerChart.mq4 |
//|                               Copyright 2013, Artyom A. Trishkin |
//|                          artmedia70@gmail.com, Skype: Artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, Artyom A. Trishkin"
#property link      "artmedia70@gmail.com, Skype: Artmedia70"
//+------------------------------------------------------------------+
//|           script program start function                                    |
//+------------------------------------------------------------------+
int start() {
   int count=WindowBarsPerChart();                             // количество видимых баров 
   int LowestBar=iLowest(Symbol(),Period(),MODE_LOW,count,0);  // бар с минимальной ценой
   double LowestPricePerChart=Low[LowestBar];                  // минимальная цена из видимых баров
   SetArrow(5, Yellow, "sc_LowestPricePerChart_LowestPrice", Time[LowestBar], LowestPricePerChart, 1);
   return(0);
}
//+------------------------------------------------------------------+
void SetArrow(int cd, color cl, string nm="", datetime t1=0, double p1=0, int sz=0) {
   if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, 0, 0, 0);
   ObjectSet(nm, OBJPROP_TIME1    , t1);
   ObjectSet(nm, OBJPROP_PRICE1   , p1);
   ObjectSet(nm, OBJPROP_ARROWCODE, cd);
   ObjectSet(nm, OBJPROP_COLOR    , cl);
   ObjectSet(nm, OBJPROP_WIDTH    , sz);
}
//+------------------------------------------------------------------+

Dasselbe gilt für die maximale

 
artmedia70:

Geben Sie dieses Skript in die Tabelle ein:

Dasselbe gilt für die Höchstzahl


Der Punkt ist, dass das ARROW-Objekt Koordinaten (Zeit, Preis), aber keine Koordinaten (x,y) hat. Wenn Sie das Indikatorfenster am unteren Rand des Bildschirms verlängern, bewegt sich das Objekt zusammen mit dem Fenster, aber gleichzeitig ändern sich die Koordinaten (x,y) des Objekts im Fenster und können nicht berechnet werden, da es keine Verbindung zwischen den beiden Koordinatensystemen gibt. Im Prinzip könnten Sie ein TEXT-Objekt oder ein anderes Objekt anstelle einesPFEIL-Objekts verwenden, aber das löst das Problem nicht.
 
satorifx:
Der Punkt ist, dass das ARROW-Objekt Koordinaten (Zeit, Preis), aber keine Koordinaten (x,y) hat. Wenn wir das Indikatorfenster am unteren Rand des Bildschirms weiter nach oben verschieben, bewegt sich das Objekt zusammen mit dem Fenster, aber gleichzeitig ändern sich die Koordinaten (x,y) des Objekts im Fenster und können nicht berechnet werden, da es keine Verbindung zwischen den beiden Koordinatensystemen gibt. Im Prinzip könnten Sie ein TEXT-Objekt oder ein anderes Objekt anstelle eines PFEIL-Objekts verwenden, aber das löst das Problem nicht.

Dann binde das Weiße an das Heiße. Es wurde Ihnen gezeigt, wie Sie den Mindestpreis auf sichtbaren Balken kennen und wie Sie ihn auf dem Chart markieren können.

Der Rest ist Ihr obskures Wunschdenken ;)

 
Sepulca:



Ich bin mir nicht ganz sicher, was Sie meinen? Wenn es keine Datei gab (sie wurde nicht geöffnet) oder ein Lesefehler auftrat. Es hätte eine Nachricht gegeben, aber es gibt keine Nachrichten...
 
Der Code sollte so geschrieben werden, dass auf dem Balken, auf dem der Handel eröffnet wird, die Position verlassen wird, wenn sich auf dem nächsten Balken unmittelbar nach dem Balken mit dem Spike ein Spike bildet, aber die Signale auf den Balken nach dem Balken, auf dem der Handel eröffnet wurde und auf dem der Spike auftrat, ignoriert werden. Es gibt kein Problem mit dem Code, der den Spike beschreibt. Die Schwierigkeit besteht darin, dem Programm mitzuteilen, dass das Signal nur den Balken verwenden soll, an dem der Handel eröffnet wurde.
 
Forexman77:
Ich muss den Code so schreiben, dass auf dem Balken, auf dem der Handel eröffnet wird, die Position verlassen wird, wenn sich auf dem nächsten Balken unmittelbar nach dem Balken mit dem Spike ein Spike bildet, aber die Signale auf den Balken nach dem Balken, auf dem der Handel eröffnet wird und auf dem der Spike auftrat, werden ignoriert. Es gibt kein Problem mit dem Code, der den Spike beschreibt. Die Schwierigkeit besteht darin, dem Programm mitzuteilen, dass nur der Balken, an dem der Handel geöffnet ist, für das Signal verwendet wird.
Das Geschäft hat eine Eröffnungszeit OrderOpenTime(); Es gibt eine Funktion, die Ihnen die Anzahl der Balken nach Zeit anzeigt iBarShift(); Verwenden Sie diesen Balken als "... wir verwenden nur den Balken, an dem das Geschäft für das Signal geöffnet ist ...".
 
artmedia70:
Der Handel hat eine Öffnungszeit OrderOpenTime(); Und es gibt eine Funktion, die Ihnen die Bar-Nummer nach Zeit iBarShift(); Dies ist die Bar und verwenden Sie es als "..., dass für das Signal, das wir verwenden, nur die Bar, auf dem der Handel geöffnet ist...".

Danke, ich werde es mir ansehen.
 
Zolotai:

Ich bin mir nicht ganz sicher, was Sie meinen? Wenn es keine Datei gab (sie wurde nicht geöffnet) oder ein Fehler beim Lesen auftrat. Sie würden eine Nachricht erhalten, aber Sie erhalten keine Nachrichten...

Handle=FileOpen(File_Name,FILE_CSV|FILE_READ|FILE_WRITE,";");// Datei öffnen.

Wenn FILE_WRITE nicht mit FILE_READ kombiniert wird, wird eine Datei mit der Länge Null geöffnet. Selbst wenn die Datei vor dem Öffnen Daten enthielt, werden diese zerstört.
Wenn Sie Daten an eine bestehende Datei anhängen wollen, müssen Sie diese mit der Kombination FILE_READ | FILE_WRITE öffnen..
Wenn FILE_READ nicht mit FILE_WRITE kombiniert wird, wird die Datei nur geöffnet, wenn sie bereits existiert. Wenn die Datei nicht existiert, kann sie im Modus FILE_WRITE erstellt werden.