Eine Frage für MQL-Kenner - Seite 10

 
Rita:

Oh, ich war noch in Gedanken :)

Wenn

if (NumberOfPositions(NULL, OP_BUY,Magic)>=2 && NumberOfPositions(NULL,OP_SELL,Magic)>=2) {
 for{
// а сюда счетчик, по которому 2 раза пройдет
                    ClosePosFirstProfit(NULL,OP_BUY, Magic);
                    ClosePosFirstProfit(NULL,OP_SELL, Magic);
}
}
Nein?

 
Danke, Abzasc, ich werde es versuchen.
 
Hallo! Ich habe vor kurzem angefangen zu lernen, wie man in MQL4 schreibt und ich verstehe nicht, wie (mit welchem Befehl) man nicht einen eingebauten Indikator, sondern einen aus der Code Base mit einem Expert Advisor verbinden kann? Können Sie mir das bitte sagen!
 
savage_pinguin:
Hallo! Ich habe vor kurzem angefangen zu lernen, wie man in MQL4 schreibt, und ich verstehe nicht, wie (mit welchem Befehl) man nicht einen eingebauten Indikator verbinden kann, sondern einen aus der Code Base? Können Sie mir das bitte sagen!

iCustom() zu helfen
 

Nachmittags.

 if  ( Accumulation2MA_1<=MA_1  &&    Accumulation2MA_0>MA_0 )   {
// если линии пересеклись - открываем позицию
   ticket=OrderSend(Symbol(),0,Lot,Ask,Slippage,Bid-SL*Point,Ask+TP*Point,
                                             "Хи-Хи",MagicNum,0,CLR_NONE);
     if(ticket < 0) { Print("Ошибка открытия ордера BUY #", GetLastError()); 
               Sleep(10000);   return (0); }
   }

Der Expert Advisor verwendet einen benutzerdefinierten Indikator Accumulation2MA, an den der MA-Indikator im Modus iMAOnArray angehängt ist.

Einfahr-/Ausfahrsignale sind Linienüberquerungen!

Ich verstehe nicht, was das Problem ist. Aber die Hälfte der Einfahrts- und Ausfahrtssignale sind "dreist" unkenntlich gemacht! Ohne Grund!

Das Gleiche gilt beim Schließen:

 for (int v=0; v<OrdersTotal(); v++)                             {//сортируем       
      if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES))               {//перебираем           
        if (OrderSymbol()==Symbol()&& OrderMagicNumber()==MagicNum)   {//выбираем 
//-----------------------------------------------------                  
if (OrderType() == OP_SELL) {//если линии пересеклись, то закрываем: 
      if( Accumulation2MA_1<=MA_1  &&    Accumulation2MA_0>MA_0 )   {
                 OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию
                 return(0); // выходим
                }   
......

Fast die Hälfte der Abschlüsse wird auf diese Weise verfehlt. Können Sie mir sagen, was los ist?

Die Bedingungen sind die einfachsten! Die Linien sind eindeutig in Bewegung! Aber es gibt nicht immer offene/geschlossene Stellen! Das Journal ist "stumm".

Ich habe sie mit Pfeilen markiert.

//------заполняем массив значениями Accumulation2MA -----------------
double Accumulation2MA[50];
int    i=0;  while (i<50)  {
Accumulation2MA[i]= iCustom(NULL, 0,"Accumulation2MA_v03",SMA,FMA,0, i);
                  i++;     }
//------Вешаем на Accumulation2MA - линию МА ---------------
ArraySetAsSeries(Accumulation2MA,true);
double MA_0 = iMAOnArray(Accumulation2MA,0,MA_Period,0,MODE_SMA,0);
double MA_1 = iMAOnArray(Accumulation2MA,0,MA_Period,0,MODE_SMA,1);
double Accumulation2MA_0=iCustom(NULL, 0,"Accumulation2MA_v03",SMA,FMA,0,0);
double Accumulation2MA_1=iCustom(NULL, 0,"Accumulation2MA_v03",SMA,FMA,0,1);
 
Rita:

Nachmittags.

Der Expert Advisor verwendet einen benutzerdefinierten Indikator Accumulation2MA, an den der MA-Indikator im Modus iMAOnArray angehängt ist.

Einfahr-/Ausfahrsignale sind Linienüberquerungen!

Ich verstehe nicht, was das Problem ist. Aber die Hälfte der Einfahrts- und Ausfahrtssignale sind "dreist" unkenntlich gemacht! Ohne Grund!

Das Gleiche gilt beim Schließen:

Fast die Hälfte der Abschlüsse wird auf diese Weise verfehlt. Können Sie mir sagen, was los ist?

Die Bedingungen sind die einfachsten! Die Linien sind eindeutig in Bewegung! Aber es gibt nicht immer offene/geschlossene Stellen! Das Journal ist "stumm".

Zeigte sie mit Pfeilen an.

Möglicherweise kann dies beim Überspringen von Zecken passieren. Das bedeutet, dass während der Ausführung von Start() ein neuer Tick eintrifft (bei dem die Bedingungen erfüllt wären), dieser aber ignoriert wird, während Start() ausgeführt wird.

Beim nächsten Ticken sind die Bedingungen nicht mehr erfüllt - sie sind weg.

Das Kreuzen von Indikatorlinien ist in der Tat ein sehr unangenehmes Signal, ich habe es schon lange nicht mehr benutzt. Es ist besser, einen Indikator von einem anderen zu subtrahieren und einen Nulldurchgang festzustellen. Aber das ist Geschmackssache.

 
Rita:

Nachmittags.

Der Expert Advisor verwendet einen benutzerdefinierten Indikator Accumulation2MA, an den der MA-Indikator im Modus iMAOnArray angehängt ist.

Einfahr-/Ausfahrsignale sind Linienüberquerungen!

Ich verstehe nicht, was das Problem ist. Aber die Hälfte der Ein- und Ausfahrsignale sind "eklatant" unhöflich! Ohne Grund!

Das Gleiche gilt beim Schließen:

Fast die Hälfte der Abschlüsse wird auf diese Weise verfehlt. Können Sie mir sagen, was los ist?

Die Bedingungen sind die einfachsten! Die Linien sind eindeutig in Bewegung! Aber es gibt nicht immer offene/geschlossene Stellen! Das Journal ist "stumm".

Vielleicht ist es einfacher, die zweite Zeile des Indikators zu berechnen. Dann sollten die Probleme verschwinden

 
MetaDriver:

Dies kann wahrscheinlich passieren, wenn Zecken übersprungen werden. D.h. während Start() läuft, trifft ein neuer Tick ein (bei dem die Bedingungen erfüllt wären), aber er wird ignoriert, während Start() läuft.

Beim nächsten Häkchen sind die Bedingungen nicht erfüllt - es ist erledigt.

Das Kreuzen von Indikatorlinien ist in der Tat ein sehr unangenehmes Signal, ich habe es schon lange nicht mehr benutzt. Es ist besser, einen Indikator von einem anderen zu subtrahieren und den Nulldurchgang zu überwachen. Das ist eine Frage des Geschmacks.

Ist die Subtraktion und das Aufspüren des Nulldurchgangs nicht praktisch dasselbe wie im obigen Beispiel?

//если линии пересеклись, то закрываем: 
      if( Accumulation2MA_1<=MA_1  &&    Accumulation2MA_0>MA_0 )   {

Auf den ersten Blick scheint es ein Schlag ins Gesicht zu sein!

Wie kommen Sie darauf, dass der "Nulldurchgang" besser funktionieren wird?

 
VINAR:

Es kann einfacher sein, die zweite Zeile des Indikators zu berechnen. Dann sollten die Probleme verschwinden

Ich verstehe nicht ganz, was Sie mit "die zweite Zeile im Indikator berechnen" meinen? Können Sie das erklären?

============================

Ich teste den Expert Advisor jetzt erneut (er funktioniert übrigens durch das Öffnen von Kursen) und bin erstaunt zu sehen, dass er im Moment perfekt funktioniert! Das Überspringen von Signalen ist fast verschwunden!

Und gestern verpasste es die Hälfte der Signale in der gleichen mt4! Eine Art von Wundern....

 
Rita:

Ist das Subtrahieren und Verfolgen eines Nulldurchgangs nicht praktisch das Gleiche wie

Auf den ersten Blick ist es sowohl frontal als auch frontal!

Wie kommen Sie darauf, dass der "Nulldurchgang" besser funktionieren würde?

Theoretisch, wie auch immer. In der Praxis:

1) Wir können den Unterschied zwischen der vom Indikator empfohlenen Marktposition und der tatsächlichen Position in den Aufträgen leicht überprüfen. D.h. der resultierende Indikator zeigt eine vorgefertigte Kurve, die als "positiv/negativ"=="nach oben/unten" interpretiert werden kann. Das ist sehr praktisch für umgedrehte Systeme.

2) Es besteht die Möglichkeit, das Signal auf bequeme Weise zu verfeinern (Multiplikation mit Koeffizienten, Überschneidungen mit anderen Kriteriumslinien, usw.).

Wie ich schon sagte, ist es eine Frage des Geschmacks. :)

Grund der Beschwerde: