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

 
Artyom Trishkin:

Ehrlich gesagt habe ich diese SB-Ressourcen noch nie genutzt. Aber was hindert Sie daran, in der SB nachzuschauen, wo und mit welchen Methoden dort die Farben festgelegt werden. Was Sie in der Auflistung gezeigt haben:

- sind Objektnamen - CPanel, CEdit, CBmpButton und CWndClient Klassen.

Und Sie müssen die Namen der Mitglieder dieser Klassen finden, in denen die Farben gespeichert sind und mit welchen Methoden sie initialisiert oder geändert werden können.

Und wahrscheinlich müssen Sie sie zuerst initialisieren und dann das Objekt selbst erstellen.

Die Farben werden in Defines definiert und dann werden die Objekte mittels ObjectSetInteger() eingefärbt. Im Moment male ich auch direkt mit dieser Methode. Aber ich würde es gerne über OOP versuchen. Wenn es keine separate öffentliche Methode gibt, die geändert werden kann, gibt es keine Möglichkeit, an das private Mitglied heranzukommen. Ich kenne mich mit Vererbung und virtuellen Methoden noch nicht so gut aus, ich bin noch am "Schwimmen" und studiere das Thema. Ok, ich werde versuchen, den Service-Desk zu bitten, eine öffentliche Methode für die Einfärbung zu erstellen, und wenn es möglich ist, dies auf andere Weise zu tun, werden sie mir vielleicht sagen, wie.
 
LRA:
Klicken Sie auf die Fehlermeldung. Der Cursor zeigt den Variablennamen an. Sie muss erklärt werden
Ich danke Ihnen!
 
Kedrov:
Ich danke Ihnen!

Sie sollten keinen dekompilierten Code in diesem Forum veröffentlichen. Ich verstehe, dass Sie keinen Code gepostet haben, sondern nur ein Bild. Aber es bedeutet, dass Sie mit gestohlenen Softwareprodukten arbeiten. Davon wird hier dringend abgeraten - es ist... wie soll ich es sagen... ein Verstoß gegen die Gemeinschaftsethik. Hier auf dem Forum und Ressource Löwenanteil der Nutzer des Forums sind Programmierer - wir schreiben unseren eigenen Code oder verwenden öffentliche Werke unserer Kollegen. Aber Sie verwenden den gestohlenen Code eines anderen und stellen ihn um (vielleicht auch den von jemand anderem hier). Im Allgemeinen ist es keine gute Idee, hier mit den Aktivitäten zu beginnen.

 
Vasiliy Pushkaryov:
Farben werden in Defines definiert, dann werden Objekte mit ObjectSetInteger()-Funktionen eingefärbt. Im Moment male ich auch direkt mit dieser Methode. Aber ich würde es gerne über OOP versuchen. Wenn es keine separate öffentliche Methode gibt, die geändert werden kann, gibt es keine Möglichkeit, an das private Mitglied heranzukommen. Ich kenne mich mit Vererbung und virtuellen Methoden noch nicht so gut aus, ich bin noch am "Schwimmen" und studiere das Thema. Ok, ich werde versuchen, im Service-Desk zu fragen, um eine öffentliche Methode für die Färbung zu machen, und wenn es möglich ist, auf andere Weise, vielleicht werden sie mir sagen, wie.

Kopieren Sie diese Klasse vorübergehend in Ihren Ordner "Include\your_folder" und fügen Sie dieKlassenvariablen ein, die Sie zum Speichern der Farben benötigen, sowie öffentliche Methoden, um sie zu setzen und zurückzugeben.

Außerdem können Sie tun, was Sie ohnehin schon brauchen. Minus - wenn Sie die SB in der ursprünglichen Klasse aktualisieren, kann es zu Verfeinerungen kommen, und Sie müssen die benötigten Methoden erneut in die aktualisierte Klasse kopieren und einfügen.

... Nun, es ist seltsam, dass es keine Möglichkeit gibt, die Farbe leise zu ändern - ohne zu definieren ...

 

Bitte helfen Sie mir - wie kann ich schnell Informationen über das Volumen (Anzahl der Lots insgesamt) aller offenen Positionen für alle Instrumente erhalten? Bitte teilen Sie die Funktion mit.

 
Aleksey Vyazmikin:

Bitte helfen Sie mir - wie kann ich schnell Informationen über das Volumen (Anzahl der Lots insgesamt) aller offenen Positionen für alle Instrumente erhalten? Bitte teilen Sie die Funktion mit.


Funktion GetAmountLotFromOpenPos().

Diese Funktion gibt die Anzahl der Lose der offenen Positionen zurück. Eine genauere Auswahl der Zählpositionen wird durch externe Parameter vorgegeben:

  • sy- Bezeichnung des Marktinstruments. Wenn dieser Parameter gesetzt ist, berücksichtigt die Funktion nur Positionen des angegebenen Symbols. Der Standardwert -""- bedeutet ein beliebiges Marktinstrument,NULL bedeutet das aktuelle Instrument.
  • op- Handelsoperation, Positionsart. Gültige Werte:OP_BUY,OP_SELL oder-1. Der Standardwert-1 bedeutet eine beliebige Position.
  • mn- Positionsbezeichner, MagicNumber. Der Standardwert-1 bedeutet einen beliebigen Bezeichner.

 
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает сумму лотов открытых позиций                        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ( ""  - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - торговая операция          ( -1  - любая позиция)                  |
//|    mn - MagicNumber                ( -1  - любой магик)                    |
//+----------------------------------------------------------------------------+
double GetAmountLotFromOpenPos(string sy="", int op=-1, int mn=-1) {
  double l=0;
  int    i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              l+=OrderLots();
            }
          }
        }
      }
    }
  }
  return(l);
}
 
Vladimir Zubov:

Ich danke Ihnen.

 

Bitte beantworten Sie die folgende Frage: Zick-Zack durch Schwellenwert(Tiefe(in Punkten, High(Low) werden nach dem Passieren von n-Punkten gebildet, Tiefe=Tiefe*Punkt). Es gibt eine Kette von Punkten (ArrUp(ArrDn)), die eine Additionszeichnung des Zickzacks zeigt, d.h. der letzte Punkt war ArrUp, dann wird die Tiefe gesenkt und der erste Punkt ArrDn gebildet, danach eine Reihe von ArrDn-Punkten, da der Preis gesunken ist (Additionszeichnung). Wir müssen den Algorithmus so aufbauen, dass es eine Einrückung der Tiefe gibt. Vielleicht eine for-Schleife, ich kann es nicht herausfinden.

//+------------------------------------------------------------------+
//|                                                       FastZZ.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, Yurich"
#property link      "https://login.mql5.com/ru/users/Yurich"
//---
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 Red
#property indicator_color3 Gold
#property indicator_color4 DodgerBlue
#property indicator_width3 3
#property indicator_width4 3

//--- input parameters
extern int  Depth=10;
//---
double zzH[],zzL[];
double depth;
int last,direction,pbars;
datetime lastbar;
double ArrUp[];
double ArrDn[];
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexBuffer(0,zzH);
   SetIndexBuffer(1,zzL);
   SetIndexBuffer(2,ArrUp);
   SetIndexBuffer(3,ArrDn);
   SetIndexStyle(0,DRAW_ZIGZAG);
   SetIndexStyle(1,DRAW_ZIGZAG);
   SetIndexStyle(2,DRAW_ARROW);
   SetIndexStyle(3,DRAW_ARROW);
   SetIndexArrow(2,159);
   SetIndexArrow(3,159);
   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   IndicatorDigits(Digits);
//----
   depth=Depth*Point;
   direction=1;
   last=0;
   pbars=0;
   lastbar=0;
   return(0);
  }
//+------------------------------------------------------------------+
int start()
  {
   int limit=Bars-IndicatorCounted()-1;
   if(lastbar!=Time[0])
     {
      lastbar=Time[0];
      last++;
     }
   if(MathAbs(Bars-pbars)>1) { last=Bars-1; limit=last;}
   pbars=Bars;
//---
   for(int i=limit; i>0; i--)
     {
      bool set=false;
      zzL[i]=0;
      zzH[i]=0;
      ArrUp[i]=EMPTY_VALUE;
      ArrDn[i]=EMPTY_VALUE;
      //---
      if(direction>0)
        {
         if(High[i]>zzH[last])
           {
            zzH[last]=0;
            zzH[i]=High[i];
            ArrUp[i]=High[i];
            if(Low[i]<High[last]-depth)
              {
               if(Open[i]<Close[i])
                 {
                  zzH[last]=High[last];
                  ArrUp[last]=High[last];
                 }
               else direction=-1;
               zzL[i]=Low[i];
               ArrDn[i]=Low[i];
              }
            last=i;
            set=true;
           }
         if(Low[i]<zzH[last]-depth && (!set || Open[i]>Close[i]))
           {
            zzL[i]=Low[i];
            ArrDn[i]=Low[i];
            if(High[i]>zzL[i]+depth && Open[i]<Close[i])
              {
               zzH[i]=High[i];
               ArrUp[i]=High[i];
              }
            else direction=-1;
            last=i;
           }
        }
      else //direction<0
        {
         if(Low[i]<zzL[last])
           {
            zzL[last]=0;
            zzL[i]=Low[i];
            ArrDn[i]=Low[i];
            if(High[i]>Low[last]+depth)
              {
               if(Open[i]>Close[i])
                 {
                  zzL[last]=Low[last];
                  ArrDn[last]=Low[last];
                 }
               else direction=1;
               zzH[i]=High[i];
               ArrUp[i]=High[i];
              }
            last=i;
            set=true;
           }
         if(High[i]>zzL[last]+depth && (!set || Open[i]<Close[i]))
           {
            zzH[i]=High[i];
            ArrUp[i]=High[i];
            if(Low[i]<zzH[i]-depth && Open[i]>Close[i])
              {
               zzL[i]=Low[i];
               ArrDn[i]=Low[i];
              }
            else direction=1;
            last=i;
           }
        }
     }
//----
   zzH[0]=0;
   zzL[0]=0;
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

Hallo zusammen.

Zeigen Sie mir, wie ich den EA stoppen und starten kann, wenn eine neue Kerze erscheint.

Grund der Beschwerde: