[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 704

 
ToLik_SRGV:

Auch Odysseus, im vorigen Beispiel hast du es so gemacht:

Und jetzt ist es so:

Sie haben nichts gelöscht, oder bilde ich mir das nur ein?
Hier ist der Orinalcode
 IndicatorBuffers(7);
   SetIndexBuffer(0, MACDBuffer);
   SetIndexBuffer(1, SignalBuffer);
   SetIndexBuffer(2, FastEMABuffer);
   SetIndexBuffer(3, SlowEMABuffer);
   SetIndexBuffer(4, SignalEMABuffer);
   SetIndexBuffer(5, Buffer1);
   SetIndexBuffer(6, Buffer2);
   SetIndexStyle(0, DRAW_NONE);
   SetIndexStyle(1, DRAW_LINE,EMPTY);
  SetIndexStyle(2, DRAW_LINE,EMPTY,2 );
   SetIndexStyle(3, DRAW_NONE,EMPTY,2);
   SetIndexStyle(4, DRAW_NONE);
   SetIndexStyle(5, DRAW_HISTOGRAM,EMPTY, 2);
   SetIndexStyle(6, DRAW_HISTOGRAM,EMPTY, 2);
   SetIndexDrawBegin(0, SlowEMA);
   SetIndexDrawBegin(1, SlowEMA);
   IndicatorShortName("ZeroLag MACD Colored(" + FastEMA + "," + SlowEMA + "," + SignalEMA + ")");
   SetIndexLabel(0, "MACD");
   SetIndexLabel(1, "Signal");
   SetIndexLabel(5, "MACD");
   SetIndexLabel(6, "MACD");
 
odiseif:
Hier ist der endgültige Code
Entschuldigung, mein Fehler. ..... ist das Original.
//+------------------------------------------------------------------+
//|                                                 ZeroLag MACD.mq4 |
//|                                                               RD |
//|                                                 marynarz15@wp.pl |
//| Colored by SVK © 2009.                                           |
//+------------------------------------------------------------------+
#property copyright "RD"
#property link      "marynarz15@wp.pl"
//----
#property indicator_separate_window
#property  indicator_buffers 7
#property indicator_color1 Black
#property indicator_color2 Blue
#property indicator_color3 Black
#property indicator_color4 Black
#property indicator_color5 Black
#property indicator_color6 Lime
#property indicator_color7 Red

//---- input parameters
extern int FastEMA = 12;
extern int SlowEMA = 26;
extern int SignalEMA = 9;

//---- buffers
double MACDBuffer[];
double SignalBuffer[];
double FastEMABuffer[];
double SlowEMABuffer[];
double SignalEMABuffer[];

double Buffer1[];
double Buffer2[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorBuffers(7);
   SetIndexBuffer(0, MACDBuffer);
   SetIndexBuffer(1, SignalBuffer);
   SetIndexBuffer(2, FastEMABuffer);
   SetIndexBuffer(3, SlowEMABuffer);
   SetIndexBuffer(4, SignalEMABuffer);
   SetIndexBuffer(5, Buffer1);
   SetIndexBuffer(6, Buffer2);
   SetIndexStyle(0, DRAW_NONE);
   SetIndexStyle(1, DRAW_LINE,EMPTY);
   SetIndexStyle(2, DRAW_NONE);
   SetIndexStyle(3, DRAW_NONE);
   SetIndexStyle(4, DRAW_NONE);
   SetIndexStyle(5, DRAW_HISTOGRAM);
   SetIndexStyle(6, DRAW_HISTOGRAM);
   SetIndexDrawBegin(0, SlowEMA);
   SetIndexDrawBegin(1, SlowEMA);
   IndicatorShortName("ZeroLag MACD Colored(" + FastEMA + "," + SlowEMA + "," + SignalEMA + ")");
   SetIndexLabel(0, "MACD");
   SetIndexLabel(1, "Signal");
   SetIndexLabel(5, "MACD");
   SetIndexLabel(6, "MACD");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   double prev,current;
   int counted_bars = IndicatorCounted();
   if(counted_bars < 0) 
       return(-1);
   if(counted_bars > 0) 
       counted_bars--;
   limit = Bars - counted_bars;
   double EMA, ZeroLagEMAp, ZeroLagEMAq;
   for(int i = 0; i < limit; i++)
     {
       FastEMABuffer[i] = 100.0*iMA(NULL, 0, FastEMA, 0, MODE_EMA, PRICE_CLOSE, i);
       SlowEMABuffer[i] = 100.0*iMA(NULL, 0, SlowEMA, 0, MODE_EMA, PRICE_CLOSE, i);
     }
   for(i = 0; i < limit; i++)
     {
        EMA = iMAOnArray(FastEMABuffer, Bars, FastEMA, 0, MODE_EMA, i);
        ZeroLagEMAp = FastEMABuffer[i] + FastEMABuffer[i] - EMA;
        EMA = iMAOnArray(SlowEMABuffer, Bars, SlowEMA, 0, MODE_EMA, i);
        ZeroLagEMAq = SlowEMABuffer[i] + SlowEMABuffer[i] - EMA;
        MACDBuffer[i] = ZeroLagEMAp - ZeroLagEMAq;
        FastEMABuffer[i] = 0.0;
        SlowEMABuffer[i] = 0.0;
     }
   for(i = 0; i < limit; i++)
       SignalEMABuffer[i] = iMAOnArray(MACDBuffer, Bars, SignalEMA, 0, MODE_EMA, i);
   for(i = 0; i < limit; i++)
     {
       EMA = iMAOnArray(SignalEMABuffer, Bars, SignalEMA, 0, MODE_EMA, i);
       SignalBuffer[i] = SignalEMABuffer[i] + SignalEMABuffer[i] - EMA;
       SignalEMABuffer[i] = 0.0;
     }
//---- dispatch values between 2 buffers
   bool up=true;
   for(i=limit-1; i>=0; i--)
     {
      current=MACDBuffer[i];
      prev=MACDBuffer[i+1];
      if(current>prev) up=true;
      if(current<prev) up=false;
      if(!up)
        {
         Buffer2[i]=current;
         Buffer1[i]=0.0;
        }
      else
        {
         Buffer1[i]=current;
         Buffer2[i]=0.0;
        }
     }     
   return(0);
  }
//+------------------------------------------------------------------+
 
ToLik_SRGV:

Sergey, ich verstehe nicht ganz, was genau Sie geändert haben, denn unter der von Ihnen angegebenen Adresse müssen Sie sich registrieren, um den Quellcode von CCI Filter zu sehen.
Ich habe nur einen Fehler gefunden: iWPR hat keinen Parameter applied_price, ist also korrekt:


Alle, danke, jetzt funktioniert rrrrrr!!!

 
ToLik_SRGV:

Im Prinzip gibt es keinen Unterschied.
Probieren Sie meine Funktion aus, sie ist ganz einfach: Übergeben Sie "medj" und das gewünschte Schleppnetz als Parameter.
Diese Funktion sollte zu Beginn an einer beliebigen Stelle aufgerufen werden, solange sie mit jedem Tick beginnt.

Offensichtlich müssen die Aufträge unterschiedliche Schieberegler haben.

Verstanden:
Ich verstehe, Sie definieren eine Variable ro am Anfang der Funktion, aber Sie weisen sie nirgends zu, d.h. sie ist 0.

ToLik_SRGV, Danke, es funktioniert immer noch nicht richtig. Das heißt, ich habe den falschen Ort, um das Problem zu verstecken. Trotzdem vielen Dank, ich werde es selbst herausfinden.Roger,
 

Wie immer hier ))) Wie immer an die guten Leute )))

Was ist das Problem, ich kann es nicht herausfinden. Probleme mit globalen Variablen. Ich mache es im Indikatorcode:

string Global="Global"; //имя глобальной переменной
int param; // параметр глобальной переменной
int init()
  {
  GlobalVariablesDeleteAll(NULL); 
   return(0);
  }
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
int start()
  { //привожу простой пример
  double bar1= iMA(Symbol(),PERIOD_M5,13,0,MODE_SMMA,PRICE_TYPICAL,0);
  double bar2= iOpen(Symbol(),PERIOD_M5,0);
   if (bar1>bar2){ param = 1; GlobalVariableSet(Global,param); }
   if (bar1<bar2){ param = 2; GlobalVariableSet(Global,param); } 

//----
   return(0);
  }

Dann versuche ich, den Wert einer globalen Variablen von einem Expert Advisor mit folgendem Code zu erhalten

string Global="Global";  
int param;

int start()
  {
  int i= GlobalVariableSet(Global,param);
  Print (i);   // Здесь он мне и выводит всякую лабуду вида : 1279217736


   return(0);
  }
Was mache ich falsch? Ich sollte entweder 1 oder 2 Parameterwerte erhalten, aber ich bekam ..... Und warum muss ich den Namen und die Variable am Anfang des EA-Codes noch einmal schreiben? Sie scheinen als Globals zu existieren, aber die Kompilierung funktioniert nicht ohne sie.
 

Kann ich zwei BUY/SELL-Positionen gleichzeitig eröffnen?

Ich habe es versucht - ich habe einen einfachen Code geschrieben, der KAUF- und VERKAUFS-Positionen gleichzeitig öffnet, verbunden mit EUR/USD in Echtzeit, sie scheinen zu öffnen.

Aber das war ein Demo-Konto und Strategie-Tester, was über in Echtzeit, wird mein Brokerage-Unternehmen etwas dagegen?

Ich habe es noch nie versucht, ich glaube nicht, dass ich diese Art von Experiment begonnen habe.

 
Infinity:...
Sie benötigen eine weitere Funktion, um den Wert der globalen Variablen zu lesen :)))
int i= GlobalVariableGet(Global);
 
Lim1:

Kann ich zwei BUY/SELL-Positionen gleichzeitig eröffnen?

Ich habe es versucht - ich habe einen einfachen Code geschrieben, der KAUF- und VERKAUFS-Positionen gleichzeitig öffnet, verbunden mit EUR/USD in Echtzeit, sie scheinen zu öffnen.

Aber das war ein Demo-Konto und Strategie-Tester, was über in Echtzeit, wird mein Brokerage-Unternehmen etwas dagegen?

Ich habe das noch nie ausprobiert, und ich glaube nicht, dass ich so etwas im realen Handel begonnen habe.

Öffnen... während sie dich... :)
Im Allgemeinen - fragen Sie das Support-Team Ihres DC
 
ToLik_SRGV:
Um den Wert von globalen Variablen zu lesen, benötigen wir eine weitere Funktion :)))

So klar, in das Buch zu schauen und nicht zu sehen, funktioniert, danke! Weiter geht's) mit Fragen. Alle über die gleichen globalen Variablen. Ich habe dem Indikator die folgende Bedingung hinzugefügt:

string EUR="EURUSD"; //имя глобальной переменной
string GBP="GBPUSD"; //имя глобальной переменной
string valuta="";
int param; // параметр глобальной переменной
int init()
  {
  GlobalVariablesDeleteAll(NULL); 
   return(0);
  }
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
int start()
  { string symb = Symbol();  //Здесь узнаю на какой валюте стоит индикатор
    
    if (symb==EUR) {valuta=EUR;}   // здесь сравнивая ,в переменную занощу имя глобальной переменной
    if (symb==GBP) {valuta=GBP;}   // которую следует использовать
  //привожу простой пример
  double bar1= iMA(Symbol(),PERIOD_M5,13,0,MODE_SMMA,PRICE_TYPICAL,0);
  double bar2= iOpen(Symbol(),PERIOD_M5,0);
   if (bar1>bar2){ param = 1; GlobalVariableSet(valuta,param); }   // а здесь присваиваю параметр глобальной переменной
   if (bar1<bar2){ param = 2; GlobalVariableSet(valuta,param); } 
   return(0);
  }

Ich möchte festlegen, welcher globalen Variablen ein Wert zugewiesen werden soll, je nachdem, auf welcher Währung der Indikator basiert.

Ich verstehe, dass in der globalen Variablen GlobalVariableSet(valuta,param) der Name (valuta) den Wert enthalten sollte, der ihr oben zugewiesen wurde

die globale Variable im Code des Expert Advisors erneut aufrufen

string valuta="valuta";

int i= GlobalVariableGet(valuta); // aber ich erhalte den Wert nicht, .... Möglicherweise ist es unmöglich, den Namen der globalen Variablen auf diese Weise zu ändern?

Ich glaube, ich habe es herausgefunden - es stellt sich heraus, dass ich eine globale Variable mit diesem Namen nicht aufrufen kann, aber wenn ich den Stringnamen GlobalVariableGet("EURUSD") registriere, funktioniert es).

 

Erstens, von der Hilfe

double GlobalVariableGet( string name)

Gibt den Wert der vorhandenen globalen Variablen zurück oder 0 im Falle eines Fehlers. Rufen Sie GetLastError() auf, um Fehlerinformationen zu erhalten.


Können Sie den Inhalt des GV sehen, aber nicht abrufen?