Crowdsourced GUI. Offene Betatests. - Seite 29

 
Alexandr Andreev:

Nun, es gab ein halbes Beispiel. Es ist klar, dass es eine Datei als Teil einer Arbeitsfunktion gibt. Wo der Schalter (Knöpfe) generiert wird und wir die Möglichkeit haben, Reaktionen auf Knopfdruck zu schreiben.

Ja, dies ist ein Halbbeispiel. Wegen des Fehlers mit den Positionen habe ich es nicht bis zum Ende geschafft.

Reaktionen können auf Schaltflächen, Kontrollkästchen, Eingabefelder, Schieberegler, Dropdowns und Optionsschaltflächengruppen vorgenommen werden.

Im Moment können Sie diese Elemente mit dem Editor erstellen. Für sie werden in der Datei Ereignishandler angelegt, in denen der Benutzer die Reaktionen vorgibt.

Außerdem werden die Funktionen in der Datei gedruckt, über die der Benutzer auf die Elemente zugreift:

1. Ermittelt den aktuellen Wert des Elements.
2. Dem Element einen neuen Wert zuweisen.

Die Funktionen werden einfach aus einer Liste von intellisense ausgewählt, die auf die Präfixe E_ (Elemente) und W_ (Fenster) reagiert.

Am Abend wird es ein vollständiges Beispiel geben.
 
Im Allgemeinen ist die Freigabe für die Umsetzung der Tastenreaktion recht praktikabel. Nur am Design muss noch etwas gearbeitet werden.
 
Реter Konow:
Ja, dies ist ein halbes Beispiel. Ich habe es wegen des Fehlers mit den Positionen nicht bis zum Ende geschafft.

Reaktionen können auf Schaltflächen, Kontrollkästchen, Eingabefeldern, Schiebereglern, Dropdown-Listen und Optionsschaltflächengruppen eingetragen werden.

Im Moment können Sie diese Elemente mit dem Editor erstellen. Für sie werden in der Datei Ereignishandler angelegt, in denen der Benutzer die Reaktionen vorgibt.

Außerdem werden in der Datei Funktionen ausgedruckt, über die der Benutzer auf die Elemente zugreift:

1. Ermittelt den aktuellen Wert des Elements.
2. Dem Element einen neuen Wert zuweisen.

Die Funktionen werden einfach aus einer Intellisense-Liste ausgewählt, die auf die Präfixe E_ (Elemente) und W_(Fenster) reagiert.

Am Abend wird es ein vollständiges Beispiel geben.

Err, welche anderen Funktionen zu wählen sind... Es besteht keine Notwendigkeit, irgendetwas davon zu tun. Erzeugen Sie eine Datei, in der, so wie ich es verstehe, dem Schalter gültige Schaltflächen zugewiesen werden, und das war's. Voller Stopp. Von nun an ist es jedem selbst überlassen, wie er auf diese Schaltfläche reagiert. Zum Beispiel, um zu speichern, dass sie gedrückt wurde oder so. Die Umgebung für die Rückmeldung des Pressens halte ich für unnötig.

 
Alexandr Andreev:

Äh, welche anderen Merkmale sind zu wählen... Das ist alles nicht nötig. Erzeugen Sie eine Datei, in der Sie, so wie ich es verstehe, dem Schalter gültige Tasten zuweisen. Das ist alles. Voller Stopp. Von nun an ist es jedem selbst überlassen, wie er auf diese Schaltfläche reagiert. Zum Beispiel, um zu speichern, dass sie gedrückt wurde oder so. Die Umgebung für die Rückmeldung von Dringlichkeit halte ich für unnötig.

Es ist besser, an dem Entwurf zu arbeiten

 
Alexandr Andreev:

Äh, welche anderen Merkmale sind zu wählen... Das ist alles nicht nötig. Erzeugen Sie eine Datei, in der Sie, so wie ich es verstehe, dem Schalter gültige Tasten zuweisen. Das ist alles. Voller Stopp. Von nun an ist es jedem selbst überlassen, wie er auf diese Schaltfläche reagiert. Zum Beispiel, um zu speichern, dass sie gedrückt wurde oder so. Die Umgebung für Klick-Feedback halte ich für unnötig.

Und hier sollten wir die Umgebung besser durch Klassen implementieren. Auch das Aufrufen des Registerkartenmenüs, usw. usw.

 
Alexandr Andreev:

Äh, welche anderen Merkmale sind zu wählen... Das ist alles nicht nötig. Erzeugen Sie eine Datei, in der Sie, so wie ich es verstehe, dem Schalter gültige Tasten zuweisen. Das ist alles. Voller Stopp. Von nun an ist es jedem selbst überlassen, wie er auf diese Schaltfläche reagiert. Zum Beispiel, um zu speichern, dass sie gedrückt wurde oder so. Ich denke, dass das Umfeld für Feedback unnötig ist.

Du verstehst es nicht.

1. Wir sollten die Reaktionen in den Handler eingeben, richtig.

2. Wenn wir den aktuellen Wert eines Elements (z. B. den Texteines Eingabefelds) abrufen wollen, rufen wir dessen Funktion aus der Liste ready auf.
 
Alexandr Andreev:

Und die Umwelt sollte durch Klassen umgesetzt werden. Auch Aufrufe des Registerkartenmenüs und so weiter und so fort.

Wir sollten Peter nicht mit dem Satz "Wir brauchen Unterricht" vor der Nase herumwedeln. Warten wir wenigstens auf das Video, dann können wir Fragen stellen.

Ich habe Peter bereits vorgeschlagen, seinen "Kernel" mit einer sehr einfachen Variante zu modifizieren: Verwenden Sie Strukturen. Zur Hölle mit diesen Klassen, wenn jemand nicht darin versinken will - das ist seine Sache.

Aber die Verwendung von Strukturen würde das Leben für Peter selbst einfacher machen.

Wie der "Kern", auch bekannt als globales Array, jetzt aussieht: ein mehrdimensionales Array, zumindest aber ein zweidimensionales. Die zweite Dimension enthält Eigenschaften eines bestimmten Kontrolltyps durch Indizes. Auf Eigenschaften kann auch über den Namen zugegriffen werden, da Indizes durch Defines ersetzt werden und wir eine "Pseudo-Referenz" über den Namen erhalten. In der Tat ist alles auf Definitionen aufgebaut, wie die "Auszeichnungssprache" in Peters Code.

Ich habe bereits vorgeschlagen, dass Peter eine Struktur implementieren sollte, damit das globale Array eindimensional wird und die Eigenschaften direkt über den Namen angesprochen werden können. Der Aufbau des "Kerns" würde ebenfalls vereinfacht, da es genügen würde, neue Requisiten in die ursprüngliche Struktur einzufügen und sie mit Namen zu versehen. Und der Code selbst könnte gekürzt werden, indem die Auflistung zahlreicher Defines und Methoden zu deren Verwendung entfernt wird.

Einerseits ist es keine Klasse, andererseits würde es Peter den Umgang mit dem globalen Array sehr erleichtern. Außerdem hat Peter bereits Erfahrung in der Arbeit mit einer ähnlichen Struktur: einer Gewerkschaft.

Aber Peter hat seine eigene Art von Sensei, und wir werden einfach das Ergebnis abwarten...

 

Ich möchte das folgende Schema als bereichsübergreifendes Beispiel vorschlagen: Erstellen Sie ein Formular mit drei Feldern: Handelsbetrag, Preis SL und Preis TP, zwei Schaltflächen: BUY und SELL

Expert Advisor erstellen, GUI als Inluder anschließen. Fügen Sie eine Variable für das Anfangsgebot hinzu. Bei der Initialisierung wird der anfängliche Gebotsbetrag an das entsprechende Feld in der GUI übergeben.

Erstellen Sie im Expert Advisor die Funktion "Open Deal". Diese Funktion sollte aufgerufen werden, sobald eine der Schaltflächen in der GUI angeklickt wird.

In der Funktion selbst "finden wir heraus", welcher Befehl gegeben wurde, und fragen auch die GUI, welcher Kurs jetzt eingestellt ist, und auf der Grundlage dieser Daten öffnen wir das entsprechende Geschäft.

 
Алексей Барбашин:

Ich möchte das folgende Schema als übergreifendes Beispiel vorschlagen: Erstellen Sie ein Formular mit drei Feldern: Handelsbetrag, Preis SL und Preis TP, zwei Schaltflächen: BUY und SELL

Expert Advisor erstellen, GUI als Inluder anschließen. Fügen Sie eine Variable für das Anfangsgebot hinzu. Bei der Initialisierung wird der anfängliche Gebotsbetrag an das entsprechende Feld in der GUI übergeben.

Erstellen Sie im Expert Advisor die Funktion "Open Deal". Diese Funktion sollte aufgerufen werden, sobald eine der Schaltflächen in der GUI angeklickt wird.

In der Funktion selbst "finden wir heraus", welcher Befehl gegeben wurde, und fragen auch die GUI, welcher Kurs jetzt eingestellt ist, und auf der Grundlage dieser Daten öffnen wir das entsprechende Geschäft.

Lot, Take und Stop + Kauf-/Verkaufsschaltflächen - ein einfaches und klares Beispiel. Ich werde es tun. Ich werde Funktionen zum Eröffnen von Aufträgen und zum Abrufen von Stoppkursen hinzufügen.
 
Реter Konow:
Du verstehst es nicht.

1. Schreiben Sie die Reaktionen in den Handler, richtig.

2. Wenn wir den aktuellen Wert eines Elements (z. B. einesEingabefelds) abrufen wollen, rufen wir dessen Funktion aus der Liste ready auf.

Das lässt sich doch auch über eine Funktion realisieren, die aufgerufen wird, wenn das Feld gefüllt ist und der Eingabewert vom Typ Template ist... alles. Auch wenn es wie ein String aussieht.... es wird weiterhin keine Hochgeschwindigkeitsbefüllung des Feldes geben

Grund der Beschwerde: