Experimente mit MetaTrader 5 bei Discovery - Seite 16

 
Noch eine Frage: Welche Bauart ist es? 803?
 

803 bauen. Das Konto ist real 10267.

Da es so viele Fragen gibt, bin ich wohl der Einzige mit 'mnj?

Erst vor 3-4 Wochen war der Tester etwas korrekter, was die Streuung angeht, aber was das Verhalten angeht...

Das Problem bestand darin, dass sich praktisch jede Kerze innerhalb von 20 Ticks bildete und dann 50-100 Ticks oder 10 Punkte nach oben/unten am Extremum oder nahe dem Schlusskurs lag. Und dieser Schlag wurde von einem Tester, der den Scalper optimiert hat, leicht gefunden.

Generell ist der Tester nicht für Scalper/Pipsewing-Strategien geeignet.

Ich verstehe die Langsamkeit des Tick-Testers. Aber für den Austausch, meiner Meinung nach, können Sie nicht ohne sie tun.

 
dimeon:
Wie kann ich das tun?

Öffnen Sie das Diagramm. Öffnen Sie das Fenster Daten. Blättern Sie im Diagramm bis zum gewünschten Zeitpunkt. Bewegen Sie die Maus auf dem Diagramm und sehen Sie die Streuwerte im Datenfenster.

Ich habe es mir bereits angesehen. Bei einer großen Anzahl von Balken - Nullspanne. Das heißt, die Daten sind unvollständig. Bei einem Streuwert von Null wird der letzte Wert, der nicht Null ist, verwendet.

Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - Документация по MQL5
 
Nun, beim Tester ist die Situation anders. Der Visualisierer zeigt, dass der Spread in der ersten Tageshälfte aus dem Rahmen fällt, am Nachmittag liegt er im Durchschnitt bei 20-50 Pips und am Abend ist er wieder aus dem Rahmen.
 

Lassen Sie mich anhand von Bildern erklären, was im Prüfgerät passiert.

Der Prüfer lädt vor Beginn der Prüfung die historischen Daten mindestens des Vorjahres herunter und analysiert die Streuung. Wenn der Test mit dem 01.01.2013 beginnt, dann wurde der letzte Nicht-Null-Spread im Jahr 2012 am 10.12.2012 um 10:09 Uhr aufgezeichnet und betrug 2990 Pips.


Der nächste Nicht-Null-Spread wird 2013.03.15 um 18:49 in Höhe von 1190 aufgezeichnet


Zwischen diesen Zeiten beträgt die Spanne 0. Das heißt, vom ersten Januar 2013 bis zum Abend des 15. März war die letzte bekannte Spanne 2990 (was ich als "den letzten Wert ungleich Null" bezeichnet habe). Bis aus dem letzten Wert ungleich Null 1190 wurde.

Danach haben wir wieder Null-Spread-Werte, deshalb haben wir 1190 verwendet. Dies wurde bis 2013.03.18 18:46 aufgezeichnet.


nach weiteren 3 Minuten.


Dann gab es viel weniger Nullen als zu Beginn des Jahres. Dennoch blieb die Reihe der Nullen bestehen.

Dies erklärt die Reihe von identischen Streuungen

Die Situation ist unangenehm, wir werden sie lösen. Die Spreizung im Prüfgerät ist ausreichend.

 

Die Spreads werden aussortiert, wir stellen sie korrekt ein, auch wenn der Broker keine detaillierten Spreads in seine Historie importiert hat.

Dies ermöglicht normale Tests.

 
stringo:

Lassen Sie mich anhand von Bildern erklären, was im Prüfgerät passiert.

Der Prüfer lädt vor Beginn der Prüfung die historischen Daten mindestens des letzten Jahres und analysiert die Streuung. Wenn der Test am 01.01.2013 beginnt, dann wurde die letzte Spanne, die nicht Null war, am 10.12.2012 um 10:09 Uhr aufgezeichnet, und zwar mit 2990 Punkten.


Der nächste Nicht-Null-Spread wird 2013.03.15 um 18:49 in Höhe von 1190 aufgezeichnet


Zwischen diesen Zeiten beträgt die Spanne 0. Das heißt, vom ersten Januar 2013 bis zum Abend des 15. März war die letzte bekannte Spanne 2990 (was ich als "den letzten Wert ungleich Null" bezeichnet habe). Bis aus dem letzten Wert ungleich Null 1190 wurde.

Danach haben wir wieder eine Nullspanne, deshalb haben wir 1190 verwendet. Dies wurde bis 2013.03.18 18:46 aufgezeichnet.


nach weiteren 3 Minuten.


Dann gab es viel weniger Nullen als zu Beginn des Jahres. Dennoch blieb die Reihe der Nullen bestehen.

Dies erklärt die Reihe von identischen Spreads.

Die Situation ist unangenehm, wir werden sie lösen. Die Spreizung im Prüfgerät ist ausreichend.

Es macht keinen Sinn, die Futures vom Jahresanfang zu testen, weil jeder den März gehandelt hat.

Es wäre sinnvoller, die durchschnittliche Spanne mit einer entsprechenden Rundung zu berechnen.

Bitte reduzieren Sie auch die Lautstärke für den Tester. Die meisten Ticks entstehen, wenn sich der Kurs in Wirklichkeit überhaupt nicht bewegt. Im Tester trifft der Preis viele Male auf das Extremum, was sich in unzureichenden Tests niederschlägt. Und die Zeit der Optimierung wird verkürzt.

 

1. a) Über geklebte Futures... nicht wirklich verstanden, aber meiner Meinung nach der Tester nicht mit ihnen arbeiten (nicht ein einziger Handel, habe ich versucht, Standard-EAs, die im Terminal sind zu testen).

b) In mt5 von bx sind bereits Futures von großen Blue Chips geklebt, hinken Sie nicht hinterher.

c) Es wäre toll, wenn man die Spreads im Tester manuell einstellen könnte, das würde die Optimierung der Strategien erheblich erleichtern.

 

2. a) Über den Feed... es würde nicht schaden, ihn als eine Tabelle von Geschäften wie in Quicksilver zu haben (als ein steckbares und abschaltbares Tool natürlich), und auch die Möglichkeit, Filter in der Tabelle wie in Quicksilver zu setzen (zum Beispiel möchte ich nur große Geschäfte mit einem Volumen von 100 Lots sehen und wie sie passiert sind, nach Bid oder Ask)... ich wiederhole - es würde nicht schaden, aber nicht so notwendig.

b) Aber zu erhalten MqlTick Struktur (SymbolInfoTick(_Symbol,latest_price)) einen weiteren Parameter über, wie Deal eröffnet am Bid oder Ask - ich denke, es ist notwendig, oder als eine separate Anforderung für Marktinformationen, diese Informationen werden von der Börse übergeben und es ist für viele Roboter, einschließlich meiner erforderlich. Zu berechnen, ob eine Transaktion ein Kauf oder ein Verkauf war, ist nicht realistisch... weil es außerbörsliche Transaktionen mit großen Volumina gibt, die den Markt nicht direkt bewegen, und viele andere Nuancen... Die Aufnahme dieses Parameters in die Struktur wird meiner Meinung nach für Entwickler nicht schwierig sein und viele Vorteile bringen.

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура для получения текущих цен
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура для получения текущих цен
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура для получения текущих цен - Документация по MQL5
 

3. Beim Versuch, schwebende Aufträge zu platzieren, meldet ein EA die Fehlermeldung "Invalid order expiry date in request". Ich habe zum Beispiel einen EA erstellt, der nur Pending Orders platziert, aber sonst nichts macht... Im MT5 auf Forex platziert er Pending Orders normal, aber auf FORTS kommt der Fehler. Das Ablaufdatum der Order ist angemessen - ich habe es überprüft, indem ich es auf dem Bildschirm angezeigt habe. Bin ich der Einzige, der ein solches Problem hat? Was ist der Grund dafür? Expert Advisor Code unten


#property copyright "Copyright 2013, MetaQuotes Software Corp."

#property link      "http://www.mql5.com"

#property version   "1.00"

input int tp=150;

input int Deviation=5;

MqlTradeRequest mrequest; 

MqlTradeResult mresult;   

int OnInit()

  {

   return(0);

  }

void OnDeinit(const int reason)

  {

  }


void OnTick()

  {

   Open_Pending_Order(1,SymbolInfoDouble(_Symbol,SYMBOL_BID)+NormalizeDouble(tp*_Point,_Digits), 1, 111);

   Sleep(500);

  return;

  }

//+------------------------------------------------------------------+

void Open_Pending_Order(int type, double prise, double lot, long magic)

  {

   ZeroMemory(mrequest);

   mrequest.action = TRADE_ACTION_PENDING;                               

   mrequest.magic = magic;                                              

   mrequest.symbol = _Symbol;                                            

   mrequest.type_filling = ORDER_FILLING_RETURN;                            

   mrequest.deviation=NormalizeDouble(Deviation*_Point,_Digits);                                                

   mrequest.type_time=ORDER_TIME_SPECIFIED;

   mrequest.expiration=TimeCurrent()+6000;                                    

   mrequest.volume = lot; 

   mrequest.sl = 0;  

   mrequest.tp = 0; 

   mrequest.price = prise;

   Print(" время экспирации ",mrequest.expiration," тип экспирации  ",mrequest.type_time," цена ",mrequest.price);

    if(type==1)

      {                                    

       mrequest.type = ORDER_TYPE_BUY_STOP;                              

       OrderSend(mrequest,mresult);

       // анализируем код возврата торгового сервера

       if(mresult.retcode==10009 || mresult.retcode==10008) Print("Ордер Buy по символу ",_Symbol, " с маджиком ",magic," успешно помещен, тикет ордера #:",mresult.order," !!");  

       else Print("Запрос на установку ордера Buy по символу ",_Symbol, " с маджиком ",magic," не выполнен - ответ сервера:" , mresult.retcode," код ошибки " ,GetLastError());

      }

    if(type==2)

      {                                    

       mrequest.type = ORDER_TYPE_SELL_LIMIT;     

       OrderSend(mrequest,mresult);

       // анализируем код возврата торгового сервера

       if(mresult.retcode==10009 || mresult.retcode==10008) Print("Ордер Sell по символу ",_Symbol, " с маджиком ",magic," успешно помещен, тикет ордера #:",mresult.order,"!!");

       else Print("Запрос на установку ордера Sell  по символу ",_Symbol, " с маджиком ",magic," не выполнен - код ошибки:" , mresult.retcode,"  " ,GetLastError());                         

      }

   return; 

  }

Es heißt (ich habe versucht, die Ablaufzeit zu ändern):

2013.04.24 17:40:05 udalit (SBRF-6.13,M1) Kaufauftragsanfrage von SBRF-6.13 mit magischer Nummer 111 fehlgeschlagen - Serverantwort: 10022 Fehlercode 4756

2013.04.24 17:40:05 udalit (SBRF-6.13,M1) Verfallszeit 2013.04.25 17:00:00 Verfallsart 2 Preis 10016.0