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

 
Artyom Trishkin:

Ich verstehe immer noch nicht: Was wollen Sie finden und anzeigen? Nur in Worten - ohne Code.

Sie schreiben also:

Die Frage ist: Warum suchen Sie es in der zehnten Leiste?


Beim zehnten Takt habe ich es als Beispiel genommen.

Ich muss Punkte nach 10 oder "N" Balken setzen, nachdem der Pfeil des aufgerufenen Indikators erscheint.

Wenn ich die Punkte nur auf dem zehnten Balken platzieren wollte, würde ich so vorgehen

 if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",1,i+10),Digits)!=EMPTY_VALUE
        {
         BufferDN[i+1]=high[i+1]+distance*MyPoint;

        }

Artyom Trishkin:

Und fügen Sie den gesamten Indikator an, nicht OnCalculate()

Dies ist die erste Option

#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
//--- plot UP
#property indicator_label1  "UP"
#property indicator_type1   DRAW_ARROW
#property indicator_color1  clrLawnGreen
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plot DN
#property indicator_label2  "DN"
#property indicator_type2   DRAW_ARROW
#property indicator_color2  clrDeepPink
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1

//--- indicator buffers
double         BufferUP[];
double         BufferDN[];

int distance=5;
double MyPoint;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,BufferUP);
   SetIndexBuffer(1,BufferDN);
//--- setting a code from the Wingdings charset as the property of PLOT_ARROW
   SetIndexArrow(0,233);
   SetIndexArrow(1,234);

//---
   if(Digits()==5 || Digits()==3){MyPoint=Point*10;} else{MyPoint=Point;}
  
   return(INIT_SUCCEEDED);
  }
   // int ila;
int    vspread,num_buy=0,num_sell=0;
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if(rates_total<2) return(0);
   int limit=rates_total-prev_calculated;
   if(limit>1) 
     {
      limit=rates_total-2;
      ArrayInitialize(BufferUP,EMPTY_VALUE);
      ArrayInitialize(BufferDN,EMPTY_VALUE);
     }
   for(int i=limit; i>=0; i--) 
     {
     for(int il=i+1;il<=i+300;il++)
        {
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",0,il),Digits)!=EMPTY_VALUE
            )
           {
            num_buy=il;
            //Print()
           // break;
           }
        }
//
      if(num_buy==60)
        {
         BufferUP[i+1]=low[i+1]-distance*MyPoint;
         
        }
    
     for(int ila=i+1;ila<=i+300;ila++)
        {
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",1,ila),Digits)!=EMPTY_VALUE
            )
           {
            num_sell=ila;
           // break;
           }
        }
      if(num_sell==10)
        {
         BufferDN[i+1]=high[i+1]+distance*MyPoint;

        }
     
      Comment(num_buy,"num_sell",num_sell);
     }
//--- return value of prev_calculated for next call

   return(rates_total);
  }
//
.
 

Global möchte ich das Tief des ersten Balkens mit dem"n" oberen Fraktal hinter dem ersten Pfeil des aufgerufenen Indikators (erster Puffer) vergleichen.

Und ermitteln Sie den maximalen Preis zwischen dem ersten Balken und dem Balken des gefundenen Fraktals.

Die Bedingung ist wie folgt: Wenn der Tiefststand (+-10 Punkte) des ersten Balkens gleich dem Preis (sei es der erste) des Fraktals hinter dem Indikatorpfeil ist und der maximale Preis zwischen dem Fraktal-Balken und dem ersten Balken minus dem Preis des gefundenen Fraktals größer als 50 Punkte ist, dann setzen Sie den Pfeil.

Um das Fraktal zu finden, benötige ich die Nummer des Balkens, in dem sich der Pfeil befindet. Ich möchte die Fraktale von diesem Balken ausgehend durchsehen und dann die Geschichte.

Vielleicht habe ich an der falschen Stelle angesetzt und Sie können mir eine andere Lösung anbieten.

 
mila.com:

Global möchte ich das Tief des ersten Balkens mit dem"n" oberen Fraktal hinter dem ersten Pfeil des aufgerufenen Indikators (erster Puffer) vergleichen.

Und ermitteln Sie den maximalen Preis zwischen dem ersten Balken und dem Balken des gefundenen Fraktals.

Die Bedingung ist wie folgt: Wenn der Tiefststand (+-10 Punkte) des ersten Balkens gleich dem Preis (sei es der erste) des Fraktals hinter dem Indikatorpfeil ist und der maximale Preis zwischen dem Fraktal-Balken und dem ersten Balken minus dem Preis des gefundenen Fraktals größer als 50 Punkte ist, dann setzen Sie den Pfeil.

Um das Fraktal zu finden, benötige ich die Nummer des Balkens, in dem sich der Pfeil befindet. Ich möchte die Fraktale ab diesem Balken durchgehen und dann zurück in die Historie gehen.

Vielleicht habe ich an der falschen Stelle angesetzt und Sie können einen anderen Lösungsweg vorschlagen.

Dieser sollte einfach Punkte durch die Geschichte auf die Entfernung in Balken, die Sie in den Einstellungen festgelegt setzen.

Wenn Sie z.B. 10 Balken einstellen, dann setzt der benutzerdefinierte Indikator einen Punkt auf den aktuellen Balken (Index i) des Zyklus, wenn er ein Signal links vom Zyklusindex für 10 Balken erhält.

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
//--- plot UP
#property indicator_label1  "UP"
#property indicator_type1   DRAW_ARROW
#property indicator_color1  clrLawnGreen
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plot DN
#property indicator_label2  "DN"
#property indicator_type2   DRAW_ARROW
#property indicator_color2  clrDeepPink
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
//--- input parameters
input uint     InpNumberOfBars   =  10;   // Количество баров отступа
input int      InpDistance       =  5;    // Отступ в пунктах
//--- indicator buffers
double         BufferUP[];
double         BufferDN[];
//---
int            num_bars;
double         distance;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,BufferUP);
   SetIndexBuffer(1,BufferDN);
//--- setting a code from the Wingdings charset as the property of PLOT_ARROW
   SetIndexArrow(0,233);
   SetIndexArrow(1,234);
//--- setting variables
   num_bars=(int)InpNumberOfBars+1;
   distance=InpDistance*Point();
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if(rates_total<num_bars) return(0);
   int limit=rates_total-prev_calculated;
   if(limit>1)
     {
      limit=rates_total-num_bars-1;
      ArrayInitialize(BufferUP,EMPTY_VALUE);
      ArrayInitialize(BufferDN,EMPTY_VALUE);
     }
   for(int i=limit; i>=0; i--)   // 1000 - 11 - 1 = 999-11 = 988
     {
      double val_0=iCustom(NULL,0,"Arrow v.3",0,i+num_bars);   // rates_total=1000, i=988, val from 988+11=999
      double val_1=iCustom(NULL,0,"Arrow v.3",1,i+num_bars);   // rates_total=1000, i=988, val from 988+11=999
      if(val_0>0 && val_0<EMPTY_VALUE)
         BufferDN[i]=low[i]-distance;  // BufferDN[988]=val
      if(val_1>0 && val_1<EMPTY_VALUE)
         BufferUP[i]=high[i]+distance;
     }
//--- return value of prev_calculated for next call

   return(rates_total);
  }
//+------------------------------------------------------------------+
Aber "müssen" heißt nicht, dass ich es muss. Ich habe es stumm auf meine Knie gemalt, während ich schlief. Ich kann es nicht überprüfen, ich habe keine benutzerdefinierte Version. Sie wissen schon...
 
Grüße. Ich brauche wirklich Hilfe. Kennt jemand ein Skript oder eine Methode, um Geschäfte in der Geschäftshistorie zu markieren und diese Auswahl dann in der Historie zu speichern, z.B.: https://yadi.sk/d/7aHIs_vh3RxLvW oder hier:
https://yadi.sk/i/Ft8yNn1e3RxMEH - Vielen Dank im Voraus
Dateien:
2.jpg  481 kb
3.jpg  708 kb
 
civic111:
Grüße. Ich brauche wirklich Hilfe. Kennt jemand ein Skript oder eine Methode, um Geschäfte in der Deal-Historie zu markieren und diese Auswahl dann in der Historie zu speichern, wie https://yadi.sk/d/7aHIs_vh3RxLvW oder hier:
https://yadi.sk/i/Ft8yNn1e3RxMEH - vielen Dank im Voraus

Ist dies der Weg


um die Bilder hineinzustellen?

 
civic111:
Grüße. Ich brauche wirklich Hilfe. Vielleicht kennt jemand ein Skript oder eine Methode, wie ich einige Geschäfte in der Geschäftshistorie auswählen kann und diese Auswahl dann in der Historie gespeichert wird, z.B.: https://yadi.sk/d/7aHIs_vh3RxLvW oder hier:
https://yadi.sk/i/Ft8yNn1e3RxMEH - vielen Dank im Voraus

In der Standardtafel - auf keinen Fall.

Aber CodeBase oder (vielleicht) Market sollten Werkzeuge für die Arbeit mit der Auftragshistorie haben. Alternativ können Sie es auch selbst tun oder ein freiberufliches "alternatives Auftragspanel mit Blackjack und Devs" anfordern :-)

Oder Sie exportieren einfach in eine CSV-Datei und verwenden Excel, um die darin enthaltenen Daten zu analysieren.

 

Bitte schließen Sie den Auftrag

Ich brauche einen freien Platz

 
Entwickler Hooshang Nosratpanah hat Schritt "Work Acceptance" bestätigt
 
اه مو مشكلة
يعني ممكن صفقة شرا لم تحق هدفها فلذلك مكن تعزيزها بصفقة اخرى شراء اذا اعطى الاكسبيرت اشارة بذلك
 
انا اعتقد ان كل مسافه معينه افضل
لان ممكن نفتح شرا و السعر ينزل ويجيب اشاره بيع
ويفضل علي البيع كتير وينزلجامد واتحين كل دا صفق واحده بس شرا ومنتظرين اشاره شرا تانيه عشان ندخل بلوت اكبر