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

 
deyron:
Hallo. Können Sie mir bitte sagen, wenn ein EA an mehrere Fenster von Währungspaaren gleichzeitig angehängt ist, wirken sich Änderungen im EA in einem Fenster auf den EA in einem anderen Fenster aus, d. h., lokale Variablen ändern sich oder nicht?


Wenn Sie die Magie für ein und denselben EA ändern, arbeiten die EAs getrennt in ihrem eigenen Fenster.

 

ICH BRAUCHE DRINGEND HILFE BEI DER NEUGESTALTUNG MEINER EA!!!

Ich bin mit allem darin zufrieden, ich wünschte nur, ich könnte.... Wenn Sie ein Geschäft nicht bis zum Break-even übersetzen oder mit Gewinnmitnahme schließen können, dann schließen Sie es auf der gegenüberliegenden Seite eines neuen Signals zu öffnen, ohne die Handelsstrategie zu ändern. Wenn sich zum Beispiel das Verkaufsgeschäft umgedreht hat und Owls es nicht auf den Breakeven übertragen hat, startet er eine neue Kerze, um ein Verkaufsgeschäft mit steigendem Volumen zu eröffnen, in der Hoffnung auf einen Pullback, und ich möchte, dass er so weiterarbeitet, als hätte er das Geschäft bei Stop Loss/Take... geschlossen. wenn der Kurs sich umkehrt, eröffnet er den Kauf und schließt diesen, wenn auch mit einem großen Minus.... Wie diese

/*dekompiliert gelöscht*/

 
deyron:
Hallo. Können Sie bitte beraten, wenn ein EA an mehrere Fenster von Währungspaaren angehängt ist, dann Änderungen in der EA in einem Fenster Auswirkungen auf die EA in einem anderen Fenster??? dh. lokale Variablen ändern oder nicht???
Nein, sie beeinflussen sich nicht gegenseitig. Die gleiche Positionsmagie kann nur dann schädlich sein, wenn der EA die Positionsschließung nur durch Magie bestimmt.
 

Guten Tag an alle. Bitte helfen Sie mir, globale Variablen zu verstehen. Das Problem ist ungefähr so: Ich habe eine Variable bool line_1=false; wechselt er zu wahr; beim Erreichen eines Preises und machen Ebenen des Erreichens, die andere Aktionen sein werden und bool Zeile_1 wird wieder falsch; Ich muss das System neu starten oder die Parameter werden am Freitagabend nicht erreicht, die Werte dieser Variablen gehen verloren und beeinflussen das Ergebnis des Handels, wie ich verstehe, muss ich sie zu globalen bool-Variablen machen. ich habe noch nichts getan, und ich brauche Ihren Rat, wenn ich denke, ich werde Korrekturen im Code machen, bitte sagen Sie mir, wenn etwas korrigiert werden muss, danke.

bool line_1=GlobalVariableGet(false);

if(macd_2<0&&macd_1>0) {line_1=GlobalVariableSet(true);}

if(macd_2>0&&macd_1<0) {line_1=GlobalVariableSet(false);}

Wenn der Code so aufgebaut ist, wird dann beim Neustart des Terminals die Variable ihren vorherigen Wert behalten oder wird sie auf den zu Beginn des Programms deklarierten Zustand zurückgesetzt? Nochmals vielen Dank!

 
paladin80:
Nein, sie beeinflussen sich nicht gegenseitig. Dieselbe Positionsmagie kann nur dann nachteilig sein, wenn der EA die Positionsschließung nur durch Magie bestimmt.

Ja, Sie können natürlich auch anders filtern. Zum Beispiel nach Symbolen, usw. Ich sagte, die einfachste Option.
 
laveosa:

Guten Tag zusammen. Bitte helfen Sie mir zu verstehen, globale Variablen. das Problem ist etwa so: Ich habe eine Variable bool line_1=false; wechselt es zu wahr; beim Erreichen eines Preises und machen Ebenen des Erreichens, die andere Aktionen sein werden und bool Zeile_1 wird wieder falsch; Ich muss das System neu starten oder die Parameter werden am Freitagabend nicht erreicht, die Werte dieser Variablen gehen verloren und beeinflussen das Ergebnis des Handels, wie ich verstehe, muss ich sie zu globalen bool-Variablen machen. ich habe noch nichts getan, und ich brauche Ihren Rat, wenn ich denke, ich werde Korrekturen im Code machen, bitte sagen Sie mir, wenn etwas korrigiert werden muss, danke.

bool line_1=GlobalVariableGet(false);

if(macd_2<0&&macd_1>0) {line_1=GlobalVariableSet(true);}

if(macd_2>0&&macd_1<0) {line_1=GlobalVariableSet(false);}

Wenn der Code so aufgebaut ist, wird die Variable beim Neustart des Terminals ihren vorherigen Wert beibehalten, oder wird sie auf den zu Beginn des Programms deklarierten Zustand zurückgesetzt? Nochmals vielen Dank!

Lesen Sie zuerst über GlobalVariableSet() - Ihnen fehlen Parameter und Sie verwenden es falsch.

Die Abfolge der Operationen ist wie folgt: Wenn sich der Wert der zu speichernden Variablen ändert, wird dieser Wert mit dieser Funktion an die entsprechende globale Variable des Terminals übergeben. Und wenn Sie den EA in init() neu initialisieren, übergeben Sie seinen Wert über die Funktion GlobalVariableGet() an die Variable.

 

Meine Herren, bitte geben Sie mir einen Hinweis!

Ich versuche, eine einfache Idee umzusetzen, die in den Kommentaren zum Programm beschrieben ist.

Das Programm öffnet im TESTER Aufträge zu einem Preis, der nicht mit den im Code angegebenen übereinstimmt.

Zum Beispiel wird der Auftrag zum Preis von 0,86084 eröffnet, während der nächstgelegene Wert im Array 0,85375 ist.

Die Differenz ist positiv, während der Code vorschreibt, Aufträge zu eröffnen, wenn die Differenz < 0,00000 ist, d.h. wenn sie negativ ist.


Bitte teilen Sie uns mit, wo sich der Fehler befindet.

Ich danke Ihnen.

int start()
{
 double Price=iOpen (Symbol (),0,0);        
 double SL=NormalizeDouble (Price-3000*Point, Digits);         
 double TP=NormalizeDouble (Price+100*Point, Digits);    
 #include <MASSIV.mqh> //объявление массива типа double (неповторяющиеся значения цены с пятью знаками после точки)
 double value =  Bid ;//параметру value функции ArrayBsearch присваивается значение  цены последнего тика

 int S = ArrayBsearch(  massiv,  value, WHOLE_ARRAY,  0, MODE_ASCEND);//функция возвращает индекс значения цены макс. близкой к цене последнего тика 
 if( (NormalizeDouble (Bid-massiv[S],Digits) <=0))//если разница между значением массива возвращенным на последнем тике и ценой последнего тика отрицательная или = 0.00000


{
                        
 OrderSend(Symbol(),OP_BUY,0.1,Ask,1,SL,TP,"jfh",123 );//ордер открыть
 
solnce600:

Meine Herren, bitte geben Sie mir einen Hinweis!

Ich versuche, eine einfache Idee umzusetzen, die in den Kommentaren zum Programm beschrieben ist.

Das Programm öffnet im TESTER Aufträge zu einem Preis, der nicht mit dem im Code angegebenen übereinstimmt.

Der Auftrag wird beispielsweise zum Preis von 0,86084 eröffnet, wobei der nächstliegende Wert 0,85375 im Array ist.

Die Differenz ist positiv, während der Code vorschreibt, Aufträge zu eröffnen, wenn die Differenz < 0,00000 ist, d.h. negativ.

Bitte teilen Sie uns mit, wo sich der Fehler befindet.

Ich danke Ihnen.

Der beste Weg , den Fehler zu finden, ist, jede Zeile von unten nach oben durchzugehen und zu sehen, wie sie mit dem übereinstimmt, was man erhalten möchte und was geschrieben steht.

if ((NormalizeDouble (Bid-massiv[S],Digits) <=0))
//если разница между значением массива возвращенным на последнем тике и ценой последнего тика отрицательная или = 0.00000
Diese Bedingung setzt voraus, dass... - Ist es das, was Sie beabsichtigen? (1 - 1000000 <= 0) - erfüllt???

Ich habe Ihnen eine Lösung angeboten und Sie haben sie "übersehen"...

 
TarasBY:

So finden Sie Fehler: Gehen Sie jede Zeile von unten nach oben durch und stellen Sie die Übereinstimmung zwischen dem, was Sie wollten, und dem, was geschrieben steht, fest.

Diese Bedingung setzt voraus, dass... - Ist das Ihre Absicht? (1 - 1000000 <= 0) - ist das ausreichend?

Ich habe Ihnen eine Lösung angeboten und Sie haben sie "übersehen"...

Vielen Dank, ich habe Ihren Hinweis sogar für mich kopiert.... Ich habe ihn nur nicht ganz verstanden..... Entschuldigen Sie meine Dummheit .... Ich werde mir den Kopf zerbrechen und versuchen, es herauszufinden.

Ich verstehe nur nicht, warum Sie Bid variablen Wert (Preis des letzten Tick) als 1 nehmen. Ich nehme an, es ist ein 6-stelliger Wert mit einem Dezimalpunkt nach der ersten... und der Wert von

Bitte sagen Sie mir, was ich vielleicht falsch verstehe.

Ich habe Ihren Code sorgfältig studiert.

double ld_Delta = 10. * Point;
if (NormalizeDouble (MathAbs (Bid - Price), Digits) <= ld_Delta)//
and this price is the open price of a new bar
{OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123);}///openthe order


Aber ich verstehe das nicht.

-Warum schlagen Sie vor, die Variable Preis anstelle der Variable massiv[S] zu verwenden? Er enthält den Eröffnungskurs des letzten Balkens.

Meine Idee ist, dass eine der notwendigen Bedingungen für die Eröffnung eines Auftrags das Zusammentreffen seines Eröffnungskurses mit einem der Werte des Arrays ist, der dem Preis des letzten Ticks am nächsten kommt.

Meine vollständige Strategie sieht folgendermaßen aus

OPEN ORDER bei gleichzeitiger Erfüllung von 2 Bedingungen

-Der Eröffnungskurs der letzten Kerze

zu dem Preis, der einem der Array-Werte am nächsten kommt (Array-Werte - etwa 2000 sich nicht wiederholende Geldkurswerte in zufälliger Reihenfolge)

Ich werde Ihnen sehr dankbar sein für Hilfe und Hinweise - aber ich rätsele schon den zweiten Tag ..... und alles ohne Erfolg.


	          
 
solnce600:

Vielen Dank, ich habe den Tipp von Ihnen sogar kopiert.... Ich habe ihn nur nicht ganz verstanden..... Entschuldigung für die Dummheit .... Ich werde mir den Kopf zerbrechen und versuchen, es herauszufinden.

Ich verstehe nur nicht, warum Sie Bid variablen Wert (Preis des letzten Tick) als 1 nehmen. Ich nehme an, es ist ein 6-stelliger Wert mit einem Dezimalpunkt nach der ersten... und der Wert von

Bitte sagen Sie mir, was ich vielleicht falsch verstehe.

Ich habe Ihren Code sorgfältig studiert.

double ld_Delta = 10. * Point;
if (NormalizeDouble (MathAbs (Bid - Price), Digits) <= ld_Delta)//
and this price is the open price of a new bar
{OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123);}///openthe order

Aber ich verstehe das nicht.

-Warum schlagen Sie vor, die Variable Preis anstelle der Variable massiv[S] zu verwenden? Er enthält den Eröffnungskurs des letzten Balkens.

Meine Idee ist, dass eine der notwendigen Bedingungen für die Eröffnung eines Auftrags das Zusammentreffen seines Eröffnungskurses mit einem der Array-Werte ist, der dem Preis des letzten Ticks am nächsten kommt.

Meine vollständige Strategie sieht folgendermaßen aus

OPEN ORDER bei gleichzeitiger Erfüllung von 2 Bedingungen

-Der Eröffnungskurs der letzten Kerze

zu dem Preis, der einem der Array-Werte am nächsten kommt (Array-Werte - etwa 2000 sich nicht wiederholende Geldkurswerte in zufälliger Reihenfolge)

Ich bin Ihnen sehr dankbar für Hilfe und Hinweise - ich tüftle schon den zweiten Tag an ..... herum, aber es hat keine Wirkung.

Um zu verstehen, was vor sich geht, muss ich die Berechnungen an den Drucker weiterleiten:

    //если разница между значением массива возвращенным на последнем тике 
    // и ценой последнего тика отрицательная или = 0.00000
    if ((NormalizeDouble (Bid-massiv[S], Digits) <= 0))
    {
        Print ("massiv[", S , "] = ", massiv[S], " | massiv[", S - 1, "] = ", massiv[S-1], " | massiv[", S + 1, "] = ", massiv[S+1], " | Bid = ", Bid);
        OrderSend(Symbol(),OP_BUY,0.1,Ask,1,SL,TP,"jfh",123 );//ордер открыт
    }
und analysieren Sie die Ergebnisse.
Grund der Beschwerde: