Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1300

 
ANDREY:

Es ist möglich, die Spanne zu schließen, d.h. einen gewissen Wert zum Geldkurs hinzuzufügen. Aber wie lässt sich die Größe dieser Spanne festlegen? In echten Ticks ist der Spread variabel, d.h. der Wert des Spreads ist unbekannt. Und deshalb kann sie nicht auf echte Zecken geschlossen werden ..... meiner professionellen Meinung nach, sondern rein logisch. Es ist wahrscheinlich nur möglich, das zu nähen, was EXAKT Ewigkeiten bekannt ist.

Überrascht Sie Metatrader? Ich bin nicht... nicht mehr... Bitte....

<DATUM> <UHRZEIT> <OFFEN> <HOCH> <NIEDRIG><SCHLIESSEN> <TICKVOL> <VOL> <SPREAD>
1999.01.28 00:03:00 1.14450 1.14450 1.14450 1.14450 1.14450 1 0 50
1999.01.28 00:13:00 1.14440 1.14440 1.14420 1.14420 3 0 50

 
Александр:

Überrascht Sie Metatrader? Ich bin nicht... nicht mehr... Bitte....

<DATUM> <UHRZEIT> <OFFEN> <HOCH> <NIEDRIG><SCHLIESSEN> <TICKVOL> <VOL> <SPREAD>
1999.01.28 00:03:00 1.14450 1.14450 1.14450 1.14450 1.14450 1 0 50
1999.01.28 00:13:00 1.14440 1.14440 1.14420 1.14420 3 0 50

Das heißt, die Spanne ist entweder O , oder der Wert der Spanne wird einfach nicht angezeigt. Und diese Daten von MT4 oder von MT5. Und aus welchem Menüpunkt stammen diese Daten?

Wenn es einen Spread-Wert gibt, dieser aber aus irgendeinem Grund nicht angezeigt wird, dann ist diese MT-Störung meiner MT5-Störung sehr ähnlich. Alpari sagt, dass die Tiefe der Historie keine Auswirkung auf die Qualität der Tick-Quotierungen hat und denkt, dass mein Problem im Terminal selbst versteckt ist und rät, die Entwickler zu kontaktieren. Also, wie in Ihrem Beispiel, habe ich den gleichen Wert der Qualität Geschichte für 2010, aber aus irgendeinem Grund ist es nicht in MT5 angezeigt. Wenn es überhaupt keine Ticks gibt oder ihre Anzahl zu gering ist (z. B. 1000), wird die Qualität des Verlaufs nicht angezeigt.
 

Hallo.
Bitte schenken Sie einem Neuling Aufmerksamkeit.
Keine Fehler oder Warnungen beim Kompilieren, aber EA öffnet keine Aufträge im Testprogramm... Und es gibt keine Fehler im Protokoll...

Was könnte der Grund dafür sein? Ich habe schon verschiedene Dinge ausprobiert...

extern double Lot=0.1;            
extern int Slippage = 30;
extern int TakeProfit = 30;
extern int StopLoss   = 30;
extern int MA_Smoth_S = 60;
extern int MA_Smoth_B = 12;
extern int MA_Simpl_S = 3;
extern int MA_Simpl_B = 1;

int start()
         {
          int MA_Simpl_S_Op,      
              MA_Simpl_B_Op;      
                 
          MA_Smoth_S = iMA(NULL,0,MA_Smoth_S,0,MODE_SMMA,PRICE_CLOSE,1);
          MA_Smoth_B = iMA(NULL,0,MA_Smoth_B,0,MODE_SMMA,PRICE_CLOSE,1);
          MA_Simpl_S = iMA(NULL,0,MA_Simpl_S,0,MODE_SMA,PRICE_CLOSE,1);
          MA_Simpl_B = iMA(NULL,0,MA_Simpl_B,0,MODE_SMA,PRICE_CLOSE,1);
          MA_Simpl_S_Op = iMA(NULL,0,MA_Simpl_S,0,MODE_SMA,PRICE_CLOSE,2);
          MA_Simpl_B_Op = iMA(NULL,0,MA_Simpl_B,0,MODE_SMA,PRICE_CLOSE,2);
          
          //Условие для Buy______________________
          while(MA_Smoth_B > MA_Smoth_S)
               {
                if(MA_Simpl_B_Op < MA_Simpl_S_Op && MA_Simpl_B > MA_Simpl_S)
                  {
                   bool check = OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask, Digits),Slippage,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Buy",0,0,clrGreen);
                   return(0);
                  }
               }
               
          //Условия для Sell_____________________
          while(MA_Smoth_S > MA_Smoth_B)
               {
                if(MA_Simpl_B_Op > MA_Simpl_S_Op && MA_Simpl_B < MA_Simpl_S)
                  {
                   check = OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid, Digits),Slippage,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Sell",0,0,clrRed);
                   return(0);
                  }   
               }     
          return(0);
         }
 
IndependentMK:

Hallo.
Bitte schenken Sie einem Neuling Aufmerksamkeit.
Keine Fehler oder Warnungen beim Kompilieren, aber EA öffnet keine Aufträge im Tester... Und es gibt keine Fehler im Protokoll...

Was könnte der Grund dafür sein? Ich habe bereits verschiedene Dinge ausprobiert...

int X = 5;
if(X > 10 && X < 3)  int ticket = OrderSend(Symbol(), OP_SELL, Доп_Лот, NormalizeDouble(Bid, Digits), 3,  NormalizeDouble(Ask + StopLoss_S * Point, Digits),  NormalizeDouble(Bid - TakeProfit_S * Point, Digits), "", MAGIC_S, 0, CLR_NONE);
 

Was meinen Sie dazu? Wird der Prüfer die Stelle öffnen? Nein, denn X liegt nicht im Testbereich. Das ist der Grund. Sie fügen die Prints in den Code ein und analysieren das Protokoll des Testers.

int start()
  {
   int MA_Simpl_S_Op,
       MA_Simpl_B_Op;
   MA_Smoth_S = iMA(NULL, 0, MA_Smoth_S, 0, MODE_SMMA, PRICE_CLOSE, 1);
   MA_Smoth_B = iMA(NULL, 0, MA_Smoth_B, 0, MODE_SMMA, PRICE_CLOSE, 1);
   MA_Simpl_S = iMA(NULL, 0, MA_Simpl_S, 0, MODE_SMA, PRICE_CLOSE, 1);
   MA_Simpl_B = iMA(NULL, 0, MA_Simpl_B, 0, MODE_SMA, PRICE_CLOSE, 1);
   MA_Simpl_S_Op = iMA(NULL, 0, MA_Simpl_S, 0, MODE_SMA, PRICE_CLOSE, 2);
   MA_Simpl_B_Op = iMA(NULL, 0, MA_Simpl_B, 0, MODE_SMA, PRICE_CLOSE, 2);
//Условие для Buy______________________
   Print(" MA_Smoth_B = ", MA_Smoth_B, " MA_Smoth_B = ", MA_Smoth_B);
   while(MA_Smoth_B > MA_Smoth_S)
     {
      Print(" MA_Simpl_B_Op = ", MA_Simpl_B_Op, " MA_Simpl_S_Op = ", MA_Simpl_S_Op);
      if(MA_Simpl_B_Op < MA_Simpl_S_Op)
        {
         Print(" MA_Simpl_B = ", MA_Simpl_B, " MA_Simpl_S = ", MA_Simpl_S);
         if(MA_Simpl_B > MA_Simpl_S)
           {
            bool check = OrderSend(Symbol(), OP_BUY, Lot, NormalizeDouble(Ask, Digits), Slippage, Bid - StopLoss * Point, Ask + TakeProfit * Point, "Buy", 0, 0, clrGreen);
            return(0);
           }
        }
     }
//Условия для Sell_____________________
   while(MA_Smoth_S > MA_Smoth_B)
     {
      if(MA_Simpl_B_Op > MA_Simpl_S_Op && MA_Simpl_B < MA_Simpl_S)
        {
         bool check = OrderSend(Symbol(), OP_SELL, Lot, NormalizeDouble(Bid, Digits), Slippage, Ask + StopLoss * Point, Bid - TakeProfit * Point, "Sell", 0, 0, clrRed);
         return(0);
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
ANDREY:

Das heißt, die Spanne ist entweder O , oder der Wert der Spanne wird einfach nicht angezeigt. Sind diese Daten von MT4 oder MT5? Und aus welchem Menüpunkt stammen diese Daten?

Wenn der Spread-Wert vorhanden ist, aber aus irgendeinem Grund nicht angezeigt wird, dann ist dieser MT-Fehler meinem MT5-Fehler sehr ähnlich. Alpari sagt, dass die Tiefe der Historie keinen Einfluss auf die Qualität der Tick-Quotierungen hat und glaubt, dass mein Problem im Terminal selbst verborgen ist, und rät, die Entwickler zu kontaktieren. Also, wie in Ihrem Beispiel, habe ich den gleichen Wert der Geschichte Qualität für 2010, aber aus irgendeinem Grund ist es nicht in MT5 angezeigt. Wenn überhaupt keine Ticks vorhanden sind oder ihre Anzahl zu gering ist (z. B. 1000), wird die Qualität des Verlaufs nicht angezeigt.

Hier ist MT4 Zitat

2007.02.12, 00:00, 0.9051, 0.9087, 0.9047, 0.907, 3739

Hier ist MT5
1999.01.28 00:03:00 1.14450 1.14450 1.14450 1.14450 1 0 50
1999.01.28 00:13:00 1.14440 1.14440 1.14420 1.14420 3 0 50

Spüren Sie den Unterschied... Ich arbeite schon lange nicht mehr mit Zecken. Und so wie es aussieht, habe ich nicht genug Energie, um gegen die verschiedenen "Handys/Funnies" zu kämpfen.

Setzen Sie denselben Expert Advisor bei einem anderen Maklerunternehmen ein. Das ist ein Problem mit Zecken. Auch beim Öffnen, sogar beim gleichzeitigen Öffnen und Schließen. Der Unterschied ist BEIDES. Vielleicht hat jemand dieses Problem gelöst (Zecken usw.), und ich weiß nicht, wie ich damit umgehen soll. Und im MT5 gibt es auch einen Spread...

 
Александр:

Hier sind die MT4-Kurse

2007.02.12, 00:00, 0.9051, 0.9087, 0.9047, 0.907, 3739

Hier ist MT5
1999.01.28 00:03:00 1.14450 1.14450 1.14450 1.14450 1 0 50
1999.01.28 00:13:00 1.14440 1.14440 1.14420 1.14420 3 0 50

Spüren Sie den Unterschied... Ich arbeite schon lange nicht mehr mit Zecken. Und so wie es aussieht, habe ich nicht genug Energie, um gegen die verschiedenen "Handys/Funnies" zu kämpfen.

Setzen Sie denselben Expert Advisor bei einem anderen Maklerunternehmen ein. Das ist ein Problem mit Zecken. Auch beim Öffnen, sogar beim gleichzeitigen Öffnen und Schließen. Der Unterschied ist BEIDES. Vielleicht hat jemand dieses Problem gelöst (Zecken usw.), und ich weiß nicht, wie ich damit umgehen soll. Und im MT5 gibt es auch einen Spread...

Natürlich bist du in all diesen Fragen fortgeschrittener als ich ...... , deshalb verstehe ich deinen Gedankengang an manchen Stellen nicht...
Als ich versuchte, Mt4 zum Beispiel meine Codes zeigten sehr gute Ergebnisse mit Tiki-Codes ... Dann erfuhr ich, dass mein sehr gutes Ergebnis ist nicht ganz genau, weil MT4 nicht berücksichtigen die reale Spread und dass die reale MT4 Spread in Alpari kann nicht berücksichtigt werden, weil es schwimmt (vor allem in der Nacht). Und mein Expert Advisor zeigte die besten Ergebnisse nur von 22 bis 1.

In diesem Forum wurde mir gesagt, dass beim Testen der reale Spread (der genau schwebend ist) nur auf MT5 berücksichtigt wird. Dies veranlasste mich dazu, MT5 zu studieren und meinen Code darauf auf dem Modell laufen zu lassen - jeder Tick basiert auf ECHTEN Ticks. Danach war ich ernüchtert, denn mein Code zeigte nicht so gute Ergebnisse wie auf MT4. Andererseits wurden einige positive Punkte des Codes, die auf MT4 zu finden waren, auch auf MT5 bestätigt. Und ich war froh, dass ich meinen Code verbessern konnte, da ich sicher war, dass die Testergebnisse dem realen Handel nahe kamen.

Aus diesem Grund kann ich (vielleicht aufgrund mangelnder Kenntnisse und Erfahrungen) Ihre ablehnende Haltung gegenüber Tests zur Zeckengeschichte nicht ganz nachvollziehen. Denn wenn Sie Transaktionen nicht nach Сlose (wie Sie), sondern zu einem beliebigen Preis eröffnen, der in der Anfrage zur Auftragseröffnung angegeben ist (wie ich), was ist dann der Nachteil der Prüfung auf Ticks?
Der mögliche Nachteil ist, wie es mir scheint, nur ein unvollständiger Satz von Ticks und deren Auslassung in den geladenen Kursen. Aber die Anzahl der Ticks ist, verglichen mit der Anzahl der einminütigen Kerzen, enorm. Und ich habe noch nicht untersucht, ob fehlende Ticks (wie Candlesticks) überhaupt erkannt und der Tick-Datei hinzugefügt werden können. Deshalb muss ich bisher dem Versprechen von Alpari vertrauen, dass sie eine VOLLSTÄNDIGE Tick-Historie seit 2001 haben.
Und ich verstehe immer noch nicht den Unterschied, den ich fühlen sollte, wenn ich mir die Kerzenständer ansehe, die Sie mitgebracht haben, um eine Idee von Ihnen zu demonstrieren
.

Ich möchte meinen EA nicht mit einem anderen Broker testen, denn wenn ich mich jemals traue, live zu handeln, wird es mit Alpari sein. Außerdem haben Sie selbst gesagt, dass dieser Broker die vollständigsten und zuverlässigsten Tickdaten hat.

Ich bin sicher, Sie haben einige wertvolle Informationen für mich, die ich leider nicht aus Ihren Worten entnehmen kann.

Тестирование торговых стратегий на реальных тиках
Тестирование торговых стратегий на реальных тиках
  • www.mql5.com
В данной статье мы покажем результаты тестирования простой торговой стратегии в 3-х режимах: " OHLC на M1 " с использованием только цен Open,High, Low и Close минутных баров; затем детальное моделирование в режиме " Все тики ", и самое достоверное тестирование в режиме " Каждый тик на основе реальных тиков " с использованием записанных тиков из...
 
ANDREY:


Ihre ablehnende Haltung gegenüber Tests zur Zeckengeschichte. Denn wenn Sie Geschäfte nicht nach Сlose (wie Sie es getan haben), sondern nach einem beliebigen Preis eröffnen, der in der Aufforderung zur Auftragseröffnung angegeben ist (wie ich es getan habe), was ist dann der Nachteil der Prüfung auf Ticks?

Und ich verstehe immer noch nicht, worin der Unterschied besteht, den ich fühlen sollte, wenn ich die Parameter der Kerzenleuchter betrachte, die Sie zur Demonstration Ihrer Idee mitgebracht haben.

Ich möchte meinen EA nicht mit einem anderen Broker testen, denn wenn ich es jemals wagen sollte, mit einem echten Konto zu handeln, werde ich es nur mit Alpari tun. Außerdem haben Sie selbst gesagt, dass dieser Broker die vollständigsten und zuverlässigsten Tickdaten hat.

Ich bin sicher, dass Sie einige wertvolle Informationen für mich haben, die ich bisher leider nicht aus Ihren Worten entnehmen konnte.

1. Negative Einstellung... Nein, das ist nicht negativ. Es ist nur so, dass man versucht, wochenlang auf den Abschluss der Tests zu warten, und dann stellt sich heraus, dass die Angebote nicht gut genug sind, was die Ergebnisse stark beeinflusst. Alle Maklerunternehmen filtern die Angebote. Filter verzerren sie. Ich bin den Weg gegangen, einen EA zu schreiben, der die Qualität der Zitate nicht kritisch betrachtet.

2. Der Unterschied in den Kursen zwischen MT4 und MT5 ist, dass ich damit begonnen habe, dass MT5 einen Spread für JEDEN Kurs hat. Warum ist das so? Ich weiß es nicht. Offline ist diese Spanne voll ausgeschöpft. Offline ist herumlaufen. D.h. wir sollten ein System schaffen, das nicht kritisch ist. Siehe Punkt 1 G).

Mehr gibt es nicht zu sagen. Kein Subtext.

 
Александр:

1. Eine negative Einstellung... Nein, das ist nicht negativ. Es ist nur so, dass man Druck macht, wochenlang wartet, bis die Tests abgeschlossen sind, und dann stellt sich heraus, dass die Angebote nicht gut genug sind, und das hat einen RIESIGEN Einfluss auf die Ergebnisse. Alle DCs filtern die Angebote. Filter verzerren sie. Ich bin den Weg gegangen, einen EA zu schreiben, der die Qualität der Zitate nicht kritisch betrachtet.

2. Der Unterschied in den Kursen zwischen MT4 und MT5 besteht darin, dass ich damit begonnen habe, dass MT5 einen Spread für JEDEN KURS hat. Warum ist das so? Ich weiß es nicht. Offline ist diese Spanne voll ausgeschöpft. Offline ist herumlaufen. D.h. wir sollten ein System schaffen, das nicht kritisch ist. Siehe Punkt 1 G).

Mehr gibt es nicht zu sagen. Kein Subtext.

"....... und dann stellt sich heraus, dass die Angebote nicht gut genug sind, was sich stark auf die Ergebnisse auswirkt. Filter verzerren sie. ...."


Angenommen, es gibt einen Tick echte Kurse aus dem Jahr 2008 für ein Paar, das automatisch vom Alpari-Server auf MT5 heruntergeladen wird, um es zu testen. Wie können Sie herausfinden, ob diese Angebote nicht gut genug sind? Nach welchen Kriterien beurteilen Sie im Allgemeinen die Qualität von Angeboten? Welches sind die Parameter, die die optimale Qualität der Zeckenquoten ausmachen sollten?
Wie Alpari sagt, werden Tick-Quotes nicht modelliert oder generiert, sondern sie sind aus der aufgezeichneten Geschichte entnommen. So wie ich es verstehe .... brachte ein weiteres Häkchen ein beliebiges Zitat - Alpari Häkchen mit diesem Zitat aufgenommen und gespeichert. Und so weiter mit jedem Ticken. Als Ergebnis haben sie eine riesige Datenbank von Ticks mit Preisen, die sie zum Testen auf MT5 herunterladen. Und nur, wenn ein notwendiges Zitat oder seine Sequenz aus irgendeinem Grund fehlt, nur dann Alpari, statt fehlen echte Ticks mit Preisen, sind diese Ticks nach einem Algorithmus nahe an das Aussehen der realen Ticks simuliert.

Deshalb verstehe ich auch nicht ganz, was an der Qualität der Zitate auszusetzen ist. Als Alternative kann ich mir vorstellen, dass ein Tick gekommen ist und den Preis z.B. auf 1,00061 gebracht hat. Alpari hat diesem Tick jedoch einen anderen Preis zugewiesen, zum Beispiel 1,00077. Oder sie können dieser Zecke einen anderen Aufstrich verpassen als den, der in Wirklichkeit war. Aber wenn es wirklich so ist, kann eine unbefugte Person diese Änderung nicht erkennen, insbesondere bei einem tiefen Verlauf. So ist es natürlich möglich zu behaupten, dass Alpari dieses Häkchen mit dem Zitat herausgefiltert hat. Aber es scheint mir praktisch unmöglich, dies zu beweisen. Denn niemand außer dem jeweiligen Alpari-Spezialisten weiß, was der Primärpreis oder der Spread des gefilterten Ticks war. Die einzige mögliche Variante ist, dass dieser Spezialist dieses Geheimnis jemandem verrät und es vielleicht sogar schriftlich bestätigt. Aber, wie mir scheint, würden diese Informationen mit Belegen sofort in diesem Forum erscheinen.


"... Alle DCs sind FILTERING-Angebote. Filter verzerren sie....."


Darüber habe ich schon oft gelesen. Bei dieser Filterung ging es jedoch um echten Handel. Und eine solche Filterung scheint mir für Maklerunternehmen sinnvoll zu sein. Mit seiner Hilfe können sie große Verluste vermeiden, wenn eine große Anzahl von Positionen mit sehr großem Volumen zum Take Profit schließen kann, wenn die Brokerfirma nicht in den Markt eingestiegen ist. Und was nützt die Filtration, wenn ein Maklerunternehmen Angebote für Tests macht?

Основы тестирования в MetaTrader 5
Основы тестирования в MetaTrader 5
  • www.mql5.com
Идея автоматической торговли привлекательна тем, что торговый робот может без устали работать 24 часа в сутки и семь дней в неделю. Робот не знает усталости, сомнений и страха,  ему не ведомы психологические проблемы. Достаточно четко формализовать торговые правила и реализовать их в виде алгоритмов, и робот готов неустанно трудиться. Но прежде...
 

Können Sie mir sagen, wie ich ein Verhältnis von x2 erhalte, wenn ich eine Position mit Verlust schließe?

Jetzt bekomme ich 1,4,9,16 - und ich brauche 2,4,8,16.

Was ist am Code zu ändern?

 int cn=0,c=0;
  datetime dt=0;
   for(int i=OrdersHistoryTotal()-1; i>=0; i--){
    if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderType()<=1) {
     if((OrderSymbol()==mSymbol)&&(OrderMagicNumber()==Magic)) {
       double Profit=OrderProfit()+OrderCommission()+OrderSwap();
        if(Profit<0) {  
        c++;   
        cn=(int)MathPow(c,2); // что здесь исправить?
        } else break;     
 }}}
   Comment(cn);
 
Denis Pershin:

Können Sie mir sagen, wie ich ein Verhältnis von x2 erhalte, wenn ich eine Position mit Verlust schließe?

Jetzt bekomme ich 1,4,9,16 - und ich brauche 2,4,8,16.

Was ist am Code zu ändern?

Alles muss repariert werden.

Ihr Code sucht nach dem ersten Auftrag aus der Auftragshistorie mit dem angegebenen Symbol und der magischen Zahl

Dann wird die Anzahl der unrentablen Aufträge berechnet und mit 2 multipliziert.

Suchen Sie im Forum nach"Nützliche Funktionen von CMM" und machen Sie etwas wie folgt

- das Ticket der letzten Bestellung für unser Symbol und unsere Magie finden

- OrderProfit() und OrderLots() aus dem gefundenen Ticket ermitteln und gegebenenfalls mit dem Martingale-Koeffizienten multiplizieren

ZS: es könnte eine fertige Lösung geben

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
Grund der Beschwerde: