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

 

Liebe Fachleute, könnten Sie mir bitte diese Frage beantworten?

Ich habe ein zuvor geschriebenes eindimensionales String-Array in einer Textdatei

EURUSD 1654.31

GBPUSD -1654.61

USDCAD 110.98

USDJPY 1180.17

Angenommen, der Gesamtgewinn von USDCAD hat sich geändert und ich muss die 3. Zeile durch "USDCAD 115.64" ersetzen.

Ich lese diese Daten als eindimensionales String-Array, aber ich kann nicht nur dieses Element in der Textdatei ersetzen (kann jemand eine Funktion schreiben?)

Oder ist es besser, sich nicht die Mühe zu machen und das gesamte Array zu überschreiben?

Ich habe gerade Daten, die von EAs kommen, die auf verschiedenen Paaren stehen - jedes Paar hat einen anderen String - es wäre natürlich besser, nur 1 Element wahrscheinlich zu ändern.

 

Hallo zusammen!!! Hilfe zum Verständnis des Beispiels von HELPA

//--------------------------------------------------------------------
//obviousexpert.mq4
// Soll als Beispiel im MQL4-Tutorial verwendet werden.
//--------------------------------------------------------------- 1 --
#property copyright "Copyright © Buch, 2007"
#property link "http://AutoGraf.dp.ua"
//--------------------------------------------------------------- 2 --
#include <stdlib.mqh>
#include <stderror.mqh>
#include <WinUser32.mqh>
//--------------------------------------------------------------- 3 --
#include <Variablen.mqh> //Variablenbeschreibung
#include <Check.mqh> // Überprüfen der Rechtmäßigkeit des Programms.
#include <Terminal.mqh> // Auftragsabrechnung
#include <Events.mqh> // Ereignisverfolgung, aktualisiert.
#include <Inform.mqh> // Informationsfunktion
#include <Trade.mqh> // Funktion Handel
#include <Open_Ord.mqh> // Eröffnung eines einzelnen Auftrags eines bestimmten Typs
#include <Close_All.mqh> // Schließen aller Aufträge eines bestimmten Typs
#include <Tral_Stop.mqh> // Modifikation des StopLoss aller Aufträge eines bestimmten Typs
#include <Lot.mqh> // Berechnung der Anzahl der Lose
#include <Criterion.mqh> // Handelskriterien
#include <Errors.mqh> // Funktion zur Fehlerbehandlung.
//--------------------------------------------------------------- 4 --
int init() // Spezielle Funktion init
{
Level_old=MarketInfo(Symbol(),MODE_STOPLEVEL );//min. dist.
Terminal(); // Bestellfunktion
return; // Beenden von init()
}
//--------------------------------------------------------------- 5 --
int start() // Sonderfunktion start
{
if(Check()==false) // Wenn die Bedingungen der Verwendung.
return; // ...nicht erfüllt sind, beenden.
PlaySound("tick.wav"); // Bei jedem Ticken
Terminal(); // Funktion zur Auftragsabrechnung
Ereignisse(); // Ereignisinformationen
Handel(Kriterium()); // Funktion Handel
Inform(0); // Um Objekte neu zu färben
return; // Exit()
}
//--------------------------------------------------------------- 6 --
int deinit() // Spezielle Funktion deinit()
{
Inform(-1); // Um Objekte zu entfernen
return; // Beenden von deinit()
}
//--------------------------------------------------------------- 7 --

2) Nur im Speicherort? oder auch in der Gestaltung des Codes?

Die Fragen sind: 1) Was ist der Unterschied zwischen Include-Dateien (#include<...> und #include "..."), 3) Und was ist der Unterschied zwischen importierten Funktionen (#import) und der #include-Direktive?

Das HELPA-Beispiel usualexpert.mq4 veranschaulicht den Expert Advisor, der auf den Include-Dateien aufgebaut wurde, wie man an den <>-Klammern im #include-Verzeichnis erkennen kann.

Fragen: Ist die Datei #include <Variablen.mqh> enthalten // Eine Beschreibung der Variablen, wenn sie gemäß dem Beispiel erstellt wurden:

//--------------------------------------------------------------------
// Variablen.mqh
// Soll als Beispiel im MQL4-Tutorial verwendet werden.
//--------------------------------------------------------------- 1 --
// Beschreibung der globalen Variablen
extern double Lots =0.0; // Anzahl der Lose
extern int Percent =0; // Prozentsatz der zugeteilten Mittel
extern int StopLoss =100; // StopLoss für neue Aufträge (Punkte)
extern int TakeProfit =40; // TakeProfit für neue Aufträge (Punkte)
extern inttern TralingStop=100; // TralingStop für Marktaufträge (Punkte)
//--------------------------------------------------------------- 2 --
int
Level_new, // Neuer Wert für den Mindestabstand
Level_old, // Vorheriger Wert des Mindestabstands
Mas_Tip[6]; // Array der Auftragsarten
// [] Art der Aufträge: 0=B,1=S,2=BL,3=SL,4=BS,5=SS
//--------------------------------------------------------------- 3 --
doppelt
Lose_Neu, // Anzahl der Lose für neue Aufträge
Mas_Ord_New[31][9], // Array der aktuellen Aufträge .
Mas_Ord_Old[31][9]; // .
// Index 1 = Auftragsnummer
// [][0] ist nicht definiert
// [][1] Preis der offenen Bestellung (absoluter Wert)
// [][2] StopLoss-Order (absoluter Wert)
// [][3] TakeProfit-Auftrag (abs. Kurswert)
// [][4] Bestellnummer
// [][5] Anzahl der Lose der Bestellung. (abs. Rate)
// [][6] Auftragsart 0=B,1=S,2=BL,3=SL,4=BS,5=SS
// [][7] magische Zahl der Bestellung
// [][8] 0/1
//--------------------------------------------------------------- 4 --

Beim Kompilieren tritt ein Fehler auf - '\end_of_program' - no function defined was bedeutet das und sollte ich etwas am Ende dieses Beispiels hinzufügen

Und sollten die eingeschlossenen Dateien so aussehen oder sollten sie dem Header hinzugefügt werden:

#property copyright "Copyright © 2004, MetaQuotes Software Corp.
#property link "http://www.metaquotes.net/"
#Eigenschaftsbibliothek
//+------------------------------------------------------------------+
//| Fehlerbeschreibung zurückgeben |
//+------------------------------------------------------------------+

Zum Beispiel als Teil von ( usualexpert.mq4 // zur Verwendung als Beispiel im MQL4-Tutorial. ) Es gibt #include <Check.mqh> // Überprüfung der Legitimität der verwendeten Programme. Ohne diesen Hut erzeugt es einen Fehler (Startfunktion nicht gefunden und kann nicht ausgeführt werden). Ist alles in Ordnung damit?

Oder die Include-Dateien enthalten nur Beschreibungen von benutzerdefinierten Funktionen, die sich in der Funktionsbibliothek an der Adresse (Bibliotheken) befinden. Wenn sie bereits in der Expert Advisor-Datei vorhanden ist?

 
Las-tochka:

Hallo zusammen!!! Helfen Sie mir, ein Beispiel von HELPA zu verstehen

//--------------------------------------------------------------------
// usualexpert.mq4
// Konzipiert für die Verwendung als Beispiel im MQL4-Tutorial.
//--------------------------------------------------------------- 1 --
#property copyright "Copyright © Book, 2007"
#property link "http://AutoGraf.dp.ua"
//--------------------------------------------------------------- 2 --
#include <stdlib.mqh>
#include <stderror.mqh>
#include <WinUser32.mqh>
//--------------------------------------------------------------- 3 --
#include <Variablen.mqh> //Variablenbeschreibung
#include <Check.mqh> // Überprüfung der Rechtmäßigkeit der Programmnutzung
#include <Terminal.mqh> // Auftragsabrechnung
#include <Events.mqh> // Ereignisverfolgungsfunktion, aktualisiert
#include <Inform.mqh> // Informationsfunktion
#include <Trade.mqh> // Handelsfunktion
#include <Open_Ord.mqh> // Öffnen einer einzelnen Order eines bestimmten Typs
#include <Close_All.mqh> // Schließen aller Orders eines bestimmten Typs
#include <Tral_Stop.mqh> // Modifikation von StopLoss für alle Orders eines bestimmten Typs
#include <Lot.mqh> // Berechnung der Losnummer
#include <Criterion.mqh> // Handelskriterien
#include <Errors.mqh> // Funktion zur Fehlerbehandlung.
//--------------------------------------------------------------- 4 --
int init() // Spezialfunktion init
{
Level_old=MarketInfo(Symbol(),MODE_STOPLEVEL );// Minimaler Abstand
Terminal(); // Orderzählfunktion
return; // Beenden init()
}
//--------------------------------------------------------------- 5 --
int start() // Spezialfunktion start
{
if(Check()==false) // Wenn Bedingungen der Nutzung.
return; // ..nicht erfüllt sind, beenden
PlaySound("tick.wav"); // Bei jedem Tick
Terminal(); // Auftragsabrechnungsfunktion
Events(); // Ereignisinformationen
Trade(Criterion()); // Trade-Funktion
Inform(0); // Um Objekte neu zu färben
return; // Beenden start()
}
//--------------------------------------------------------------- 6 --
int deinit() // Spezielle Funktion deinit() function deinit()
{
Inform(-1); // Um Objekte zu löschen
return; // Beenden von deinit()
}
//--------------------------------------------------------------- 7 --

2) Nur am Speicherort oder auch bei der Gestaltung des Codes?

Die Fragen sind: 1) Was ist der Unterschied zwischen Include-Dateien (#include<...> und #include "..."), 3) Und was ist der Unterschied zwischen importierten Funktionen (#import) und der #include-Direktive?

Das Beispiel aus HELPA veranschaulicht den Expert Advisor, der auf der Grundlage der in seinem #include-Verzeichnis enthaltenen Dateien erstellt wurde, wie an den <>-Klammern zu erkennen ist.

Fragen: Include\file #include <Variablen.mqh> //Beschreibung der Variablen, wenn sie durch das Beispiel erstellt werden:

//--------------------------------------------------------------------
// Variables.mqh
// Zur Verwendung als Beispiel im MQL4-Tutorial.
//--------------------------------------------------------------- 1 --
// Beschreibung der globalen Variablen
extern double Lots =0.0; // Anzahl der Lots
extern int Percent =0; // Zugewiesener Prozentsatz
extern int StopLoss =100; // StopLoss für neue Aufträge (Pips)
extern int TakeProfit =40; // TakeProfit für neue Aufträge (Pips)
extern int TralingStop=100; // TralingStop für Marktaufträge (Pips)
//--------------------------------------------------------------- 2 --
int
Level_new, // Neuer Mindestabstandswert
Level_old, // Vorheriger Mindestabstandswert
Mas_Tip[6]; // Ordertyp-Array
// [] Ordertyp 0=B,1=S,2=BL,3=SL,4=BS,5=SS
//--------------------------------------------------------------- 3 --
double
Lots_New, // Anzahl der Lots für neue Aufträge
Mas_Ord_New[31][9], // Auftragsfeld aktuell ..
Mas_Ord_Old[31][9]; // ... und alt
// 1. Index = Ordernummer
// [][0] kann nicht definiert werden
// [][1] offener Orderpreis (abc-Kurs)
// [][2] StopLoss-Order (abc-Kurs)
// [][3] TakeProfit-Order (abc-Kurs)
// [][4] Ordernummer
// [][5] Anzahl der Lots einer Order (abc-Kurs). (Abc Rate)
// [][6] Auftragsart 0=B,1=S,2=BL,3=SL,4=BS,5=SS
// [][7] order magic number
// [][8] 0/1 comment fact
//--------------------------------------------------------------- 4 --

Beim Kompilieren wird ein Fehler ausgegeben - 'Programmende' - keine Funktion definiert, was es bedeutet und ob es notwendig ist, etwas am Ende dieses Beispiels hinzuzufügen

Und sollten die Include-Dateien so aussehen, oder sollten sie dem Header hinzugefügt werden

#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
#property library
//+------------------------------------------------------------------+
//| return error description |
//+------------------------------------------------------------------+

Zum Beispiel als Teil von ( usualexpert.mq4 // zur Verwendung als Beispiel im MQL4-Tutorial. ) Es gibt #include <Check.mqh> // Überprüfung der Rechtmäßigkeit der verwendeten Programme. Ohne diesen Hut erzeugt es einen Fehler (Startfunktion nicht gefunden und kann nicht ausgeführt werden). Ist damit alles in Ordnung?

Oder die Include-Dateien enthalten nur Beschreibungen von benutzerdefinierten Funktionen, die sich in der Funktionsbibliothek an der Adresse (Bibliotheken) befinden. Wenn sie in der Datei des Expert Advisors vorhanden ist?

Lesen Sie das Beispiel aus dem Lehrbuch richtig - es steht alles da... Includes sind eingeschlossene Programmabschnitte (strukturell nach ihrem Inhalt benannt, je nach der Aufgabe, die jeder von ihnen erfüllt) - sie müssen nicht kompiliert werden. Sie werden vom Experten kopiert und die Einschlüsse werden nacheinander in die *.ex4-Datei eingefügt, je nachdem, wie Sie sie im Programmtext geschrieben haben. Deshalb ist die benutzerdefinierte #include <Variablen.mqh> //Variablenbeschreibung die ERSTE in Block 3 des Programms. Versuchen Sie, ihn an das Ende dieses Blocks zu verschieben, und kompilieren Sie den Expert Advisor, um zu sehen, wie viele Fehler es gibt.
 
alsu:
.......

Ein besserer Weg zur Berechnung des Modus besteht darin, eine empirische Verteilungsfunktion zu konstruieren (nicht zu verwechseln mit der Häufigkeitsverteilung), diese dann stückweise linear bis glatt zu interpolieren und schließlich den Punkt der maximalen Ableitung zu suchen. Ein solcher Algorithmus ist frei von den oben genannten Nachteilen und funktioniert auch bei kleinen Stichprobengrößen recht effektiv. Zumindest musste ich nur die Aufgabe der Suche nach Modi in Stichproben von 50-100 Elementen mit einer vergleichbaren Anzahl von Intervallen mit MQL lösen - und alles war OK. Der einzige Nachteil besteht darin, dass die Berechnungsgeschwindigkeit bei der Verwendung von Interpolationen in der Regel erheblich abnimmt, natürlich nur, wenn man sie qualitativ glätten will.

Alexey, ich danke dir sehr.... Das allgemeine Prinzip dieser Funktion ist für mich klar))))
 
Hallo, können Sie mir sagen, was Comment("") bedeutet, was die Funktion in diesem Fall ausgibt?
 
Chuma:
Hallo, können Sie mir sagen, was Comment("") bedeutet, was die Funktion in diesem Fall ausgibt?
Ein Feld mit dem Text in Anführungszeichen
 
Comment() zeigt den Text nicht in der Box, sondern in der oberen linken Ecke des Diagramms an
 
Ich bin auf eine Diskrepanz gestoßen. Es gibt einen Indikator, der mit Eröffnungskursen arbeitet, und es gibt einen EA, bei dem der TF, mit dem er handelt, anhand von Signalen aus diesem Indikator festgelegt wird. Ich setze 15 min in den EA und in den Tester - durch die Öffnung der Preise, bekomme ich einige Ergebnis. Aber wenn wir z.B. 1 Minute im Strategy Tester einstellen - bei offenen Kursen ist das Ergebnis nicht allzu radikal, sondern ändert sich. Ich verstehe nicht, was hier los ist? Stellt sich heraus, dass der Eröffnungskurs der Minute nicht mit dem Eröffnungskurs der Stunde übereinstimmt? Oder ist es ein Fehler des Testers? Können Sie mir sagen, wo der Hund begraben ist?
 
moskitman:
das Feld mit dem Text in Anführungszeichen

Ich meinte, wenn es nur Anführungszeichen in Klammern gibt: Comment("")

 
Chuma:

Ich meinte, wenn es nur Anführungszeichen in Klammern gibt: Comment("")

Löscht vorherige Kommentare.