[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 295

 
isCloseLastPosByStop - Gibt das Flag zum Schließen der letzten Position per Stop zurück
isCloseLastPosByTake - Gibt das Flag zum Schließen der letzten Position per Take Profit zurück.
 

Hilfe zur Behebung, Standard Stockistik, hat eine Meldung hinzugefügt, die nicht richtig funktioniert, kann nicht herausfinden, wo der Fehler liegt....

Danke

//+------------------------------------------------------------------+
//|                                                   Stochastic.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//+------------------------------------------------------------------+

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red
#property  indicator_width1 1
#property  indicator_width2 1
#property indicator_level1 20
#property indicator_level2 50
#property indicator_level3 80
#property indicator_levelcolor DimGray
//---- input parameters
//+------------------------------------------------------------------+
extern bool Alerts  = true;
//+------------------------------------------------------------------+
extern int AlertBar = 1; 
//+------------------------------------------------------------------+
extern int KPeriod  = 5;
//+------------------------------------------------------------------+
extern int DPeriod  = 2;
//+------------------------------------------------------------------+
extern int Slowing  = 3;
//+------------------------------------------------------------------+
extern int MAMethod = 3; // 0=SMA,1=EMA,2=SSMA,3=LWMA
//+------------------------------------------------------------------+
//-------------------------------------------------------------------+
//-----
datetime LastAlertTime = -333;
//---- Buffers
double MainBuffer[];
double SignalBuffer[];
double HighesBuffer[];
double LowesBuffer[];
//----
int    MAMode;
string strMAType;
//----
int draw_begin1=0;
int draw_begin2=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
  string short_name;
//---- 2 additional buffers are used for counting.
  IndicatorBuffers(4);
//---- indicator lines
  SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1);
  SetIndexBuffer(0,MainBuffer);
  SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);
  SetIndexBuffer(1,SignalBuffer);
//----
  SetIndexBuffer(2,HighesBuffer);
  SetIndexBuffer(3,LowesBuffer);
//----
  switch(MAMethod)
  {
    case 1:  strMAType="EMA";  MAMode=MODE_EMA;  break;
    case 2:  strMAType="SMMA"; MAMode=MODE_SMMA; break;
    case 3:  strMAType="LWMA"; MAMode=MODE_LWMA; break;
    default: strMAType="SMA";  MAMode=MODE_SMA;  break;
  }
//---- name for DataWindow and indicator subwindow label
  short_name="Stochastic ("+KPeriod+","+DPeriod+","+Slowing+","+strMAType+")";
  IndicatorShortName(short_name);
  SetIndexLabel(0,short_name);
  SetIndexLabel(1,"Signal");
//----
  draw_begin1=KPeriod+Slowing;
  draw_begin2=draw_begin1+DPeriod;
  SetIndexDrawBegin(0,draw_begin1);
  SetIndexDrawBegin(1,draw_begin2);
//----
  return(0);
}
//+------------------------------------------------------------------+
//| Stochastic oscillator                                            |
//+------------------------------------------------------------------+
int start()
{
  int i,k;
  int counted_bars=IndicatorCounted();
  double price;
//----
  if(Bars<=draw_begin2) return(0);
//---- initial zero
  if(counted_bars<1)
  {
    for(i=1;i<=draw_begin1;i++) MainBuffer[Bars-i]=0;
    for(i=1;i<=draw_begin2;i++) SignalBuffer[Bars-i]=0;
  }
//---- minimums counting
  i=Bars-KPeriod;
  if(counted_bars>KPeriod) i=Bars-counted_bars-1;
  while(i>=0)
  {
    double min=1000000;
    k=i+KPeriod-1;
    while(k>=i)
    {
      price=Low[k];
      if(min>price) min=price;
      k--;
    }
    LowesBuffer[i]=min;
    i--;
  }
//---- maximums counting
  i=Bars-KPeriod;
  if(counted_bars>KPeriod) i=Bars-counted_bars-1;
  while(i>=0)
  {
    double max=-1000000;
    k=i+KPeriod-1;
    while(k>=i)
    {
      price=High[k];
      if(max<price) max=price;
      k--;
    }
    HighesBuffer[i]=max;
    i--;
  }
//---- %K line
  i=Bars-draw_begin1;
  if(counted_bars>draw_begin1) i=Bars-counted_bars-1;
  while(i>=0)
  {
    double sumlow=0.0;
    double sumhigh=0.0;
    for(k=(i+Slowing-1);k>=i;k--)
    {
      sumlow+=Close[k]-LowesBuffer[k];
      sumhigh+=HighesBuffer[k]-LowesBuffer[k];
    }
    if(sumhigh==0.0) MainBuffer[i]=100.0;
    else MainBuffer[i]=sumlow/sumhigh*100;
    i--;
  }
//---- last counted bar will be recounted
  if(counted_bars>0) counted_bars--;
  int limit=Bars-counted_bars;
//---- signal line is simple movimg average
  for(i=0; i<limit; i++)
  SignalBuffer[i]=iMAOnArray(MainBuffer,Bars,DPeriod,0,MAMethod,i);
//+------------------------------------------------------------------+ 
  if(Alerts)
  {
    if(AlertBar >= 0 && Time[0] > LastAlertTime)
    {
      if(MainBuffer[i+AlertBar] > SignalBuffer[i+AlertBar] && MainBuffer[i+AlertBar+1] <= SignalBuffer[i+AlertBar+1])
      {
        Alert("Stochastic BULL! ",Symbol()," TF: ",Period());
      }
      if(MainBuffer[i+AlertBar] < SignalBuffer[i+AlertBar] && MainBuffer[i+AlertBar+1] >= SignalBuffer[i+AlertBar+1])
      { 
        Alert("Stochastic BEAR! ",Symbol()," TF: ",Period());
      }
    }
    LastAlertTime = Time[0];
  }
//----
  return(0);
}
//+------------------------------------------------------------------+
 

Ich möchte eine Multi-MA machen. D.h. es sollten 2 MAs auf dem Chart sichtbar sein - einer für das aktuelle Instrument, der andere für das zweite Instrument:

Es stellt sich die Frage, wie sie miteinander verbunden werden können, da die Volatilität und die Anzahl der Punkte bei jedem Instrument unterschiedlich sind. Mir fällt nichts Nützliches ein.... Hilfe! :)

 
Cmu4:

Ich möchte eine Multi-MA machen. D.h. es sollten 2 MAs auf dem Chart sichtbar sein - eine für das aktuelle Instrument und eine weitere für das zweite Instrument:

Es stellt sich die Frage, wie sie miteinander verbunden werden können, da die Volatilität und die Anzahl der Punkte bei jedem Instrument unterschiedlich sind. Mir fällt nichts Nützliches ein.... Hilfe! :)

Ich hoffe, das Unterfenster stellt kein Problem dar.

Je nach Aufgabe können Sie einen MA mit einer großen Periode auf beiden Charts als Grundlage nehmen.

Der Arbeits-MA hat zum Beispiel eine Dauer von 12 Jahren. Für das Hauptsymbol zeichnen wir es so, wie es ist.

Für die anderen Symbole wird die Differenz zwischen der MA 12 und der MA 60 ermittelt; diese Differenz, multipliziert mit dem Koeffizienten, wird zur MA 60 des Hauptsymbols addiert.

 
artmedia70:

Und zur Klarstellung? Soll die erste Position aus den offenen (auf dem Markt befindlichen) Positionen oder aus den bereits geschlossenen Positionen ausgewählt werden? Was ist, wenn die erste Stelle vor drei Jahren eröffnet wurde? Müssen sie ausgewählt werden?

Und wofür ist das alles gut?

Aus den offenen Positionen die erste auswählen.

Es ist notwendig, den Abstand in Pips zwischen der ersten offenen Position und der letzten offenen Position zu überprüfen.

 
forexnew:
Ich habe versucht, mit der Funktion IsConnected() - keine Wirkung. Haben Sie einen Rat?

Vielleicht sehen, was sonst noch IsTradeAllowed() zurückgibt?

Bitte um Hilfe. Ich versuche, einen Trend anhand von zwei Punkten zu erstellen, die mit den Balken für N Balken ab dem letzten Punkt verbunden sind. D.h. eingehend - Zeitpreis des ersten und zweiten Punktes, und N ausgedrückt in Anzahl der Balken im Voraus (Kontrollkästchen Balken = false). Wenn der zweite Punkt, nehmen wir an, auf dem Balken 1 des aktuellen Balkens 0 liegt und ich von ihm 10 Balken in der Zukunft ziehen muss, wie kann ich dann die Zeit und den Preis des Balkens aus der Zukunft berechnen?

 

Bitte um Hilfe.

Wie finde ich die Uhrzeit High[3] heraus?

 
alex11230:

Bitte um Hilfe.

Wie finde ich die Uhrzeit High[3] heraus?


Zeit[3]
 
Roll:

Versuchen Sie es:
Vielen Dank :)
 

Wie man es darstellt:

/

in String?

Zum Beispiel:

string path=TerminalPath()+"/logs/"+tekTime+".log";

gibt einen Fehler, und wenn Sie den Schrägstrich "/" entfernen

string path=TerminalPath()+"logs "+tekTime+".log";

- kein Fehler.

Grund der Beschwerde: