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

 
Sergey Gritsay:
R Welche Objekte unterscheiden sich nicht? und was bedeutet es, wenn man die Art des Objekts ändert, dass die Eigenschaften zusammenbrechen?

Das bedeutet, dass, wenn ich in meinem aktuellen Code das horizontale Linienobjekt durch eine Trendlinie oder eine vertikale Linie auf der aktuellen Kerze ersetze, ein Objekt immer noch funktioniert und unabhängig von den Parametern des anderen Objekts rot sein wird.

Der Zweck all dieser Manipulationen ist es, den Indikator und den EA zu kombinieren, jetzt versuche ich, den Fehler selbst zu finden.

d.h. es werden ganz normal Züge erstellt und gelöscht, aber ich brauche blau, wenn ich kaufe, und nicht rot, wenn ich trotzdem verkaufe.
 

Grüße. Können Sie mir sagen, was der Klammereintrag () nach "double bb" ist und was der Klammereintrag {} für"double bb(int buff,int shift)" in diesem Fall ist?

double bb(int buff,int shift){ double val = iCustom(_Symbol,0,"BvsB",BB_Period,buff,shift);return(val);}  


Auch hier. Kaufen und Verkaufen haben den Typ bool. Wie kann ich herausfinden, was ihnen bei der Verwendung von "< , &&, >" zugewiesen wird? ?

void Entry()
{  
  if(!UseHTF){
  Buy  = (bb(0,1) < bb(1,1) && bb(0,2) > bb(1,2));
  Sell = (bb(0,1) > bb(1,1) && bb(0,2) < bb(1,2));}
  
  if(UseHTF){
  Buy  = (bbh(0,1) < bbh(1,1) && bb(0,1) < bb(1,1) && bb(0,2) > bb(1,2));
  Sell = (bbh(0,1) > bbh(1,1) && bb(0,1) > bb(1,1) && bb(0,2) < bb(1,2));}  
  
 
Andrey Sokolov:

Grüße. Können Sie mir sagen, was der Klammereintrag () nach "double bb" ist und was der Klammereintrag {} für"double bb(int buff,int shift)" in diesem Fall ist?

double bb(int buff,int shift){ double val = iCustom(_Symbol,0,"BvsB",BB_Period,buff,shift);return(val);}  


Auch hier. Kaufen und Verkaufen haben den Typ bool. Wie kann ich herausfinden, was ihnen bei der Verwendung von "< , &&, >" zugewiesen wird? ?

void Entry()
{  
  if(!UseHTF){
  Buy  = (bb(0,1) < bb(1,1) && bb(0,2) > bb(1,2));
  Sell = (bb(0,1) > bb(1,1) && bb(0,2) < bb(1,2));}
  
  if(UseHTF){
  Buy  = (bbh(0,1) < bbh(1,1) && bb(0,1) < bb(1,1) && bb(0,2) > bb(1,2));
  Sell = (bbh(0,1) > bbh(1,1) && bb(0,1) > bb(1,1) && bb(0,2) < bb(1,2));}  
  


1. Es ist eine Funktion. In Klammern - Parameter, die beim Aufruf der Funktion an diese übergeben werden. In diesem Fall - Nummer des Indikatorpuffers und Offset des Balkens, von dem wir die Indikatorwerte erhalten.

2) Boolesche Variablen werden mit dem Ergebnis des gesamten logischen Ausdrucks nach dem Zuweisungszeichen (=) belegt. Wenn alle Bedingungen erfüllt sind, wird die Variable als wahr eingestuft, andernfalls als falsch.
 
Artyom Trishkin dankt Ihnen
 
trader781:

Das bedeutet, dass, wenn ich in meinem aktuellen Code das horizontale Linienobjekt durch eine Trendlinie oder eine vertikale Linie auf der aktuellen Kerze ersetze, ein Objekt immer noch funktioniert und unabhängig von den Parametern des anderen Objekts rot sein wird.

Der Zweck all dieser Manipulationen ist es, den Indikator und die EA zu kombinieren, jetzt bin ich versucht, den Fehler selbst zu finden, aufgrund dessen, was es verursacht.

d.h. er bewegt und löscht sich ganz normal, aber ich brauche blau, wenn ich kaufe, und nicht rot, wenn ich verkaufe, egal wie.
bedeutet dies, dass Sie die Parameter des grafischen Objekts erneut falsch eingestellt haben
 
Sergey Gritsay:
Sie haben also die Parameter des grafischen Objekts wieder falsch eingestellt.

höchstwahrscheinlich.

Es scheint lehrbuchmäßig zu sein, aber das Ergebnis ist nicht dasselbe, deshalb habe ich den Code hier eingestellt.

 
Hallo!
Ich kann nicht verstehen, warum es eine globale Client-Terminal-Variable im Terminal gibt, wenn ich sie nicht erstellt habe(GlobalVariablesTotal() zeigt "1"). Vielleicht gibt es eine Voreinstellung des Terminals? Warum werden dann, wenn ich den Namen wissen will und die Funktion GlobalVariableName(0) oder GlobalVariableName(1) aufrufe, keine Namen angezeigt? Bitte sagen Sie mir, wo das Problem liegen könnte?
 

Grüße. Ich benötige die Daten der roten Linie des Indikators, die nicht über das Preisdiagramm gelegt wird, sondern separat darunter angezeigt wird. Ich versuche, es wie bei den Indikatoren zu machen, die dem Diagramm überlagert sind, aber irgendetwas ist falsch. Wo liege ich falsch?

Signal=iCustom(NULL, 0,"ytg_Def_RSI_3_Symbol", RSI_1_Period, RSI_2_Period, applied_price, ma_period, ma_method, 1,shift);

Hier ist der Indikator selbst

#property copyright "Yuriy Tokman"
#property link      "yuriytokman@gmail.com"

//ну если проще запулить в одно окно три мульти с настройками
//1 EUR-USD
//2 EURGBP
//3 EURJPY
//если все три в состоянии перекупленности  значит Бай и наоборот

#property indicator_separate_window
#property  indicator_buffers 6
#property   indicator_color1  Green
#property   indicator_color2  Red
#property   indicator_color3  Yellow
#property indicator_level1 0
#property indicator_level2 5
#property indicator_level3 -5

extern string Symbol_1   = "EURUSD";
extern string Symbol_2   = "EURGBP";
extern string Symbol_3   = "EURJPY";

extern int RSI_1_Period  = 14;//период первого индикатора РСИ
extern int RSI_2_Period  = 28;//период второго индикатора РСИ
extern int applied_price = 0;//используемая цена  0-6
extern int ma_period     = 14;//период сглаживания
extern int ma_method     = 0;//метод сглаживания  0-3

double       buf[];
double    MA_buf[];
double      buf2[];
double   MA_buf2[];
double      buf3[];
double   MA_buf3[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(0, buf);
  
   SetIndexStyle(4,DRAW_NONE);
   SetIndexBuffer(4,MA_buf);
  
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(1, buf2);
  
   SetIndexStyle(3,DRAW_NONE);
   SetIndexBuffer(3,MA_buf2);  
    
   SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(2, buf3);
  
   SetIndexStyle(5,DRAW_NONE);
   SetIndexBuffer(5,MA_buf3);
  
   IndicatorShortName("ytg_Def_RSI_3_Symbol");
   Comment("yuriytokman@gmail.com");  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   Comment("");  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//----
   double RSI_1, RSI_2, RSI_12, RSI_22, RSI_13, RSI_23;
  
   int limit;
   int counted_bars=IndicatorCounted();
  
   if(counted_bars<0) return(-1);

   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;

   for(int i=limit; i>=0; i--)
   {
     RSI_1 = iRSI(Symbol_1,0,RSI_1_Period,applied_price,i);
     RSI_2 = iRSI(Symbol_1,0,RSI_2_Period,applied_price,i);

     MA_buf[i] = (RSI_1-RSI_2);
    
    
     RSI_12 = iRSI(Symbol_2,0,RSI_1_Period,applied_price,i);
     RSI_22 = iRSI(Symbol_2,0,RSI_2_Period,applied_price,i);

     MA_buf2[i] = (RSI_12-RSI_22);
    
    
     RSI_13 = iRSI(Symbol_3,0,RSI_1_Period,applied_price,i);
     RSI_23 = iRSI(Symbol_3,0,RSI_2_Period,applied_price,i);

     MA_buf3[i] = (RSI_13-RSI_23);          
   }
   for(i=limit; i>=0; i--)
   {
     buf[i] = iMAOnArray(MA_buf,0,ma_period,0,ma_method,i);
    
     buf2[i] = iMAOnArray(MA_buf2,0,ma_period,0,ma_method,i);    
    
     buf3[i] = iMAOnArray(MA_buf3,0,ma_period,0,ma_method,i);    
   }  
  
  
//----
   return(0);
  }
 
Andrey Sokolov:

Grüße. Ich benötige die Daten der roten Linie des Indikators, die nicht über das Preisdiagramm gelegt wird, sondern separat darunter angezeigt wird. Ich versuche, es wie bei den Indikatoren zu machen, die dem Diagramm überlagert sind, aber irgendetwas ist falsch. Wo liege ich falsch?

Signal=iCustom(NULL, 0,"ytg_Def_RSI_3_Symbol", RSI_1_Period, RSI_2_Period, applied_price, ma_period, ma_method, 1,shift);

Hier ist der Indikator selbst

extern string Symbol_1   = "EURUSD";
extern string Symbol_2   = "EURGBP";
extern string Symbol_3   = "EURJPY";

extern int RSI_1_Period  = 14;//период первого индикатора РСИ
extern int RSI_2_Period  = 28;//период второго индикатора РСИ
extern int applied_price = 0;//используемая цена  0-6
extern int ma_period     = 14;//период сглаживания
extern int ma_method     = 0;//метод сглаживания  0-3

Sie öffnen das Fenster der Eingabeparameter und listen sie iniCustom der Reihe nach auf.

Es fehlen die ersten drei Zeilenwerte:

 
Vitaly Muzichenk, ich danke Ihnen.