[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 187

 
NayTmeR:

Wenn zum Beispiel die Zeile val1[c] den Wert 0,45 nach oben überschreitet, wird der Zeitwert der Variablen TimeBegin zugewiesen

Was ist die Frage? Wie speichert man die Zeit beim Überqueren?
 

Wie weisen Sie diese Zeit einer Variablen zu?

 
eddy:
Nun, die Pfeile befinden sich auf dem Eröffnungsbalken.

Ich bin mir nicht ganz sicher, ob ich das verstehe. Es gibt Pfeile auf dem Eröffnungsbalken, die aber von der entsprechenden Funktion - OrderSend() - gezeichnet werden. Diese Pfeile haben nichts mit den Pfeilen zu tun, die von OrderModify() gezeichnet werden, nicht wahr? Ich habe verstanden, dass ich mit OrderModify() nicht nur die Pfeile einfärben, sondern auch die Höhe des Stop Loss ändern kann, indem ich den Wert der Variablen SL? Dies ist in der Hilfe beschrieben:

bool BestellungÄndern( int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE)

Ändert die Parameter von zuvor eröffneten Positionen oder schwebenden Aufträgen.

Das bedeutet, dass nicht nur die Farbe des Pfeils geändert wird, sondern auch die Parameter der bereits geöffneten Aufträge. Sie schlägt vor, die Haltestellen zu wechseln und Pfeile zu zeichnen. Aber aus irgendeinem Grund tut es das nicht.

 

Das Wort "nur" bezog sich auf den Pfeil, nicht darauf, was die Funktion bewirkt.

стрелки на баре открытия есть, но нарисованные соответствующей функцией - OrderSend(). Эти стрелки же не относятся к стрелкам, рисуемым OrderModify()?

Was ich meine, ist, dass man einen Stopp und/oder einen Take setzt, und so verändern sich die Pfeile.

 
NayTmeR:

Wie weisen Sie diese Zeit einer Variablen zu?

In Kims Buch gibt es dafür eine Funktion
 
todem:
es gibt ein solches Merkmal in Kims Sammlung

Können Sie das genauer erläutern? Wo finde ich sie? Wo kann ich die Kim's-Kollektion finden?
 
eddy:

Das Wort "nur" bezog sich auf den Pfeil, nicht darauf, was die Funktion bewirkt.

Sie können die Funktion verwenden, um einen Stopp und/oder einen Take zu setzen, so dass sich die Pfeile ändern.

Das Handbuch von OrderModify() sagt:

arrow_color - Farbe der StopLoss- und/oder TakeProfit-Änderungspfeile auf dem Chart. Fehlt dieser Parameter oder hat er den Wert CLR_NONE, werden die Pfeile nicht im Diagramm angezeigt.

Das heißt, soweit ich es verstanden habe, zeichnet OrderModify() Sticks, weil dort "MODIFICATION arrows" steht, was bedeutet, dass es nicht nur Pfeile zum Öffnen/Schließen gibt, die von OrderSend erstellt werden, sondern auch Änderungspfeile, die von OrderModify erstellt werden. Und diese MODIFICATION-Pfeile können nur fehlen, wenn der Parameter nicht vorhanden oder gleich CLR_NONE ist. Aber mein Parameter ist vorhanden und steht auf "Grün". Ich habe verstanden, dass es keinen speziellen Parameter gibt, der für das Vorhandensein oder Nichtvorhandensein von Änderungspfeilen verantwortlich ist, sondern dass dies durch das Nichtvorhandensein oder die Gleichheit von CLR_NONE gesteuert wird. Ich urteile in Analogie zu OrderSend in derselben Hilfsfunktion:

arrow_color - Farbe des Eröffnungspfeils im Diagramm. Fehlt der Parameter oder hat er den Wert CLR_NONE, wird der Öffnungspfeil in der Grafik nicht angezeigt.

 

Bitte helfen Sie bei der Funktion isCloseLastPosByStop ().

Ich füge in MetaEditor die Funktion isCloseLastPosByStop () ein (aber nur das, was auf https://www.mql5.com/ru/forum/107476/page21 geschrieben steht ).

Nach einer fehlgeschlagenen Kompilierung erhalte ich Fehler:

'(' - Funktionsdefinition unerwartet

't' - Variable nicht definiert

't' - Variable nicht definiert

'}' - unausgewogene Klammern

Es ist diese Funktion, die ich im restlichen Code kommentiert habe.

 

Hallo zusammen! Bitte helfen Sie, die folgenden Dinge zu kombinieren. Das Ergebnis sollte sein: zwei Linien, die dem Kurs folgen, eine 20 Pips unter Ask,

Außerdem erhalte ich einen Signalton, wenn sich der Preis um 20 Punkte pro 1 Tick ändert.

Alles funktioniert auch einzeln gut. Vielen Dank im Voraus!

1) Die Linie liegt 20 Pips unter Ask.

//+------------------------------------------------------------------+
//| Experten-Initialisierungsfunktion |
//+------------------------------------------------------------------+
int start()
{
ObjectCreate("MyPriceLine", OBJ_HLINE, 0, 0, Ask-20*Point) ;
ObjectSet("MyPriceLine", OBJPROP_PRICE1, Ask-20*Point);
zurück(0);
}

//+------------------------------------------------------------------+

2) Linie über Ask um 20p.

//+------------------------------------------------------------------+
//| Experten-Initialisierungsfunktion |
//+------------------------------------------------------------------+
int start()
{
ObjectCreate("MyPriceLine", OBJ_HLINE, 0, 0, Ask+20*Point) ;
ObjectSet("MyPriceLine", OBJPROP_PRICE1, Ask+20*Point);
zurück(0);
}

//+------------------------------------------------------------------+

3) Preisänderungsrate im Zeitverlauf.

#property show_inputs

extern int int pips=2; //Änderung Ask
extern double Time_=0.1; //c. ~ Zecke
extern bool all_from_view=true; //nur aktuelles Symbol - false

int i, l, p, Anzahl_der_Zeichen;
string val[], on_screen;
int Ask_save[];

//+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
void start(){
Anzahl_der_Zeichen=SymbolsList(val, true);//Schreiben Sie Werkzeuge und ihre Anzahl in das Array val Rufen Sie die Funktion SymbolsList auf
ArrayResize(Ask_save,Anzahl_Zeichen);
if(number of_characters == -1){ Alert("SymbolsList(string &Symbols[], bool Selected) failed"); return;}
if(!all_from_selected){
Anzahl_der_Zeichen=1;
ArrayResize(Ask_save,Anzahl_der_Zeichen);
ArrayResize(val,Anzahl der_Zeichen);
val[0]=Symbol();
}

while(true&&!IsStopped()){ //wenn erlaubt und nicht angehalten, wird das Skript fortgesetzt

Alert("Neuberechnen in "+Zeit_+" sec;)

for(i=0;i<Anzahl der_Zeichen;i++){ //Berechnung des Wertes der Spanne für Symbole aus der Marktbeobachtung
if((Ask_save[i]-MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT))>=pips){
Alert(val[i]+", "+Period()+" um "+DoubleToStr((Ask_save[i]-MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT)),0)+" Pips" nach unten geändert);
PlaySound("timeout.wav");
}
if((MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT)-Ask_save[i])>=pips){
Alert(val[i]+", "+Period()+" um "+DoubleToStr((MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT)-Ask_save[i]),0)+" pips" nach oben verändert;)
PlaySound("email.wav");
}
Ask_save[i]=MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT);
}
Sleep(Time_*1000);//Pause für Sek.
}

/*
Anzahl_der_Zeichen=SymbolsList(val, true);//Schreiben der Werkzeuge und ihrer Anzahl in das Array val SymbolsList Funktionsaufruf
if(number of_characters == -1){ Alert("Fehler beim Öffnen der Datei in SymbolsList(string &Symbols[], bool Selected)"); return;}

while(true&&!IsStopped()){ //wenn erlaubt und nicht angehalten, wird das Skript fortgesetzt
on_screen="\r\n"; // Einzug
for(i=0;i<Anzahl der_Zeichen;i++)//Berechnung des Spread-Wertes für Symbole aus der Marktübersicht
on_screen=on_screen+val[i]+" spread cost = " + DoubleToStr(MarketInfo(val[i],MODE_SPREAD)*MarketInfo(val[i],MODE_TICKVALUE),0)+"\r\n";
Comment(to_screen);//Anzeigen
Alert("Neuberechnen");//signal
Sleep(3000);//Pause für 3 Sekunden.
}
*/
}
void deinit(){Kommentar("");}
//+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=


//+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
//die Funktion liest alle Finanzinstrumente aus dem Market Watch.
//+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
int SymbolsList(string &Symbols[], bool Selected){
int Offset, SymbolsNumber; string SymbolsFileName;
if(Selected) SymbolsFileName = "symbols.sel"; sonst SymbolsFileName = "symbols.raw";
int hFile = FileOpenHistory(SymbolsFileName, FILE_BIN|FILE_READ);
if(hFile < 0) return(-1); if(Selected) { SymbolsNumber = (FileSize(hFile) - 4) / 128; Offset = 116; }
else { SymbolsNumber = FileSize(hFile) / 1936; Offset = 1924; }
ArrayResize(Symbole, SymbolsNumber);
if(Selected) FileSeek(hFile, 4, SEEK_SET);
for(int i = 0; i < SymbolsNumber; i++){Symbols[i] = FileReadString(hFile, 12); FileSeek(hFile, Offset, SEEK_CUR);}
FileClose(hFile);
return(SymbolsNumber);
}

 
globad:

Hallo zusammen! Bitte helfen Sie, die folgenden Dinge zu kombinieren. Das Endergebnis sollte sein: zwei Linien, die dem Kurs folgen, eine unter Ask um 20pts,....

Das ist respektlos gegenüber denjenigen, die Sie fragen. Lernen Sie, wie man einen Code richtig postet -> SRC

Grund der Beschwerde: