Check - was habe ich falsch gemacht? - Seite 6

 
Nikolai Semko #:

Ja, Natalia - das war nur ein "Wenn sie dich für eine Code-Zeile bezahlen" Meme.

Das ist die Art von Humor, die Programmierer haben.


In Ihrem Fall brauchen Sie keine Funktion.

Sie müssen nur die Variablen Volume1 ... bilden. Volume10 bilden Sie zunächst ein Array Volume[10]
und verwenden dann den Index n, um auf die Elemente volume[n] zu verweisen.
Keine Sorge - fast jeder Programmierer hat das schon einmal erlebt.
Die Hauptsache ist, dass Sie wirklich gerne programmieren. Ich kann es spüren.
Sie werden es also weit bringen.

Sagen Sie mir, wie man es schön schreibt. Ich möchte keine Arrays von Code duplizieren.
Der Expert Advisor verwendet 2 Indikatoren.
und die Bedingungen für die Ordereröffnung sehen nun wie folgt aus:

if (Indicator1 > 0 && Indicator2 > 0)
{
OrderSend
}


Aber ich würde gerne einen Filter in den Einstellungen hinzufügen
Verwenden oder nicht verwenden 1 oder 2 Indikatoren
Nur ich weiß nicht, wie man es mehr richtig zu implementieren.
Sie würde etwa so aussehen:

if (Indicator1 && Indicator1 > 0)
{
if (Indicator2 && Indicator2 > 0) || (Indicator2 == false)
{
///
}
}



if (Indicator2 && Indicator2 > 0)
{
if (Indicator1 && Indicator1 > 0) || (Indicator1 == false)
{
///
}
}
damit ich 1 Indikator oder den zweiten Indikator in den Einstellungen deaktivieren kann.
Ich kann nicht herausfinden, wie man das macht, ohne eine Menge Code zu kopieren.....
 
Natalya Smirnova #:

Bitte geben Sie mir Ratschläge, wie ich es am besten schreibe. Um Code-Arrays nicht zu duplizieren.
Der Expert Advisor verwendet 2 Indikatoren.
und die Bedingungen für die Ordereröffnung sehen nun wie folgt aus:


Aber ich würde gerne einen Filter hinzufügen
Verwenden oder nicht verwenden 1 oder 2 Indikatoren
Nur ich weiß nicht, wie es mehr richtig zu implementieren.
Sie würde folgendermaßen aussehen:

Dass ich in den Einstellungen die eine oder andere Anzeige ausschalten kann.
Ich kann nicht herausfinden, wie man das macht, ohne eine Menge Code zu kopieren.....

Ich habe hier ein wenig darüber geschrieben: https://www.mql5.com/ru/forum/6343/page1384#comment_26447195

 
JRandomTrader #:

Ich habe hier ein wenig zu diesem Thema geschrieben: https://www.mql5.com/ru/forum/6343/page1384#comment_26447195

Danke, ich werde mich auf den Weg machen, um etwas zu recherchieren.
 

Natalya Smirnova #:

Ich kann also 1 Indikator oder den zweiten Indikator in den Einstellungen deaktivieren.
Ich kann nicht herausfinden, wie man das macht, ohne eine Menge Code zu kopieren.....


input bool indicator_1 = true;
input bool indicator_2 = true;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool F_1()
    {
     if(!indicator_1)
          return true;
// выполнение условий

//---
     return false;
    }
bool F_2()
    {
     if(!indicator_2)
          return true;
// выполнение условий

//---
     return false;
    }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart(void)
    {
     if(F_1 && F2) /* работаем */ ;
    }

Schreiben Sie die Bedingung des Indikators in die Funktion, und wenn sie nicht geprüft werden soll, dann ist die Bedingung erfüllt. Rückgabe TRUE.

 
Natalya Smirnova #:

Bitte geben Sie mir Ratschläge, wie ich es am besten schreibe. Um Code-Arrays nicht zu duplizieren.
Der Expert Advisor verwendet 2 Indikatoren.
und die Bedingungen für die Ordereröffnung sehen nun wie folgt aus:


Aber ich würde gerne einen Filter hinzufügen
Verwenden oder nicht verwenden 1 oder 2 Indikatoren
Nur ich weiß nicht, wie es mehr richtig zu implementieren.
Sie würde folgendermaßen aussehen:

Dass ich 1 Indikator oder den zweiten Indikator in den Einstellungen deaktivieren kann.
Ich kann nicht herausfinden, wie man das macht, ohne eine Menge Code zu kopieren.....

Dennoch sollten die Variable für die Verwendungsbedingung und die Variable für den Ausgangswert des Indikators unterschiedliche Variablen sein.
Und wenn die Variablen für die Verwendungsbedingung ind_1 und ind_2 sind, könnten Sie zum Beispiel so vorgehen:

ind_1 = !(ind_1 && !(Indicator1>0));
ind_2 = !(ind_2 && !(Indicator2>0));
if (ind_1 && ind_2) { OrderSend... };
Nur für den Fall: Ausrufezeichen bedeutet Invertierung des boolschen Wertes
 
Nikolai Semko #:

Dennoch sollten die Variable für die Verwendungsbedingung und die Variable für den Ausgangswert des Indikators unterschiedliche Variablen sein.
Und wenn die Variablen für die Verwendungsbedingung ind_1 und ind_2 sind, dann können wir zum Beispiel folgendes tun:

ind_1 = !(ind_1 && !(Indicator1>0));

die vielen Klammern und Umkehrungen in dem logischen Ausdruck lassen vermuten, dass man ihn vereinfachen könnte...

PS/ architektonisch ist es im Allgemeinen eine Schande. Wenn Indikatorwerte ohne Handelsfaktoren gruppiert werden können (unabhängig davon, wo Sie was eröffnet haben), dann ist es ein Indikator und hat nichts mit der Handelslogik des Roboters zu tun. Sie müssen gerendert werden und für die Analyse zur Verfügung stehen.

 
Maxim Kuznetsov #:

Die Fülle von Klammern und Umkehrungen im logischen Ausdruck legt nahe, dass er vereinfacht werden kann...

Vielleicht.
Welche Optionen gibt es für die Logik ab
0 0 = 1
0 1 = 1
1 0 = 0
1 1 = 1
Außer !(a && !b)
Kann jemand eine kürzere Logik finden...

 
Maxim Kuznetsov #:

PS/ Architektonisch ist es eine Schande. Wenn Indikatorwerte ohne Handelsfaktoren gruppiert werden können (unabhängig davon, wo Sie was eröffnet haben), dann ist es ein Indikator und hat in der Handelslogik eines Roboters nichts zu suchen. Sie müssen gerendert werden und für die Analyse zur Verfügung stehen.

Ich habe es nicht verstanden.
Ich beantworte nur eine Frage. Nicht mehr.
 
Nikolai Semko #:
Vielleicht.
Welche Optionen gibt es für die Logik ab
0 0 = 1
0 1 = 1
1 0 = 0
1 1 = 1
Außer !(a && !b)
Kann jemand eine kürzere Logik finden...

!a || b

:)

 
PapaYozh #:

!a || b

:)

Richtig.
Vielen Dank :))
Lustig. Ich habe versucht, XOR anzuhängen und habe OR vergessen.

Also eine kürzere Version:
ind_1 = !ind_1 || Indicator1>0;
ind_2 = !ind_2 || Indicator2>0;
if (ind_1 && ind_2) { OrderSend... };
oder einzeilige Version mit den ursprünglichen ind_1 und ind_2 erhalten

if ((!ind_1 || Indicator1>0) && (!ind_2 || Indicator2>0)) { OrderSend... };