[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 235

 
FinBuda писал(а) >>

Hallo, ich bitte um Hilfe von den Wissenden, mein Indikator will nicht durch den Fluss zu zeichnen, muss ich ständig wechseln Frames, um es auf den letzten Bar zu aktualisieren, wie kann ich dieses Manko beheben? Dafür bin ich sehr dankbar.

Ohne den zweiten Indikator können Sie ihn nicht testen.

 
Vinin >> :

Ohne einen zweiten Indikator gibt es immer noch keine Möglichkeit zur Kontrolle.

Entschuldigung! Ich nehme das zurück :)

Dateien:
indu2.mq4  3 kb
 
FinBuda писал(а) >>

Entschuldigung! Ich nehme das zurück :)

Es funktioniert natürlich, aber die Bremsen sind schrecklich. Es ist notwendig, die Berechnungen des Hilfsindikators auf den Hauptindikator zu übertragen. Im Allgemeinen wäre es besser, die Berechnungen zu optimieren.

Dateien:
norms2.1.mq4  4 kb
 
Vinin >> :

Es funktioniert natürlich, aber die Bremsen sind schrecklich. Es ist notwendig, die Berechnungen des Hilfsindikators auf den Hauptindikator zu übertragen. Im Allgemeinen wäre es besser, die Berechnungen zu optimieren.

Herzlichen Dank für Ihre Hilfe! Eine weitere Frage ist, wie ich die Berechnungen optimieren kann und wie ich den MACD am besten normalisiere, damit er innerhalb bestimmter Grenzen läuft. Ich bin nur weit von den Details und Programmierung, weshalb alles, was ich finden konnte eine mehr oder weniger geeignet ist der Normalizer oben gesehen :)

 
FinBuda писал(а) >>

Herzlichen Dank für Ihre Hilfe! Und noch eine weitere Frage: Wie kann ich die Berechnungen optimieren und wie kann ich den MACD am besten normalisieren, damit er innerhalb bestimmter Grenzen läuft? Ich bin nur weit von den Details und Programmierung, weshalb alles, was ich finden konnte mehr oder weniger geeignet ist der Normalizer oben gezeigt :)

Es kann viele Optimierungsmöglichkeiten geben. Ich habe mich nicht wirklich mit dem Code befasst.

 
FinBuda >> :

Herzlichen Dank für Ihre Hilfe! Ich habe noch eine weitere Frage: Wie lässt sich die Berechnung am besten optimieren, und wie lässt sich das MAKD normalisieren, damit es innerhalb der von mir festgelegten Grenzen bleibt? Ich bin nur weit von der Hardware und Programmierung, weshalb alles, was ich finden konnte mehr oder weniger geeignet ist der Normalizer oben gesehen :)

Sie verwenden eine Variante, die in der Codebasis veröffentlicht wurde. Es handelt sich dabei nur um ein Konzept, das nicht auf Leistung optimiert ist. Für praktische Zwecke schlage ich vor, die Variable characteristic_period manuell aus externen Variablen zu setzen und sie so zu wählen, dass 3-4 volle Zyklen des Hauptindikators während der angegebenen Anzahl von Perioden auftreten

//+------------------------------------------------------------------+
//|                                                   Normalizer.mq4 |
//|                                          Copyright © 2008, al_su |
//|                                                  al_su31@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, al_su"
#property link      "al_su31@mail.ru"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_maximum 1
#property indicator_minimum -1
#property indicator_level1 0.25
#property indicator_level2 0.5
#property indicator_level3 0.75
#property indicator_level4 -0.25
#property indicator_level5 -0.5
#property indicator_level6 -0.75
#property indicator_color1 RoyalBlue
//---- input parameters
#define PERIODS_CHARACTERISTIC 3

extern string  Indicator="ind-2";
extern int     mode=0;
extern int     param1=8;//Ну или 9, не важно...
extern int     param2=34;
//extern int param3;Скока надо параметров, стока и задаем
extern double  characteristic_period; //как видите, переменную вынесли вовне

//---- buffers 
double Normalizer[];
double sigma;

//-------------------------------------------------------------------------------
double Indyuk(int shift)
{
   return (iCustom(0,0, Indicator, param1, param2,/*param3, и т.д.:)*/ mode, shift));
}

double MathTanh(double x)
{ 
   double exp;
   if( x>0)  {exp=MathExp(-2* x);return ((1-exp)/(1+exp));}
   else {exp=MathExp(2* x);return ((exp-1)/(1+exp));}
}

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorShortName("Normalized "+ Indicator);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0, Normalizer);
   SetIndexDrawBegin(0, characteristic_period);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int   i, j, limit, counted_bars=IndicatorCounted();
   double S;
   if( counted_bars>0) counted_bars--;
   limit=MathMax(Bars- counted_bars-1,0);
//----
   for( i= limit; i>=0; i--)
   {
      S=0;
      for( j=0; j< characteristic_period; j++) S+=MathPow( Indyuk( i+ j),2);
      S/= characteristic_period;
      S=MathSqrt( S);
      if( S>0) Normalizer[ i]= Indyuk( i)/ S;
      Normalizer[ i]= MathTanh( Normalizer[ i]);
   } 
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
alsu >> :

Eine andere Möglichkeit - die ich persönlich häufiger verwende - besteht darin, die Anzahl der Tage für den Lauf von außen anzugeben und sie im Körper des Indikators in characteristic_period umzuwandeln

...

extern double days_for_normalization=3;   // например, смотрим за три дня

...

int init()
{

...


characteristic_period=1440./Period()* days_for_normalization;   // 1440 - это количество минут в сутках
}
 
Im Allgemeinen hat Vinin recht, die Berechnung ist wirklich schneller, wenn der Code des zweiten Indikators in den ersten eingefügt wird. Der Nachteil dabei ist, dass man mehr kodieren muss (und das, was Sie von kodobase übernommen haben, war einer der Zwecke, zu zeigen, wie man diese Arbeit vereinfachen kann), außerdem nimmt der zweite Indikator Puffer des ersten in Anspruch, was nicht immer akzeptabel ist.
 
Ich danke Ihnen allen für Ihre Hilfe!!! Versuchen wir's mal :)
 

Es funktioniert nicht...wenn Sie alle diese EAs hier lesen, aber ich habe nur MM, ich möchte ein wenig Reife Erwartung von +.... eh haben...


Ist die mathematische Erwartung -0,12 ohne Optimierung in einem langen Zeitintervall normal? Ich meine, jeder bekommt es ohne Optimierung und dann steigt die Erwartung durch Anpassung, oder ist es keine Option und ich sollte EA komplett wechseln?