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

 
Artyom Trishkin:
Print() im visuellen Modus

Großartig! Ich danke Ihnen! Es hat alles geklappt. Ich habe alle Variablen auf einmal überprüft.

 
Roni Iron:

Guten Tag!

Welche Möglichkeiten gibt es, Daten dieser Art zu erhalten?

Zeit (UTC),Ask,Bid,AskVolume,BidVolume

Ask,Bid - es genügt, dies anzugeben. Sie müssen nicht zu kompliziert werden, und es gibt nur 1 Volumen im Forex.

iVolume

Gibt den Wert des Tick-Volumens des Balkens (angegeben durch den Parameter shift) des entsprechenden Diagramms zurück.

long  iVolume( 
   string           symbol,          // символ 
   int              timeframe,       // период 
   int              shift            // сдвиг 
   );
 
Hallo, könnten Sie mich bitte beraten, wenn ich einen benutzerdefinierten Indikator in MQL4 installieren, alles funktioniert, aber wenn ich zu einem anderen Zeitrahmen wechseln nur deinit (vom vorherigen Zeitrahmen) funktioniert, und init funktioniert nicht auf eine neue, dh das Programm nicht neu starten, es entfernt nur aus dem Fenster. Wenn ich den Indikator manuell auf den neuen Zeitrahmen einstelle, geht alles gut. Was könnte das Problem sein?
 

Genau das ist der Trick - Forex hat ein Tickvolumen eines Balkens, aber es gibt kein Tickhandelsvolumen. Aber die Quellen für Tick-Kurse (Ducascopy usw.) gebenAskVolume,BidVolume-Werte nach den Preiswerten in der Form 0.32,0.12 an(und es ist nicht klar, ob es sich um 2 Stellen mit Kommas oder 4 handelt.

Ich danke Ihnen!

 
Gibt es einen Trick, um eine CSV-Datei ohne Trennzeichen zu erstellen?
 

Hallo.

Bitte beraten Sie, ich habe meinen Code für MQL5 umgeschrieben, die für MQL4geschrieben wurde.

Ich habe zwei EMAs, einen für einen.

Ich habekeine Fehler beim Kompilieren, aber es zeigt nicht die gleichen Ergebnisse wie in MQL4.

Ich habe dasMQL5-Handbuch durchgesehen, aber ich verstehe nichts.

//+------------------------------------------------------------------+
//|                                                           MA.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
//--- plot 1
#property indicator_label1  "MA 1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrLime
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plot 2
#property indicator_label2  "MA 2"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrYellow
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
//
input int PER=8; //Period
//
double         MA_1[];
double         MA_2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,MA_1,INDICATOR_DATA);
      SetIndexBuffer(1,MA_2,INDICATOR_DATA);
         IndicatorSetInteger(INDICATOR_DIGITS,2);
//---
   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[])
  {
   program(rates_total,prev_calculated,close);
   return(rates_total);
  }
//+------------------------------------------------------------------+
//+---EMA

double EMA(double N,double P,double EMA0=0)//формула
  {
   double  A=2/(N+1);                      //расчета
   return(A*P+(1-A)*EMA0);                 //ЕМА
  }
//+---
void program(int rates_total,int prev_calculated,const double &close[])
  {

   int Y=rates_total-prev_calculated;
   if(prev_calculated==0) Y=Y-PER-1;

   for(Y=Y; Y>=0; Y=Y-1)

     {
     
      MA_1[Y]=EMA(PER,close[Y],MA_1[Y+1]);//первая
      MA_2[Y]=EMA(PER,MA_1[Y],MA_2[Y+1]);//на неё вторая

     }
   return;
  }
//+------------------------------------------------------------------+
 
imknk:

Hallo.

Bitte beraten Sie, ich habe meinen Code für MQL5 umgeschrieben, die für MQL4geschrieben wurde.

Ich habe zwei EMAs, einen für einen.

Ich habekeine Fehler beim Kompilieren, aber es zeigt nicht die gleichen Ergebnisse wie in MQL4.

Ich habe mir schon imMQL5-Handbuch dieAugen gerieben, ich verstehe nichts.

In mql5 müssen die Puffer umgedreht werden, da sie rückwärts laufen.

Eine Konstruktion hinzufügen und darüber lesen

ArraySetAsSeries(MA_1,true);
Документация по MQL5: Пользовательские индикаторы / SetIndexBuffer
Документация по MQL5: Пользовательские индикаторы / SetIndexBuffer
  • www.mql5.com
[in]  Тип данных, хранящихся в индикаторном массиве. По умолчанию INDICATOR_DATA (значения рассчитанного индикатора). Может также принимать значение INDICATOR_COLOR_INDEX, тогда данный буфер предназначен для хранения индексов цветов для предыдущего индикаторного буфера. Можно задать до 64 цветов в строке #property indicator_colorN. Значение...
 
Vitaly Muzichenko:

In mql5 müssen Sie die Puffer umdrehen, sie laufen rückwärts.

Eine Konstruktion hinzufügen und darüber lesen

Danke, ich werde es jetzt versuchen.
 

Bitte helfen Sie, wo liegt der Fehler?

Warum wird bei der Übergabe einer if-Bedingung an eine Funktion die Meldung " 'all_clouse' - function not defined" ausgegeben?

if(buy>=position)
 {
   All_clouse();  // 'All_clouse' - wrong parameters count

 }
..............
дальше код
..............
Уже за пределами OnTick
void All_clouse(int a,double x, double y)
  {
.............
   } к самой функции закрытия ордеров у него претензий нет.
 
Gilmor:

Bitte helfen Sie, wo liegt der Fehler?

Warum heißt es in einer if-Bedingung mit einem Sprung zu einer Funktion " 'all_clouse' - function not defined"?

Weil Sie die Funktion mit Parametern füttern müssen und Sie sie leer aufrufen All_clouse()

void All_clouse(int a,double x, double y)
Grund der Beschwerde: