Impulse - Seite 32

 
Artyom Trishkin:
Hier dachte ich: wahrscheinlich Ihr Wunsch, alles zu vereinfachen, zu reduzieren, um MA, und schnell zu machen, und führt zu voreiligen Schlüssen - "es wird nicht funktionieren". Ich habe es Ihnen gesagt: Zählen Sie zuerst den Unterschied zwischen benachbarten Zecken. Wir füllen das Feld mit Preisunterschieden, nicht mit Preisen. Aber wir suchen im Vorbeigehen nach MA. Berichtigung.

Schatz, ich habe das Ding schon lange repariert. Ich weise Sie an, dafür zu sorgen, dass Sie hier keinen wertlosen Indikator erhalten.

Nun zu dem, was Sie am Ende bekommen haben:

- Mittelwertbildung der Geschwindigkeit.

Auch wenn Sie keinen MA in Preis, sondern einen MA in Geschwindigkeit bekommen haben - was macht das für einen Unterschied?

Wenn Sie nicht wissen, was der Mittelwertbildungsfehler ist, dann schauen Sie genau hin:

(5+1)/2=3 //fällt

(1+5)/2=3 //erhöht

OK, denken Sie selbst, Mathematiker...

 
new-rena:

Schatz, ich habe das Ding schon lange repariert. Ich unterrichte Sie, damit Sie hier keinen wertlosen Indikator erhalten.

Nun zu dem, was Sie am Ende bekommen haben:

- Mittelwertbildung der Geschwindigkeit.

Auch wenn Sie keinen MA in Preis, sondern einen MA in Geschwindigkeit bekommen haben - was macht das für einen Unterschied?

Wenn Sie nicht wissen, was der Mittelwertbildungsfehler ist, dann schauen Sie genau hin:

(5+1)/2=3

(1+5)/2=3 //erhöht

Nun, denken Sie selbst, Mathematiker...

Das ist ein ziemlicher Zungenbrecher, Kumpel. Unhöflich zu sein, lässt die Leute nicht gut aussehen.

Jetzt sagen Sie mir, was in Ihren Formeln zu was steht, Herr Mentor ...

ZS. Ich verstehe Ihre Aggression - jemand hat nicht geben Sie ihre Berechnungen, und Sie selbst nicht verstehen, zählen alle in der Welt MAK, Mathematiker ... Aber man muss deswegen nicht auf die Leute losgehen - man steht dumm da.

 
Artyom Trishkin:

Das ist ein bisschen übertrieben, Kumpel. Unhöflich zu sein, lässt die Leute nicht gut aussehen.

Und jetzt sag mir, was in deinen Formeln für was steht, Mentor...

ZS. Ich verstehe Ihre Aggression - jemand hat nicht geben Sie ihre Berechnungen, und Sie nicht verstehen, wenn man bedenkt, alles in der Welt als mashki, Mathematiker ... Du musst die Leute deswegen nicht anschnauzen - du siehst dumm aus.

Die Unhöflichkeit beruhte auf Gegenseitigkeit. Und die Tatsache, dass jemand etwas nicht gegeben hat, hat keinen Einfluss auf die Schöpfung dessen, was hier vor sich geht. Wo ich darum gebeten habe, habe ich bereits alles erklärt, und diese Person wirbt in allen Foren, nicht nur hier. Die Leute schreiben, dass er die Nase voll davon hat.

Nun zur Sache.

Ich habe den Link gestern angegeben, und er ist fast der wichtigste Teil des Indikators, sozusagen sein Höhepunkt.

Das heißt, die Anzahl der Ticks und die Richtung der Kursbewegung werden für dasselbe Zeitintervall bestimmt und auf ihrer Grundlage wird ein Handelssignal ermittelt. Was ist hier nicht klar?

Die Hauptsache ist, dass man keinen Durchschnitt hat.

Anhand der Anzahl der Ticks beurteilen wir also die Volatilität, und anhand der Summe des Deltas für dasselbe Zeitintervall (wie Sie oben richtig geschrieben haben, ist das Delta die Differenz der Preise zwischen aufeinander folgenden Ticks) beurteilen wir die Richtung der Preisbewegung, d. h. den Trend. Und das Delta kann entweder negativ oder positiv sein. Wir rechnen zusammen, was wir haben.

In der Tat, um diesen Indikator zu berechnen und zu arbeiten, brauchen wir nur N Anzahl der letzten Ticks. Das Eintragen von Häkchen in den Verlauf ist nicht wirklich notwendig, außer zu Testzwecken.

Die bestehenden Analoga dieses Indikators sind als Tachometer konzipiert.

 
new-rena:

Was die Unhöflichkeit betrifft, so beruhte sie auf Gegenseitigkeit. Und die Tatsache, dass jemand etwas nicht gegeben hat, hat keine Auswirkung auf die Entstehung dessen, was hier vor sich geht. Wo ich danach gefragt habe, habe ich bereits alles erklärt, und dieser Mann wirbt in allen Foren, nicht nur hier. Die Leute schreiben, dass er davon die Nase voll hat.

Nun zur Sache.

Ich habe den Link gestern hier gepostet, also ist dies praktisch der Hauptteil des Indikators, sozusagen sein Höhepunkt.

Das heißt, die Anzahl der Ticks und die Richtung der Kursbewegung werden für dasselbe Zeitintervall bestimmt und auf ihrer Grundlage wird ein Handelssignal ermittelt. Was ist hier nicht klar?

Die Hauptsache ist, dass man keinen Durchschnitt hat.

Anhand der Anzahl der Ticks beurteilen wir also die Volatilität, und anhand der Summe des Deltas für dasselbe Zeitintervall (wie Sie oben richtig geschrieben haben, ist das Delta die Differenz der Preise zwischen aufeinander folgenden Ticks) beurteilen wir die Richtung der Preisbewegung, d. h. den Trend. Und das Delta kann entweder negativ oder positiv sein. Wir rechnen zusammen, was wir haben.

In der Tat, um diesen Indikator zu berechnen und zu arbeiten, brauchen wir nur N Anzahl der letzten Ticks. Das Eintragen von Häkchen in den Verlauf ist nicht wirklich notwendig, vielleicht nur für einen Test.

Es gibt bereits Analogien zu einem solchen Indikator in Form eines Tachometers.

Ist das dieser Link? https://www.mql5.com/ru/forum/61389/page30#comment_1776762

ZS: Was die gegenseitige Unhöflichkeit angeht, so sind Sie das nicht. Ich war zuerst nicht unhöflich zu Ihnen.

Импульс
Импульс
  • www.mql5.com
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий. - Страница 30 - Категория: автоматические торговые системы
 
Artyom Trishkin:

Ist das der Link? https://www.mql5.com/ru/forum/61389/page30#comment_1776762

ZS: Sie haben Unrecht, was die gegenseitige Unhöflichkeit angeht. Ich war zuerst nicht unhöflich zu Ihnen.

Ja, aber das ist ein 4er-Pack. Soweit ich weiß, werden wir in der 5.
 
Karputov Vladimir:

Die Grundlage für die Erfassung von Zecken ist vorhanden.


Format des Dateinamens:

Die Datei enthält vier Spalten:


Es bleibt die Frage, wie oft neue Dateien angelegt werden sollten. Ich denke, Sie sollten jede Stunde jede Datei starten. Es wird einfacher sein, sie zu analysieren.

High, Low hinzufügen (oder sofort die Preisänderungen zählen) - wenn ein Tick fehlt (aus technischen Gründen), ändern sie sich... d.h. eine Situation ist möglich, wenn innerhalb von M1 Bid nach unten und High nach oben gegangen ist

Ich glaube, es passiert bei Impulsen und wenn das Terminal/der Computer mit etwas anderem beschäftigt ist :-)

 
Karputov Vladimir:

Es gab eine Aufzeichnung von 600 Zecken. Dieser Rekord (jeweils 100) wurde auf sechs Karten verteilt. Die Charts zeigen die Preis- und Tick-Änderungsrate (EMA10). Alles in allem gibt es einen Grund, die Zahlen zu studieren:







du schaust ein bisschen, d.h. überhaupt nicht...auf den Graphen hast du eine Art von Differenzierungsfehlerfunktion. Das heißt, Sie lesen zunächst die Geschwindigkeit als Ableitung (dx/dt), dann integrieren Sie sie (mit einer anderen Methode) und vergleichen sie mit dem Original.

Hinweis: Jede MA ist de facto eine integrale Funktion

Hinweis2: Um zu sehen, ob Sie sich in die richtige Richtung bewegen, nehmen Sie einen einfachen SMA und bewegen Sie ihn eine halbe Periode zurück. Wenn Sie etwas Nützliches in der Historie sehen, bedeutet das, dass Geschwindigkeit und Schwung aus einem bestimmten Grund gezählt werden und Sie tiefer graben können.

 
new-rena:
Ja, aber er ist in 4er-Schrift geschrieben. Soweit ich weiß, werden wir in der 5.

Es macht keinen Unterschied, welche Plattform Sie verwenden. Ich habe Roman dort gefragt und ihm privat Codes geschrieben, aber ich habe nie verstanden, warum er die Array-Größe in init() auf zwei Millionen setzt, sie dann in start() auf Null setzt, dann versucht, sie mit Index -1 (!!!) zu füllen, und erst danach die Variable SIZE um 1 erhöht, die das Array indizieren sollte. Vergleichen Sie, das habe ich vorgeschlagen:

//+------------------------------------------------------------------+
//|                                                   FillArrays.mq4 |
//|              Copyright 2015, Artem A. Trishkin, Skype artmedia70 |
//|                       https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Artem A. Trishkin, Skype artmedia70"
#property link      "https://login.mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//|   Input variables                                                |
//+------------------------------------------------------------------+
input int NumberOfStorableTicks=20;       // Количество сохраняемых тиков
int numberOfStorableTicks; // Количество сохраняемых тиков
input int PeriodOfMA=5;                   // Период сглаживания
int periodOfMA; // Период сглаживания
input ENUM_MA_METHOD MaMethod=MODE_SMA;   // Метод усреднения МА

//+------------------------------------------------------------------+
//|   Global variables                                               |
//+------------------------------------------------------------------+
string symbol;    // Symbol()
int digits;       // Digits
//+------------------------------------------------------------------+
//|   Arrays                                                         |
//+------------------------------------------------------------------+
double      Mass_ticks[];
double      Mass_smoothed_values[];
//+------------------------------------------------------------------+
//|   Structures                                                     |
//+------------------------------------------------------------------+
   MqlTick struct_tick;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   symbol=Symbol();
   digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
   //---
   numberOfStorableTicks=(NumberOfStorableTicks<1)?1:NumberOfStorableTicks;
   periodOfMA=(PeriodOfMA<1)?1:PeriodOfMA;
   //---
   ArrayResize(Mass_ticks,numberOfStorableTicks);
   ArrayInitialize(Mass_ticks,0.0);
   ArrayResize(Mass_smoothed_values,numberOfStorableTicks);
   ArrayInitialize(Mass_smoothed_values,0.0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   Comment("");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(SymbolInfoTick(symbol,struct_tick)) {
      double tick_bid=struct_tick.bid;
      FillArrays(numberOfStorableTicks,tick_bid,Mass_ticks);
      }
   string txt="";
   for(int i=numberOfStorableTicks-1; i>=0; i--) {
      string itxt=IntegerToString(i);
      txt+="\nmass["+itxt+"]: "+DoubleToString(Mass_ticks[i],digits);
      }
   Comment(txt);
  }
//+------------------------------------------------------------------+
void FillArrays(int array_size, double price, double &mass_price[]) {
   //--- сместим данные в массиве влево
   for(int i=array_size-1; i>0; i--) {
      mass_price[i]=mass_price[i-1];
      }
   //--- запишем новый тик в массив
   mass_price[0]=price;
}
//+------------------------------------------------------------------+
void SmoothingDataArray(int array_size, int ma_period, int ma_shift, ENUM_MA_METHOD ma_method, double &mass_price[], double &mass_smoothing[]) {
   for(int i=array_size-1; i>=0; i--) {
      mass_smoothing[i]=iMAOnArray(mass_price,array_size,ma_period,ma_shift,ma_method,i);
      }
   }
//+------------------------------------------------------------------+

Allerdings weigert sich iMAOnArray(), diese zu glätten. Egal wie verdreht es ist, es geht vorwärts und rückwärts. Aber das ist für den hier beabsichtigten Zweck nicht notwendig. Ich denke...

Ja, ich vergaß. Das hat Roman auch vorgeschlagen:

//---------------------
extern int MaxDrawTicks=100;
extern int Num_Aver_of_Ticks=5;  
double     xBuffer_Time []; // Массив значений   динамический
                            // В котором индекс - номер тика, значение - это бид 
int SIZE=0;                 // Вспомогательная переменная для массива                                  
int tickCounter, tickCounter_Current; 
//+------------------------------------------------------------------+
int init()
  {   
//--- устанавливаем размер динамического массива
   if(ArrayResize(xBuffer_Time,2000000)<0) {Alert(" Ошибка в изменении размера массива времени поступления тиков "); return(false);}
//--- установим индексацию для буфера как в таймсерии для динамического массива
  // ArraySetAsSeries(xBuffer_Time,true);    
//---   Возвращает количество элементов указанного массива. 
   int S=ArraySize(xBuffer_Time);
   if (S>=0) Alert("Размер массива: ",S);
   else Print("Ошибка. Массив не создан ",S);        
   ArrayInitialize(xBuffer_Time, 0);
   return(0);
  }  
//+------------------------------------------------------------------+
int start()
  {  
   //ArrayResize(ValueArr,size);
   //ValueArr[size-1] = GetValue();
   //size++; 
 //----------------------------------------  
   ArrayResize(xBuffer_Time,SIZE);
   xBuffer_Time[SIZE-1] = Bid; //NormalizeDouble((iTime (_Symbol,1,0)-_start), 2); 
  
   if ( SIZE >= 0 && ArraySize(xBuffer_Time) < 2147483647)
      {
      Alert (" Значение xBuffer_Time[SIZE-1] = ", DoubleToStr(xBuffer_Time[SIZE-1],Digits) );
      Alert (" Значение SIZE = ", DoubleToStr(SIZE,2) );  
      } 
    SIZE ++;   
 //---------------------------------------      
//------------
   return(0);
  }
 
Artyom Trishkin:

Ich werde es mit einem Tableau versuchen:

Häkchen 10
Häkchen 9
Häkchen 8
Häkchen 7
Häkchen 6
ticken 5
Häkchen 4
Häkchen 3 Häkchen 2
Häkchen 1 Häkchen 0
Künftiger Tick
X10
X9
X8
X7
X6
X5
X4
X3
X2
X1X0
XN0
X9X8
X7X6X5
X4X3
X2
X1
X0XN0
XN1

x0, x1, x2 definieren den aktuellen Zustand (rosa), der Rest definiert den vergangenen Zustand (hellgrün). Die Daten im Array verschieben sich ständig, und das neu eingetroffene xn0 nimmt den Platz des Nullticks ein. Der aktuelle Zustand wird also von x1, x0, xn0 aus gezählt, und der Tick x2 vom letzten Mal wird in die Zellen verschoben, die den vorherigen Zustand definieren, wodurch eine kleine Korrektur für diesen Zustand vorgenommen wird. Wenn wir alles zusammenzählen, dann werden die ersten drei Ticks korrigiert, was mir ziemlich grob erscheint.

Daran ist etwas dran. Hier ist ein Screenshot des Tick-Charts:

Screenshot eines Tick-Charts

Beachten Sie den Bereich, der von den großen Pfeilen umschlossen wird.

Und hier ist die Verarbeitung der Bedingung, wenn die durchschnittliche Schrittweite der Ticks (tick0, tick1, tick2) größer ist als die durchschnittliche Schrittweite (tick3, tick4, tick5, tick6, tick7, tick8, tick9, tick10) und die Schrittweite größer als Null ist:

Bearbeitung der Bedingung

 
Artyom Trishkin:

Es macht keinen Unterschied, welche Plattform Sie verwenden. Ich habe Roman dort gefragt und ihm privat Codes geschrieben, konnte aber nicht verstehen, warum er die Größe des Arrays in init() auf zwei Millionen setzt, dann in start() die Größe des Arrays auf Null setzt, dann versucht, es mit Index -1 (!!!) zu füllen, und erst danach die Variable SIZE um 1 erhöht, die das Array indizieren sollte. Vergleichen Sie, das habe ich vorgeschlagen:

Allerdings weigert sich iMAOnArray(), diese zu glätten. Egal, wie stark ich es drehe, es geht vor und zurück. Für die hier beabsichtigten Zwecke ist dies jedoch nicht erforderlich. Ich denke...

GUT. Und wo befindet sich die Zeitintervallanalyse in Ihrem Code und warum ist MA erschienen?

Ich habe auch einen Fehler in meiner Sache gefunden. Es ist nicht die gleiche Anzahl von Ticks während ein und desselben Zeitintervalls. Wir sollten einen solchen Indikator nicht verlieren.

Vielleicht täusche ich mich, denn ich benutze 5-Rka noch nicht lange.