[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 611

 
ilunga:

Warum vergleichen Sie dann mehrmals hintereinander das Gleiche?

Wie sollte man sie Ihrer Meinung nach vergleichen?
 
Dimka-novitsek:

if(Stoch_1>Stoch_2) { flag1=1 ; Print (flag1,flag2,flag3,flag4); }


if(Stoch_1<Stoch_2 && flag1==1) flag2=1 ; Print (flag1,flag2,flag3,flag4); }

if ((Stoch_1>Stoch_2) && flag1==1 && flag2==1) {flag3=1; Print (flag1,flag2,flag3,flag4);PlaySound("alert.wav");}


if(Stoch_1<Stoch_2 && flag1==1 && flag2==1 && flag3==1) flag4=1;
{Drucken (flag1,flag2,flag3,flag4);}
if(Stoch_1>Stoch_2 && flag1==1 && flag2==1 && flag3==1 && flag4==1)
{OrderSend (Symbol( ), OP_SELL, 0.01 ,Bid, 0, 0, 0, NULL, 450, 0, CLR_NONE);
Print ("OUT");}



flag1=0;
flag2=0;
flag3=0;
flag4=0;

Sie wissen, dass Sie lernen werden, und um des Lernens willen schreiben Sie etwas... Zumindest habe ich Ihre Klammern so gesetzt, dass sie meiner Meinung nach eine Rolle spielen.


und auch wenn Ihr Code 24 Fehler im Compiler ausgab!!! trotzdem danke, auch für die schlampige Hilfe.... für die Idee... (es funktioniert jetzt - obwohl ich es im Prinzip auch so machen wollte, aber die Zeichensetzung war ein Problem)
 

Auch hier habe ich mich gefragt, was der Positionsindex ist. Wenn es sich um eine Positionsnummer in der Historie handelt, was macht diese Funktion dann?

GetIndexLastPos Index der zuletzt geöffneten Position oder -1 ???

der Index der zuletzt geöffneten Position ist immer 1, weil es die letzte ist!!!

Ich habe den INDEX .... offensichtlich falsch verstanden.

Hinweis wer weiß?

 
lottamer:

Wie sollte sie Ihrer Meinung nach aussehen?

Fangen wir an:

1.Wenn(Stoch_1>Stoch_2) flag1=1 ; , dann kann die darauf folgende Bedingung (Stoch_1<Stoch_2 && flag1==1) im Prinzip nicht wahr sein, denn wenn Stoch_1<Stoch_2 flag1==0 und wenn flag1==1dann Stoch_1>Stoch_2. ist es bei allen nachfolgenden Bedingungen in dieser Funktion dasselbe, so dass nur Flag1 den Wert ändern kann. Das heißt, Ihr Programm führt die ersten beiden Zeilen aus, überspringtdie dritte, führtdie vierte aus, überspringtdie fünfte, führt die sechste aus, führt die siebte aus und überspringt alle anderen Zeilen.


	          
 
xant:

TarasBY,

Var1 und andere benannt, wie ich, eingefügt Block fGet_MineGV() innerhalb init und Block fSave_MineGV() innerhalb staft.

Beim Kompilieren gab der EA eine Reihe von Fehlern aus.

Ich habe sie nacheinander ausprobiert. Zuerst habe ich es in init eingefügt und dann kompiliert. Es gibt 0 Fehler, eine Bemerkung: ist nicht referenziert und wird aus der exp-Datei entfernt. Nun, das leuchtet mir ein, es kann die Datei nicht finden, weil sie noch nicht existiert. Sie muss innerhalb des Heftes geschrieben werden.

Wenn ich also versuche, den zweiten Block innerhalb des Stapels zu schreiben, kommt es zu einer Menge Fehler.

Struktureller Algorithmus:

int init()
{
    fGet_MineGV();
}
int start()
{
    fSave_MineGV();
}
double Var1, Var2, Var3, Var4;  // 4-ре переменных для сохранения (у Вас они свои !!!)
void fSave_MineGV (string fs_PrefName = "")     // префикс имени переменной
{
    static datetime ldt_NewBar;
    datetime ldaTBeginBar = iTime (Symbol(), 1, 0);
//----
    //---- Сохраняемся в начале каждой минуты
    if (ldt_NewBar == ldaTBeginBar) return;
    ldt_NewBar = ldaTBeginBar;
    //---- Сохраняем поочереди значения каждой переменной
    string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
    GlobalVariableSet (ls_Name, Var1);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
    GlobalVariableSet (ls_Name, Var2);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
    GlobalVariableSet (ls_Name, Var3);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
    GlobalVariableSet (ls_Name, Var4);
//----
}
// в init()
void fGet_MineGV (string fs_PrefName = "")     // префикс имени переменной
{
    string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
//----
    //---- Восстанавливаем значения переменных
    if (GlobalVariableCheck (ls_Name)) Var1 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
    if (GlobalVariableCheck (ls_Name)) Var2 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
    if (GlobalVariableCheck (ls_Name)) Var3 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
    if (GlobalVariableCheck (ls_Name)) Var4 = GlobalVariableGet (ls_Name);
//----
}

Haben Sie das natürlich getan? Und es lässt sich nicht kompilieren?

 
lottamer:

Auch hier habe ich mich gefragt, was der Positionsindex ist. Wenn es sich um eine Positionsnummer in der Historie handelt, was macht diese Funktion dann?

GetIndexLastPos Index der zuletzt geöffneten Position oder -1 ???

der Index der zuletzt geöffneten Position ist immer 1, weil es die letzte ist!!!

Ich habe den INDEX .... offensichtlich falsch verstanden.

Hinweis wer weiß?


der Index der zuletzt geöffneten Datei ist immer 1, weil es die letzte ist!!! Nicht 1, sondern 0, und nicht in der Geschichte. In der Historie ist 0 der Index der letzten geschlossenen Position oder des letzten gelöschten Auftrags, und das nicht immer, denn neben dem Markt gibt es auch schwebende Aufträge, die keine Positionen sind.
 
Profi, bitte sagen Sie mir, wie ich folgendes programmatisch schreiben kann: "Um eine Pending-Order auf SL-Ebene mit den Parametern einer Closing-Order unter Berücksichtigung des Spreads zu setzen" und wo ich es im Code eines EAs anbringen kann?
 
yosuf:
Herr Prof., bitte sagen Sie mir, wie ich folgendes programmatisch schreiben kann: "Um eine schwebende Order auf SL-Ebene mit den Parametern einer abschließenden Order einschließlich des Spreads zu platzieren", und wo ich es in den EA-Code einfügen kann?

Das geht nicht mit Parametern einer engen Reihenfolge. Der Eröffnungskurs ist ebenfalls ein Parameter.
 

TarasBY

Ja, ich habe getan, was Sie geschrieben haben. Und es lässt sich nicht kompilieren.

Offensichtlich habe ich etwas falsch gemacht, aber ich weiß nicht genau, was. Sie können es Schritt für Schritt durchgehen.

 
rigonich:

Es gibt keine Möglichkeit mit den Parametern des zu schließenden. Der Eröffnungskurs ist ebenfalls ein Parameter.
Warum? Ein Beispiel: Ein Auftrag wurde mit O=1,2900, TP 1,300 und SL 1,2800 eröffnet. Die Pending Order sollte die Parameter BAY O= 1,2800 mit TP 1,2900 und SL 1,2700 haben. Wenn möglich, sollten Sie die Ausbreitung als verloren betrachten.
Grund der Beschwerde: