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

 
Alexey Viktorov:

Also beschränken Sie sich auf die Mitte. Wer verbietet es?

Wenn er nicht männlich ist, dann verbietet anscheinend das PMS-Syndrom das Lesen und das Stellen von angemessenen Fragen, bisher hat mich nur das Gequietsche... Ich will es wirklich so und nicht so...

ZS: Ich bin auf 4 Foren, wenn möglich, mache ich etwa 20 kostenlose MT4-Aufträge im Monat, und etwa 10 Aufträge für einzelne TK, aber regelmäßig alle 1,5-2 Monate taucht eine Märchenfigur auf, die mich umhaut, weil er MT4 nicht verstehen oder eine bestimmte Aufgabe unter dem Auftrag erledigen muss ... Er muss nur jemandem den Kopf verdrehen, das ist sein Job...

Ich würde Artem zu Lebzeiten ein Denkmal setzen für seine Geduld, mit der er sich über einen so langen Zeitraum mit solchen Charakteren auseinandergesetzt hat.

 
Alexey Viktorov:

Das ist sehr einfach zu bewerkstelligen.

Option 1: Benutzen Sie Ihr Gehirn.

Wenn Sie das nicht können, können Sie Option 2 verwenden.

Ohne viel Aufhebens zu machen und ohne die Entwickler und vor allem die Forumsnutzer zu beleidigen, bitten Sie im Forum um Hilfe.

Andernfalls werden Sie auf die Seite . Post.

Ich weiß, wie man diese "Funktion" umgehen kann.

Im Gegensatz zu den "anständigen Leuten" dieses Forums werde ich kein Geheimnis daraus machen.

Dieser Weg sieht folgendermaßen aus:

Wenn Sie den Rest des Feldes, an dem wir nicht interessiert sind, mit dem Maximalwert füllen, hören die Indikatoren auf, Linien zu zeichnen.

Dies ist genau die "idiotische" Lösung dieses Problems, die wir in den Standard-MT4-Indikatoren (z. B. SMA, EMA, SMMA und andere) sehen.

Aber Sie müssen zugeben, dass das völliger Blödsinn ist. Und ich vermute, dass gerade wegen dieser Idiotie kein einziges Wort über diese Art der "Lösung" des Problems in der Beschreibung steht.

Vielleicht liege ich falsch, aber ich habe in den Standardindikatoren keine andere Möglichkeit gefunden.

 
Alexey Viktorov:

Und zwar genau so. Sie eröffnen ein neues Konto und überweisen das Geld vom alten Konto auf das neue Konto per interner Überweisung, wobei keinerlei Gebühren anfallen.

Das verstehe ich überhaupt nicht. Alexey, woher wissen Sie überhaupt, wovon Sie sprechen? Was hat das mit 8 Indikatorpuffern zu tun, die ein Übersetzer nicht übersetzen kann? Ich weiß es nicht...
 
Igor Makanu:

Wenn er nicht männlich ist, dann verbietet anscheinend das PMS-Syndrom das Lesen und das Stellen von angemessenen Fragen, bisher hat mich nur das Gequietsche... Ich will es wirklich so und nicht so...

ZS: Ich bin auf 4 Foren, wenn möglich, mache ich etwa 20 kostenlose MT4-Aufträge im Monat, und etwa 10 Aufträge für einzelne TK, aber regelmäßig alle 1,5-2 Monate taucht eine Märchenfigur auf, die mich umhaut, weil er MT4 nicht verstehen oder eine bestimmte Aufgabe unter dem Auftrag erledigen muss ... Er muss nur jemandem den Kopf verdrehen, das ist sein Job...

Ich würde Artem zu Lebzeiten ein Denkmal setzen für seine Geduld, mit der er sich über einen so langen Zeitraum mit solchen Charakteren auseinandergesetzt hat.

Sie brauchen wahrscheinlich eine Pause.

 
Man muss mit Kindern nüchtern umgehen, damit es in Zukunft keine Probleme gibt.
 

Was mache ich falsch?

//+------------------------------------------------------------------+
//|                                                      CCI_DIV.mq5 |
//|                                                        RomanRott |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "RomanRott"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot HL_CCI
#property indicator_label1  "HL_CCI"
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- input parameters
input int      Period_=70; //Период
//--- indicator buffers
double         HL_CCIBuffer[];
int cci_h1, cci_h2;
double cci1[], cci2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,HL_CCIBuffer,INDICATOR_DATA);
   cci_h1 = iCCI(_Symbol, PERIOD_CURRENT, Period_, PRICE_HIGH);
   cci_h2 = iCCI(_Symbol, PERIOD_CURRENT, Period_, PRICE_LOW);
   
   //ArraySetAsSeries(cci1, true);
   //ArraySetAsSeries(cci2, true);
//---
   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[])
  {
   CopyBuffer(cci_h1, 0, 0, rates_total-prev_calculated, cci1);
   CopyBuffer(cci_h2, 0, 0, rates_total-prev_calculated, cci2);
   for(int i = prev_calculated; i<rates_total;i++){
      HL_CCIBuffer[i] = cci1[i]-cci2[i];
   }
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin:
Ich verstehe überhaupt nichts mehr. Alexej, woher weißt du überhaupt, wovon wir reden? Was hat das mit 8 Indikatorpuffern zu tun, die ein Übersetzer nicht übersetzen kann? Es ist schwer zu verstehen...

Artem, du bist ein Programmierer... M. Botvinnik sagte einmal, dass ein Computer ein Idiot ist. Daher weiß jeder Programmierer, wie man mit einem Idioten spricht.

Ich habe schon einmal von 8 oder 512 Puffern gelesen, und in diesem Text ging es um die Beschwerde über die Weigerung des Brokers, das Konto von MT4 auf MT5 umzustellen.


Igor Makanu:

Ich würde Artem zu Lebzeiten ein Denkmal für seine Geduld im Umgang mit solchen Charakteren setzen.

Ich habe bereits...


 
Roman Sharanov:

Was mache ich falsch?

//+------------------------------------------------------------------+
//|                                                      CCI_DIV.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                             https://mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_plots   1
//--- plot DivCCI
#property indicator_label1  "DivCCI"
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_color1  C'143,188,139'
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2
//--- input parameters
input uint     InpPeriod=70;   // CCI period
//--- indicator buffers
double         BufferDivCCI[];
double         BufferHCCI[];
double         BufferLCCI[];
//--- global variables
int            period_cci;
int            handle_hcci;
int            handle_lcci;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- set global variables
   period_cci=int(InpPeriod<2 ? 2 : InpPeriod);
//--- indicator buffers mapping
   SetIndexBuffer(0,BufferDivCCI,INDICATOR_DATA);
   SetIndexBuffer(1,BufferHCCI,INDICATOR_CALCULATIONS);
   SetIndexBuffer(2,BufferLCCI,INDICATOR_CALCULATIONS);
//--- setting indicator parameters
   IndicatorSetString(INDICATOR_SHORTNAME,"HL CCI ("+(string)period_cci+")");
   IndicatorSetInteger(INDICATOR_DIGITS,Digits());
//--- setting buffer arrays as timeseries
   ArraySetAsSeries(BufferDivCCI,true);
   ArraySetAsSeries(BufferHCCI,true);
   ArraySetAsSeries(BufferLCCI,true);
//--- create CCI's handles
   ResetLastError();
   handle_hcci=iCCI(NULL,PERIOD_CURRENT,period_cci,PRICE_HIGH);
   if(handle_hcci==INVALID_HANDLE)
     {
      Print("The iCCI(",(string)period_cci,") object was not created: Error ",GetLastError());
      return INIT_FAILED;
     }
   handle_lcci=iCCI(NULL,PERIOD_CURRENT,period_cci,PRICE_LOW);
   if(handle_lcci==INVALID_HANDLE)
     {
      Print("The iCCI(",(string)period_cci,") object was not created: Error ",GetLastError());
      return INIT_FAILED;
     }
//---
   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<fmax(period_cci,4)) return 0;
//--- Проверка и расчёт количества просчитываемых баров
   int limit=rates_total-prev_calculated;
   if(limit>1)
     {
      limit=rates_total-1;
      ArrayInitialize(BufferDivCCI,EMPTY_VALUE);
      ArrayInitialize(BufferHCCI,0);
      ArrayInitialize(BufferLCCI,0);
     }
//--- Подготовка данных
   int count=(limit>1 ? rates_total : 1),copied=0;
   copied=CopyBuffer(handle_hcci,0,0,count,BufferHCCI);
   if(copied!=count) return 0;
   copied=CopyBuffer(handle_lcci,0,0,count,BufferLCCI);
   if(copied!=count) return 0;

//--- Расчёт индикатора
   for(int i=limit; i>=0 && !IsStopped(); i--)
     {
      BufferDivCCI[i]=BufferHCCI[i]-BufferLCCI[i];
     }

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 

beraten, was sollte auf dem Platz hinzugefügt werden, so dass der Indikator arbeitet jede Sekunde anstelle von jedem Tick?

#property indicator_chart_window

#Eigenschaft indicator_buffers 1

#property indicator_color1 Rot

#Eigenschaft streng

double buffer[];

void init()

{

SetIndexPuffer(0,Puffer);

SetIndexStyle(0,STYLE_SOLID);

}

void start ()

{


double vbid_1 = MarketInfo("USDRUB",MODE_BID);

double vbid_2 = MarketInfo("EURUSD",MODE_BID);




double a = vbid_1;

double b = vbid_2;

double x = a / b ;

buffer[0] = x;

Kommentar (x);

}


 
gonsharov:

Was muss ich auf dem Platz hinzufügen, damit der Indikator jede Sekunde statt jedes Tick funktioniert?

Sie müssenhttps://docs.mql4.com/ru/basis/function/events lesen.

und schreiben Sie Ihren Event-HandlerOnTimer()

Функции обработки событий - Функции - Основы языка - Справочник MQL4
Функции обработки событий - Функции - Основы языка - Справочник MQL4
  • docs.mql4.com
В языке MQL4 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL4: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...