Hilfe zum Upgrade auf MetaTrader 5 ohne Verlust - Seite 13

 
mario065:

Hallo,

Ich konnte nicht tun, was ich wollte.

Ich habe einen anderen Maulwurfspuffer im Kopf, ich habe ein anderes Paar, als das, das ich im Kopf hatte.

[code]
#property indicator_separate_window
#property indicator_buffers 6
#property indicator_plots   2
#property indicator_type1   DRAW_COLOR_LINE
#property indicator_type2   DRAW_COLOR_LINE
#property indicator_color1  clrBlue
#property indicator_color2  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_style2  STYLE_SOLID

input int period_1 = 20;
input int period_2 = 100;
input ENUM_MA_METHOD ma_method = MODE_SMA;
input ENUM_APPLIED_PRICE applied_price = PRICE_CLOSE;

double ExtMapBuffer1[];
double ExtMapBuffer2[];
int EMHandle1=0;
int EMHandle2=0;
int EMHandle11=0;
int EMHandle22=0;
MqlParam params[];      // Структура за съхранение  параметрите на индикатора
double ma1[],ma2[],ma3[],ma4[];//Временни буфери

int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0, ExtMapBuffer1, INDICATOR_DATA);
   SetIndexBuffer(1, ExtMapBuffer2, INDICATOR_DATA);
   SetIndexBuffer(2, ma1, INDICATOR_DATA);
   SetIndexBuffer(3, ma2, INDICATOR_DATA);
   SetIndexBuffer(4, ma3, INDICATOR_DATA);
   SetIndexBuffer(5, ma4, INDICATOR_DATA);
  
   PlotIndexSetInteger(0, PLOT_SHIFT, 0);
   PlotIndexSetInteger(1, PLOT_SHIFT, 0);
  
   PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_SOLID);
   PlotIndexSetInteger(1,PLOT_LINE_STYLE,STYLE_SOLID);
//---
   PlotIndexSetInteger(0,PLOT_LINE_COLOR,clrBlue);
   PlotIndexSetInteger(1,PLOT_LINE_COLOR,clrRed);

   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
   PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE);
   IndicatorSetString(INDICATOR_SHORTNAME,"2_2_MA");
//--- set accuracy
   IndicatorSetInteger(INDICATOR_DIGITS,4);  
//---
   ArrayResize(params,4);
   params[0].type         =TYPE_INT;
   params[0].integer_value=period_1;
   // Смещение
   params[1].type         =TYPE_INT;
   params[1].integer_value=0;
   // Метод расчета: простое усреднение
   params[2].type         =TYPE_INT;
   params[2].integer_value=MODE_SMA;
   // Тип цен для рассчета: цены закрытия
   params[3].type         =TYPE_INT;
   params[3].integer_value=PRICE_CLOSE;
  
   EMHandle1 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params);
   ArrayResize(params,4);
   params[0].type         =TYPE_INT;
   params[0].integer_value=period_2;
   params[1].type         =TYPE_INT;
   params[1].integer_value=0;
   params[2].type         =TYPE_INT;
   params[2].integer_value=MODE_SMA;
   params[3].type         =TYPE_INT;
   params[3].integer_value=PRICE_CLOSE;
  
   EMHandle2 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params);
   ArrayResize(params,4);
   params[0].type         =TYPE_INT;
   params[0].integer_value=period_1;
   params[1].type         =TYPE_INT;
   params[1].integer_value=0;
   params[2].type         =TYPE_INT;
   params[2].integer_value=MODE_SMA;
   params[3].type         =TYPE_INT;
   params[3].integer_value=PRICE_CLOSE;
  
   EMHandle11 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params);
   ArrayResize(params,4);
   params[0].type         =TYPE_INT;
   params[0].integer_value=period_2;
   params[1].type         =TYPE_INT;
   params[1].integer_value=0;
   params[2].type         =TYPE_INT;
   params[2].integer_value=MODE_SMA;
   params[3].type         =TYPE_INT;
   params[3].integer_value=PRICE_CLOSE;
  
   EMHandle22 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params);
     
   return(0);
}
int OnCalculate (const int rates_total,    // размер массива price[];
                 const int prev_calculated,// количество доступных баров ;на предыдущем вызове;
                 const int begin,// с какого индекса в массиве  price[] начинаются достоверные данные;
                 const double &price[]) // массив, по которому и будет считаться индикатор;
  {
   int i;
   ArraySetAsSeries(ma1, true);
   ArraySetAsSeries(ma2, true);
   ArraySetAsSeries(ma3, true);
   ArraySetAsSeries(ma4, true);
  
   if(CopyBuffer(EMHandle1, 0, 0, 1, ma1) < 0){Print("CopyBuffer ma1 error =", GetLastError());}
   if(CopyBuffer(EMHandle2, 0, 0, 1, ma2) < 0){Print("CopyBuffer ma2 error =", GetLastError());}
   if(CopyBuffer(EMHandle11, 0, 0, 1, ma3) < 0){Print("CopyBuffer ma3 error =", GetLastError());}
   if(CopyBuffer(EMHandle22, 0, 0, 1, ma4) < 0){Print("CopyBuffer ma4 error =", GetLastError());} 
   int limit;
   //if(prev_calculated<1)
      //limit=period_1;
      limit=prev_calculated-1;
   for( i=0; i<limit; i++)
   ExtMapBuffer1[0]=вычисление;
   ExtMapBuffer2[0]=вычисление;

      Comment(
      "\n=====================",
      "\n ma1[0]     :   ",DoubleToString(ma1[0],5),
      "\n ma2[0]     :   ",DoubleToString(ma2[0],5),
      "\n ma3[0]     :   ",DoubleToString(ma3[0],5),
      "\n ma4[0]     :   ",DoubleToString(ma4[0],5),
      "\n ExtMapBuffer1[0] : ",DoubleToString(ExtMapBuffer1[0],4),
      "\n ExtMapBuffer2[0] : ",DoubleToString(ExtMapBuffer2[0],4)
      );
       return(rates_total);
  }
void OnDeinit(const int reason)
  {
   Comment("");      
  }
[/code] 

Wenn 0 anstelle von i (für einen Balken) sehe ich das Ergebnis, wenn der Balken (Strom = i) zeigt, dass ich keine Daten für das zweite Paar finden kann.

Der Chart des Paares ist offen, im Marktfenster weiß ich nicht, wo ich etwas verwechsle.

Zwei verschiedene Paare in einem Indikator - wo liegt also mein Fehler?

Ich versuche, 0 einzugeben und sehe das Ergebnis als Kommentar, aber ich habe keine Zeile erhalten.

Zur Verdeutlichung: Ich habe ma1 und ma2 auf ein Paar und ma3 und ma4 auf das andere Paar gelegt.

Danke.

Zuerst zählen Sie von 0----->prev_calculated-1 und Sie brauchen vom letzten gezählten Takt bis rates_total

dies:

      limit=prev_calculated-1;
   for( i=0; i<limit; i++)
   ExtMapBuffer1[0]=вычисление;

ändern Sie es in dies:

   
   for(int i=prev_calculated-1>=0?prev_calculated-1:0; i<rates_total; i++)
       ExtMapBuffer1[i]=вычисление;

Die zweite Sache, die ich nicht wirklich verstehe, wollen Sie muwings von verschiedenen Instrumenten oder verschiedenen Zeitrahmen zu erhalten, habe ich nicht gefunden, entweder von ihnen in den Code.

 

Guten Tag, meine Herren!

Wer kann mir helfen, die folgenden Indikatoren für den MT5 anzupassen (Pre-Files).

Ich gebe dir 10 Dollar für ein Bier für deine Arbeit.

Dateien:
 
master_kiln:

Guten Tag, meine Herren!

Wer kann mir helfen, die folgenden Indikatoren für den MT5 anzupassen (Pre-Files).

Ich gebe dir 10 Dollar für ein Bier für deine Arbeit.

https://www.mql5.com/ru/job
MQL5 работа
MQL5 работа
  • www.mql5.com
Заказы на разработку программ для трейдинга
 

Urain,

Ich danke Ihnen für Ihre Aufmerksamkeit.

Ich kann es nicht zeichnen, wenn Sie es können, stellen Sie es hier ein.

Ich finde es toll, dass man in xpert verschiedene Paare und verschiedene Rahmen erstellen kann.

//+------------------------------------------------------------------+
//|2_2_v2.mq5 |
//|Yuriy Tokman |
//| yuriytokman@gmail.com|
//+------------------------------------------------------------------+
#property copyright "Yuriy Tokman"
#property link"yuriytokman@gmail.com"
#Eigenschaft Version "1.00"
#property indicator_separate_window
#Eigenschaft indicator_buffers 6
#property indicator_plots 2
#property indicator_type1 DRAW_COLOR_LINE
#property indicator_type2 DRAW_COLOR_LINE
#Eigenschaft indicator_color1 clrBlue
#Eigenschaft indicator_color2 clrRed
#property indicator_style1 STYLE_SOLID
#property indicator_style2 STYLE_SOLID
//#property indicator_label1 "EURUSD"
//#property indicator_label2 "GBPUSD"

input int period_1 = 13 ;
input int period_2 = 55 ;;
input ENUM_MA_METHOD ma_method = MODE_SMA;
input ENUM_APPLIED_PRICE applied_price = PRICE_CLOSE;

double ExtMapBuffer1[];
double ExtMapBuffer2[];
int EMHandle1;
int EMHandle2;;
int EMHandle11;
int EMHandle22;
double ma1[],ma2[],ma3[],ma4[];//Zeitpuffer
double p1 = SymbolInfoDouble("EURUSD",SYMBOL_POINT);
double p2 = SymbolInfoDouble("GBPUSD",SYMBOL_POINT);
//+------------------------------------------------------------------+
//| Benutzerdefinierte Initialisierungsfunktion für Indikatoren |
//+------------------------------------------------------------------+
int OnInit()
{
//--- Zuordnung von Indikatorpuffern
SetIndexPuffer(0, ExtMapPuffer1, INDICATOR_DATA);
SetIndexPuffer(1, ExtMapPuffer2, INDICATOR_DATA);
SetIndexBuffer(2, ma1, INDICATOR_DATA);
SetIndexBuffer(3, ma2, INDICATOR_DATA);
SetIndexBuffer(4, ma3, INDICATOR_DATA);
SetIndexBuffer(5, ma4, INDICATOR_DATA);

PlotIndexSetInteger(0, PLOT_SHIFT, 0);
PlotIndexSetInteger(1, PLOT_SHIFT, 0);

PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_SOLID);
PlotIndexSetInteger(1,PLOT_LINE_STYLE,STYLE_SOLID);
//---
PlotIndexSetInteger(0,PLOT_LINE_COLOR,clrBlue);
PlotIndexSetInteger(1,PLOT_LINE_COLOR,clrRed);

PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,1);
PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,1);

PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE);

//--- Name für DataWindow
IndicatorSetString(INDICATOR_SHORTNAME, "2_2_MA");
//---
//--- Genauigkeit einstellen
IndicatorSetInteger(INDICATOR_DIGITS,4);

EMHandle1 = iMA("EURUSD", 0, period_1, 0, ma_method, applied_price);
EMHandle2 = iMA("EURUSD", 0, period_2, 0, ma_method, applied_price);
EMHandle11 = iMA("GBPUSD", 0, period_1, 0, ma_method, applied_price);
EMHandle22 = iMA("GBPUSD", 0, period_2, 0, ma_method, applied_price);

ArraySetAsSeries(ExtMapBuffer1,true);
ArraySetAsSeries(ExtMapBuffer2,true);
ArraySetAsSeries(ma1,true);
ArraySetAsSeries(ma2,true);
ArraySetAsSeries(ma3,true);
ArraySetAsSeries(ma4, true);

//---
zurück(0);
}
//+------------------------------------------------------------------+
//| Benutzerdefinierte Indikator-Iterationsfunktion |
//+------------------------------------------------------------------+
int OnCalculate (const int rates_total,// Größe des Arrays price[];
const int prev_calculated,// Anzahl der verfügbaren Balken ;beim vorherigen Aufruf;
const int begin,// mit welchem Index in der Preis[]-Anordnung die gültigen Daten beginnen sollen;
const double &price[]) // Array, auf dem der Indikator berechnet wird;
{
if(CopyBuffer(EMHandle1, 0, 0, 1, ma1) < 0){Print("CopyBuffer ma1 error =", GetLastError());}
if(CopyBuffer(EMHandle2, 0, 0, 1, ma2) < 0){Print("CopyBuffer ma2 error =", GetLastError());}
if(CopyBuffer(EMHandle11, 0, 0, 1, ma3) < 0){Print("CopyBuffer ma3 error =", GetLastError());}
if(CopyBuffer(EMHandle22, 0, 0, 1, ma4) < 0){Print("CopyBuffer ma4 error =", GetLastError());}

ExtMapBuffer1[0]=(ma1[0]-ma2[0])/p1;
ExtMapBuffer2[0]=(ma3[0]-ma4[0])/p2;

Kommentar(
"\n=====================",
"\n ma1[] : ",DoubleToString(ma1[0],5),
"\n ma2[] : ",DoubleToString(ma2[0],5),
"\n ma3[] : ",DoubleToString(ma3[0],5),
"\n ma4[] : ",DoubleToString(ma4[0],5),
"\n ExtMapBuffer1[] : ",DoubleToString(ExtMapBuffer1[0],4),
"\n ExtMapBuffer2[] : ",DoubleToString(ExtMapBuffer2[0],4)
);
//---

//--- Rückgabewert von prev_calculated für den nächsten Aufruf
return(rates_total);
}
void OnDeinit(const int reason)
{
Kommentar(");
}
//+------------------------------------------------------------------+

 

Einen guten Tag an alle.

Ich habe eine Bitte, diesen Indikator für MT5 neu zu erstellen, weil ich ihn nur im Handel verwende.

Dateien:
 

Ich weiß nicht, wo zu schreiben, aber vielleicht können Sie mir helfen, diese Frage zu lösen: In MT4 kopieren Sie einfach einen EA in den Ordner Experten und laufen Strategie-Tester, alles sieht gut aus und funktioniert, aber in MT5 kann ich nicht verstehen, wie man einen EA zu testen, werfe ich in den Ordner Experten, mit der Erweiterung .Ich habe sie kopiert und an anderer Stelle eingefügt. Können Sie mir sagen, wie man einen EA kopiert und wo man ihn richtig einfügt?

 
ZahvatkiN:

Ich weiß nicht, wo zu schreiben, aber vielleicht können Sie mir helfen, dieses Problem zu lösen: In MT4 kopieren Sie einfach einen EA in den Ordner Experten und führen Sie Strategie-Tester, alles sieht gut aus und funktioniert, aber in MT5 kann ich nicht verstehen, wie man einen EA zu testen, werfe ich in den Ordner Experten, mit der Erweiterung .Ich habe sie kopiert und an anderer Stelle eingefügt. Können Sie mir sagen, wie man einen EA richtig kopiert und wo man ihn einfügt?

Sie können sowohl im Tester als auch in Echtzeit einen EA mit der Erweiterung ex5 oder der kompilierten Version ausführen,

Wenn Sie eine mq5-Datei in MetaEditor öffnen, drücken Sie F7 und Sie werden zufrieden sein. Der Quellcode mit der Erweiterung mq5 ist nur eine Testinformation, um den Byte-Code (ausführbaren Code) zu erhalten, müssen Sie ihn kompilieren.

 

Urain danke für die Antwort, nur ich weiß alle Grundlagen, ich kompiliert und tat alles nach der Anleitung, obwohl ich es wusste, aber wieder einmal habe ich es gelesen, ich weiß nicht, was falsch sein könnte, hier sind 2 Skins beigefügt. Ich habe MT5 von dieser Website heruntergeladen.

Dateien:
1__17.jpg  420 kb
2__10.jpg  117 kb
 
ZahvatkiN:

Urain danke für die Antwort, nur ich weiß alle Grundlagen, ich kompiliert und tat alles nach der Anleitung, obwohl ich es wusste, aber wieder einmal las ich es, ich weiß nicht einmal, was falsch sein könnte, hier sind 2 Skins beigefügt. Ich habe MT5 von dieser Website heruntergeladen.

Ich möchte meine Kopie von grr-al.ex5 im richtigen Ordner ablegen und MT5 neu laden, nachdem ich mich vergewissert habe, dass sie sich im richtigen Ordner befindet.

Übrigens, ist MT5 der einzige auf dem Computer?

 

Urain hat es endlich herausgefunden, die Sache ist die, dass EAs nicht in den Ordner C:\Program Files\MT5\MQL5\Experts kopiert werden, sondern nach C:\Users\Dyma\AppData\Roaming\MetaQuotes\Terminal\8B052D0699A0083067EBF3A36123603B\MQL5\Experts, ich weiß nicht, warum dieser Ärger, diese verdammten Programmierer)))

Grund der Beschwerde: