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

 
hoz:

Ich habe den verdammten Fehler auch. In Wirklichkeit gibt es überhaupt keine Logik. Um eine schwebende Order gemäßhttps://book.mql4.com/ru/appendix/limits zu eröffnen, muss der Eröffnungskurs entweder unter Bid (für Verkauf) oder über Ask (für Kauf) liegen. Ich tue, was erforderlich ist.

Von Zeit zu Zeit erhalte ich 0 und 130 Fehler. 130 ist zwar ein Fehler des falschen Stopps, der bei der Änderung, aber nicht bei der Auftragseröffnung auftreten kann.

Auf dem Screenshot werden die Situation und der Druck durch die pr-Funktion angezeigt.

Bitte teilen Sie mir mit, wie ich diesen Fehler beheben kann. Ich habe diesen Fehler wirklich satt. Logischerweise geht es gar nicht um das Thema.

Victor, abgesehen von der Einhaltung der Ober- und Untergrenzen müssen Sie die präventive Freigabe nutzen, denn während die Bestellung versendet wird, steht der Preis nicht still, so dass Sie einen Schritt oder eine Stufe in den gesperrten Bereich bekommen! Fügen Sie wie bei der Änderung und einem größeren Schlupf, und Sie werden gut sein! Arbeiten an Real ohne Fehler! Viel Glück!
 
borilunad:
Victor, abgesehen von above-below, müssen Sie eine präventive Lücke verwenden, denn während der Auftrag gesendet wird, steht der Preis nicht still, so dass Sie einen Schritt oder einen Schritt in die verbotene Zone bekommen! Fügen Sie wie bei der Änderung und einem größeren Schlupf, und Sie werden gut sein! Arbeiten an Real ohne Fehler! Viel Glück!


Boris, also der Ausrutscher ist schon 3, also, so wie ich das verstehe 3 Punkte wert. Wie viel mehr brauchen Sie?

Du meinst so:

bool OpenBuy()
{
   int ticket = -1;
   double OOP = High[1] + i_thresholdToUp * pt;
   pr ("ND(OOP) = " + ND(OOP) + " ; Ask = " + Ask);
   pr ("g_stopLevel = " + g_stopLevel);

   if ((ND(OOP) - g_stopLevel)> Ask)
       ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0, CLR_NONE);
   else pr ("Ордер послать не удалось " + GetLastError());
   
   if (ticket > 0)
   {
 //      lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                            // .. успешно выполнены
       return (true);
   }
}

Ich frage mich, wie man das besser implementieren kann, ohne dass man hier zusätzliche Funktionen einbauen muss.

 

hoz, unter habe ich mich gefragt, wie man das Wenn noch weiter verkürzen kann.Siehe: Wenn wir eine Variable

bool _if=((2*trend-1)*Δ≥const);//аналогично _if=(±Δ≥const)

ist cnt=cnt+step, wobei

if(_if) step=1;
}else{ step=-cnt;
}

Aber 1=cnt/cnt, a -cnt=cnt/(-1), der einzige Unterschied ist der Nenner. Erinnern wir uns nun daran, dass x^0=1, x^1=x ist, d.h. wir können unsere boolesche Variable _if in den Exponenten setzen, d.h.step=cnt/a*(cnt^_if); wobei

if(_if) a=1;
}else{ a=-1;
}

Aber ±a ist angeblich 2*_if-1, d. h.

bool _if=((2*trend-1)*Δ≥const);//аналогично _if=(±Δ≥const)
int step=cnt/(2*_if-1)*(cnt^_if);//принимает два значения: 1 и -cnt
cnt=cnt+step;

Oder wir vereinfachen

bool _if=((2*trend-1)*Δ≥const); cnt=cnt+cnt/((2*_if-1)*(cnt^_if));
 
hoz:


Boris, die Abweichung beträgt also bereits 3, das verstehe ich unter 3 Punkten. Wie viel mehr brauchen Sie?

Du meinst so:

Ich frage mich, wie man dies intelligenter implementieren kann, um keine zusätzlichen Funktionen hier hineinzubringen.

Ich hoffe, der Schlupf ist 3 für 4 Ziffern, wenn Sie 30 für 5 brauchen!
 

Leute, bitte raten Sie zu einem Skript, das eine Meldung ausgibt, dass der Markt offen ist und dass der Markt geschlossen ist.

D.h. wenn Montag 0.00.01 kommt, gibt es eine Nachricht, dass der Markt öffnet, dann die Nachricht, dass "der Markt offen ist", ebenso, dass der Markt geschlossen hat.

Ich habe ein Skript geschrieben, aber es funktioniert nicht (( Hilf mir, es herauszufinden.

// определяем начало и конец торгов.
      // начало торгов в понедельник в 0.00.01
      
      if(DayOfWeek()==1 && Hour()== 0 && Minute()== 0 && Seconds()==01)
      {
         Alert("Рынок открылся.");
      }
      // конец торгов в Пятницу в 23.59.59
      if(DayOfWeek()==5 && Hour()== 23 && Minute()== 59 && Seconds()==59)
      {
         Alert("Пятница, Рынок закрылся.");
      }

 

Gibt es einen Roboter, der schwebende Aufträge BAY STOP und SELL STOP platzieren kann? Zu einem bestimmten Zeitpunkt , mit einem Mindestschritt der Auslösung durch den Preis zu diesem Zeitpunkt. Kurz gesagt, unter den Nachrichten. Ich habe keine Zeit mit meinen Händen.
 
hoz:

Ich habe den verdammten Fehler auch. In Wirklichkeit gibt es überhaupt keine Logik. Um eine schwebende Order gemäßhttps://book.mql4.com/ru/appendix/limits zu eröffnen, muss der Eröffnungskurs entweder unter Bid (für Verkauf) oder über Ask (für Kauf) liegen. Ich tue, was erforderlich ist.

Von Zeit zu Zeit erhalte ich 0 und 130 Fehler. 130 ist zwar ein Fehler des falschen Stopps, der bei der Änderung, aber nicht bei der Auftragseröffnung auftreten kann.

Auf dem Screenshot werden die Situation und der Druck durch die pr-Funktion angezeigt.

Bitte teilen Sie mir mit, wie ich diesen Fehler beheben kann. Ich habe diesen Fehler wirklich satt. Logischerweise geht es gar nicht um das Thema.

Der 130. Fehler ist nicht notwendigerweise ein Stoppauftrag. Es ist auch ein Abstand von der Platzierung schwebender Aufträge mindestens int MarketInfo(Symbol(), MODE_STOPLEVEL)
 
borilunad:
Ich hoffe, Schlupf 3 für 4 Ziffern, wenn Sie 30 für 5 brauchen!

Es gibt also überhaupt keinen Schlupf im Tester, was das betrifft... Korrigiert auf 30.

artmedia70:
130. Fehler ist nicht notwendigerweise ein Stoppauftrag. Es ist auch ein Abstand von ausstehenden Aufträgen, der mindestens gleich int MarketInfo(Symbol(), MODE_STOPLEVEL)

ist.

Hier ist sie:

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy()
{
   int ticket = -1;
   double OOP = High[1] + i_thresholdToUp * pt;
   pr ("ND(OOP) = " + ND(OOP) + " ; Ask = " + Ask);
   pr ("g_stopLevel = " + g_stopLevel);

   if (ND(OOP)> (Ask + g_stopLevel))
       ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 30, 0, 0, NULL, i_magic, 0, CLR_NONE);
   else pr ("Ордер послать не удалось " + GetLastError());
   
   if (ticket > 0)
   {
 //      lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                            // .. успешно выполнены
       return (true);
   }
}

Wo:

g_stopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL) * pt;

Er ist auf dieselbe Weise geschrieben wie deiner, Artem. Nach der Logik war es gestern genauso. Aber die Fehler häufen sich. Es macht keinen Sinn, zusätzliche Punkte hinzuzufügen, damit es im Prüfgerät funktioniert, wo es überhaupt keine Requotes oder Ausrutscher gibt.

Was sollte ich allgemeiner tun, um nicht dieselben Fehler zu machen? Ich habe so viele Expert Advisors gesehen, die nie 2-3 zusätzliche Punkte hinzugefügt haben, außer bei Slippage. Immerhin gibt es in diesem Fall eine Abweichung von 6pp vom geforderten Preis. Und das ist nicht richtig. Die Expert Advisors sind sowohl für Ticks als auch für Minuten geschrieben. Und es sieht so aus, als ob es beim Handel Genauigkeit geben könnte. Ich möchte also, dass es genau ist und keine riesigen Einzüge hat...

 

Freunde!

Eine globale Frage ist aufgetaucht

Ist es möglich, den Tick-Stream im Terminal am Wochenende zu erhalten, so dass ich EAs in Ruhe schreiben und debuggen kann?

Ich habe bereits ein paar Tipps, wie ich sie in meinem Handelsroboter verwenden kann.

ich kann nicht einen Tick verwenden, der den EA auslöst, ich brauche einen Fluss von Ticks in einem bestimmten Bereich

gibt es so etwas in der Natur?

mt4-Server, die Streaming-Kurse an Wochenenden emulieren?

 
pasha5282:

Leute, bitte raten Sie zu einem Skript, das eine Meldung ausgibt, dass der Markt offen ist und dass der Markt geschlossen ist.

d.h., wenn am Montag 0.00.01 die Meldung kommt, dass der Markt geöffnet ist, dann die Meldung, dass "der Markt geöffnet ist", ebenso, dass der Markt geschlossen ist.

schrieb ein Skript, aber aus irgendeinem Grund funktioniert es nicht (( helfen Sie mir, es herauszufinden.


Wenn es sich um ein Skript handelt und es sich im Ordner scpirts befindet, dann hat es einmal funktioniert und wurde aus dem Diagramm entfernt. Um sie dauerhaft zu erhalten, fügen Sie Ihren Code in diese


int start()
{
   while(!IsStopped())
   {
      // вот сюда

      Sleep(500);
   }
}