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

 

Grüße an alle, ich heruntergeladen Owl, in der Tester alles normal ist und verkauft und kauft, habe ich es auf der Demo in Alpari, nur buys.....

Vielleicht fehlt dort etwas? Ich weiß nicht, wie das funktionieren würde....

/* dekompiliert gelöscht */

 

Ich möchte, dass mein Expert Advisor kauft, wenn der Preis in der Nähe des Preises der Maske + Einzugi_thresholdFromMa ist. Ich habe es für eine lange Position so geschrieben:

bool OpenBuy(double fastMa)
{
   int ticket = -1;
   
   //if (Bid > fastMa)
   if (High[0] == fastMa || Low[0] == fastMa)
       ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(fastMa + i_thresholdFromMa * pt), 3, 0, 0, NULL, i_magic, 0);
   
      if (ticket > 0 && OrderSelect(ticket, SELECT_BY_TICKET == true))
 
   return (true);
}

Der Wert vonfastMa wird über die Funktionsparameter übergeben. Dann vergleiche ich die Werte des aktuellen High und Low mit dem Wert desFastMa Fast Stroke.

Wenn der Wert von high oder low gleich dem Wert desfastMa Fast-Ventils ist, dann sollte logischerweise eine Order zum Preis (Wert desfastMa Fast-Ventils + Offset davoni_thresholdFromMa) eröffnet werden.

Die Funktion funktioniert nicht. Was ist der Grund dafür? Der Expert Advisor sendet keine Fehler an das Journal.

 
hoz:

Ich möchte, dass mein Expert Advisor kauft, wenn der Preis in der Nähe des Preises der Maske + Einzugi_thresholdFromMa ist. Ich habe es für eine lange Position so geschrieben:

Der Wert vonfastMa wird über die Funktionsparameter übergeben. Dann vergleiche ich die Werte des aktuellen High und Low mit dem Wert desFastMa Fast Stroke.

Wenn der Wert von high oder low gleich dem Wert desfastMa Fast-Ventils ist, dann sollte logischerweise eine Order zum Preis (Wert desfastMa Fast-Ventils + Offset davoni_thresholdFromMa) eröffnet werden.

Die Funktion funktioniert nicht. Was ist der Grund dafür? Der Expert Advisor sendet keine Fehler an das Journal.

Guten Abend, Sie sind mitten in der Nacht!

Gleiche Beträge zwischen Brüchen werden nie festgelegt! Die Zecken werden verrutschen und es wird kein Signal geben. Deshalb ist es besser so:

   if (High[0] >= fastMa && Low[0] <= fastMa)
 

Ich stimme Boris zu, möchte aber hinzufügen, dass ein Preisvergleich besser wie folgt durchgeführt werden sollte

nicht Bid>fastMA sondern Bid-fastMA>Zero

Nicht High[0]>=fastMA , sondern High[0]-fastMA>-Zero , und so weiter:)

Im globalen Abschnitt:

#define Zero 0.00000001 , oder etwas Ähnliches.

 
tara:

Ich stimme Boris zu, möchte aber hinzufügen, dass ein Preisvergleich besser wie folgt durchgeführt werden sollte

nicht Bid>fastMA sondern Bid-fastMA>Zero

Nicht High[0]>=fastMA , sondern High[0]-fastMA>-Zero , und so weiter:)

Im globalen Abschnitt:

#define Zero 0.00000001 , oder etwas Ähnliches.

Und ich stimme Alexej zu, aber ich bin nicht ins Detail gegangen, sondern habe nur die offensichtliche Unkorrektheit korrigiert! Den Rest findet man durch Prüfen und Probieren nach eigenem Geschmack heraus.
 

Alexey und Boris, ich danke Ihnen für Ihren wertvollen Kommentar.

#define Zero 0.00000001 , ich denke, es wäre sehr klein :) Ich nehme an, Sie können hier getrost einen halben Punkt oder einen Streupunkt einsetzen...

 
hoz:

Alexey und Boris, ich danke Ihnen für Ihren wertvollen Kommentar.

#define Zero 0.00000001 , ich denke, es wäre sehr klein :) Ich nehme an, Sie können hier getrost einen halben Punkt oder einen Streupunkt einsetzen...

Versuchen Sie, eine Variable anstelle von Null zu setzen und so den notwendigen Abstand zu bestimmen! Und höchstwahrscheinlich werden Sie es verlassen müssen, weil sich sein Wert je nach Marktlage ändert.
 
borilunad:
Versuchen Sie, eine Variable anstelle von Null zu setzen, und so den erforderlichen Abstand zu definieren! Und höchstwahrscheinlich sollten Sie es liegen lassen, denn sein Wert wird sich je nach Marktlage ändern.


Ja, wenn es eine Variable gibt, sollten wir sie testen und die Marktergebnisse beobachten. In der Zwischenzeit schreibe ich es, um es im Tester laufen zu lassen und Stärken und Schwächen meines TS zu identifizieren.

Das ist meine Logik:

bool OpenBuy(double fastMa, double slowMa)
{
   int ticket = -1;
   
   //if (Bid > fastMa)
   //if (High[0] == fastMa || Low[0] == fastMa)
   if ( (MathAbs(High[0] - fastMa) <= 1 * pt ) || ( MathAbs(Low[0] - fastMa) <= 0.1 * pt) )
       ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(fastMa + i_thresholdFromMa * pt), 3, 0, 0, NULL, i_magic, 0);
   
      if (ticket > 0 && OrderSelect(ticket, SELECT_BY_TICKET == true))
 
   return (true);
}

Ich habe für den Test vorerst 1 anstelle des variablen Spielraums eingesetzt, dann werde ich ihn auf den externen Spielraum verlegen.

So wie ich es verstehe, wird es die korrekteste Variante sein. Ob der Kurs den Balken berührt oder nicht, ist wichtig, um ein Signal zu erhalten. Der Kerzenständer hat zwei Enden (Hoch und Tief). Das bedeutet, dass wir nach den 2 Extremen suchen. Deshalb habe ich geschrieben, dass der Abstand kürzer als 1 ist.

Aber ich frage mich, ob sie sich in der Entfernung voni_thresholdFromMa(Einzug) öffnet, d. h. nicht vom Handgelenk, sondern vom äußersten Punkt der Kerze.

Ich werde Sie bitten, die Bedingung für den Eintritt in die Funktion des Öffnens nicht zu beachten, ich werde sie natürlich in die Signalfunktion aufnehmen.

Hier ist zum Beispiel ein Bildschirmfoto,

Screenshot des Augenblicks

Der rote Ball ist fastMA.i_thresholdFromMa(Einrückung vom Winken) ist 5 in externen Variablen. Alle anderen Bedingungen sind gekauft. Hier sehen wir 2 blaue Stop-Orders unterhalb des roten fastMa. Ich kann hier keine Logik erkennen. Die Order wird genau zum PreisND(fastMa + i_thresholdFromMa * pt) gesendet und ich kann es in der angegebenen Funktion sehen...

 
hoz:


Ja, wenn sie variabel ist, sollte sie auf dem Markt getestet und beobachtet werden, welche Ergebnisse sie zeigt. In der Zwischenzeit schreibe ich dies, um es im Tester laufen zu lassen und Stärken und Schwächen des TS zu identifizieren.

Das ist meine Logik:

Ich habe für den Test vorerst 1 an die Stelle des variablen Abstands gesetzt, dann werde ich ihn auf den äußeren verschieben.

So wie ich es verstehe, wird es die korrekteste Variante sein. Ob der Kurs den Balken berührt oder nicht, ist wichtig, um ein Signal zu erhalten. Der Kerzenständer hat zwei Enden (Hoch und Tief). Das bedeutet, dass wir nach den 2 Extremen suchen. Deshalb habe ich geschrieben, dass der Abstand kürzer als 1 ist.

Aber ich frage mich, ob sie sich in der Entfernung voni_thresholdFromMa(Einzug) öffnet, d. h. nicht vom Handgelenk, sondern vom äußersten Punkt der Kerze.

Ich werde Sie bitten, die Bedingung für den Eintritt in die Funktion des Öffnens nicht zu beachten, natürlich werde ich sie in die Signalfunktion aufnehmen.

Hier ist zum Beispiel ein Bildschirmfoto,

Das rote Häkchen steht für fastMA.i_thresholdFromMa(Einrückung vom Winken) ist 5 in externen Variablen. Der Rest ist auf jeden Fall ein Kauf. Hier sehen wir 2 blaue Stop-Orders unterhalb des roten fastMa. Ich kann hier keine Logik erkennen. Die Order wird genau zum PreisND(fastMa + i_thresholdFromMa * pt) gesendet und ich kann es in der angegebenen Funktion sehen...

Wenn Sie möchten, dass die Position früher, in der Mitte eines Balkens, geöffnet wird, müssen Sie für den Bai Low bar und für den Sall High bar angeben.

   if ( MathAbs(fastMa - Low[0]) <= 1 * pt )//для бая

   if ( MathAbs(High[0] - fastMa) <= 1 * pt )// для сэлла
   
 
borilunad:

Wenn Sie möchten, dass die Position früher, in der Mitte eines Balkens, geöffnet wird, müssen Sie für den Bai einen niedrigen Balken und für den Sall einen hohen Balken angeben.

if ( MathAbs(fastMa - Low[0]) <= 1 * pt )//для бая

   if ( MathAbs(High[0] - fastMa) <= 1 * pt )// для сэлла


Nun, Sie müssen es nicht früher tun. Ich weiß nicht, von welcher Seite sich die Kerze der Maske nähert. Oben oder unten. Das ist die Frage. Deshalb ist es unangemessen. Nicht wahr?

Jedenfalls ist der Eröffnungskurs in meiner Funktion OrderSend() anders und auf jeden Fall höher als in der Maske:

Hier drucke ich die Werte in der Funktion:

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy(double fastMa, double slowMa)
{
   int ticket = -1;
   
   if ( (MathAbs(High[0] - fastMa) <= 1 * pt ) || ( MathAbs(Low[0] - fastMa) <= 0.1 * pt) )
   {
       if ((fastMa + i_thresholdFromMa * pt) > Ask)            // Проверка что цена открытия выше Ask, т.к. у нас вход отложенником
      Print("fastMa = ", DoubleToStr(fastMa,Digits));
      Print("i_thresholdFromMa = ", DoubleToStr(i_thresholdFromMa * pt,Digits));
       ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(fastMa + i_thresholdFromMa * pt), 3, 0, 0, NULL, i_magic, 0);
      Print("OrderOpenPrice() = ", DoubleToStr(OrderOpenPrice(),Digits));
   }
      if (ticket > 0 && OrderSelect(ticket, SELECT_BY_TICKET == true))
 
   return (true);
}

Dies zeigt das Protokoll:

2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: delete #110 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: modify #110 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: OrderOpenPrice() = 1.29820
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: open #110 buy stop 0.10 EURUSD at 1.29820 ok
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: i_thresholdFromMa = 0.00050
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: fastMa = 1.29770
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: delete #109 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: modify #109 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: OrderOpenPrice() = 1.29820
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: open #109 buy stop 0.10 EURUSD at 1.29820 ok
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: i_thresholdFromMa = 0.00050
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: fastMa = 1.29770
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: delete #108 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: modify #108 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: OrderOpenPrice() = 1.29820
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: open #108 buy stop 0.10 EURUSD at 1.29820 ok
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: i_thresholdFromMa = 0.00050
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: fastMa = 1.29770
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: delete #107 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: modify #107 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: OrderOpenPrice() = 1.29820
2013.02.01 15:37:14     D_Aleks_first_pattern EURUSD,H1: loaded successfully

Es liegt auf der Hand, dass der Eröffnungspreis von mir festgelegt werden sollte. Sie werden berechnet. Zum Maschinenwert wird eine Lücke hinzugefügt. Und Sie können es auf dem Ausdruck sehen...