新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 367

 
Artyom Trishkin:

说实话,我从未使用过这些SB资源。但是,是什么阻止了你去看SB,在那里,通过什么方法,颜色被设置。你在清单中显示的内容。

- 是对象名称 -CPanel、CEdit、CBmpButton和CWndClient

你需要找到这些类中存储颜色的成员的名字,并使用哪些方法来初始化或改变它们。

而且你可能要先初始化它们,然后再构建对象本身。

颜色是在定义中定义的,然后通过ObjectSetInteger()对对象进行着色。现在我也是直接用这种方法作画。但我想通过OOP来试试。正如我所看到的,如果没有一个单独的公共方法可以修改,就没有办法接通私人成员。我只是对继承和虚拟方法不是那么精通,我还在 "游泳 "和研究这个问题。好的,我会试着要求服务台为着色做一个公共方法,如果有可能用其他方法做,也许他们会告诉我怎么做。
 
LRA:
点击错误信息。光标将显示变量名称。它需要被声明
谢谢你!
 
Kedrov:
谢谢你!

你不应该在这个论坛上发布反编译的代码。我理解,你没有贴出代码,只是一张图片。但这意味着你正在使用被盗的软件产品。这里强烈不鼓励这样做--这是...怎么说呢违反了社区道德规范。在这里,论坛和资源的大部分用户都是程序员--我们自己写代码或使用我们同事的公共作品。但你使用并重制了别人偷来的代码(也许这里也有别人的)。一般来说,在这里开始你的活动不是一个好主意。

 
Vasiliy Pushkaryov:
颜色是在定义中定义的,然后使用ObjectSetInteger()函数对对象进行着色。目前,我也在用这种方法直接作画。但我想通过OOP来试试。正如我所看到的,如果没有一个单独的公共方法可以修改,就没有办法接通私人成员。我只是对继承和虚拟方法不是那么精通,我还在 "游泳 "和研究这个问题。好的,我会试着向服务台请求为着色制作一个公共方法,如果可以用其他方法,也许他们会告诉我怎么做。

暂时把这个类复制到你的Include/your_folder中,并把你需要存储颜色的 成员变量以及设置和返回颜色的公共方法放进去。

另外--你将能够按照你已经需要的方式行事。减去--当你更新原始类中的SB时,可能会有细化,你将不得不再次复制和粘贴你需要的方法到更新的类中。

...奇怪的是,没有可能悄悄地改变颜色--没有定义......。

 

请帮助--我怎样才能快速获得所有工具上所有未结头寸 的数量(总手数)和信息?请分享该功能。

 
Aleksey Vyazmikin:

请帮助--我怎样才能快速获得所有工具上所有未结头寸 的数量(总手数)和信息?请分享该功能。


函数GetAmLotFromOpenPos()。

该函数返回未结头寸的手数。更准确地选择计数的位置是由外部参数规定的。

  • sy- 市场工具的名称。如果设置了这个参数,函数将只考虑指定符号的位置。默认值-"" 表示任何市场工具。NULL 表示当前工具。
  • op- 贸易操作,职位类型。有效值:OP_BUYOP_SELL-1。默认值-1 意味着任何位置。
  • mn- 位置标识符,MagicNumber。默认值-1 表示任何标识符。

 
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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:

谢谢你。

 

请教以下问题:Zig-zag由阈值(depth(in points, High(Low)是在通过n个点后形成的,depth=Depth*Point)。有一连串的点(ArrUp(ArrDn)),显示了人字形的加法画法,即最后一个点是ArrUp,然后深度下降,形成第一个点ArrDn,在它之后是一系列的ArrDn点,因为价格下降了(加法画法)。我们必须以这样的方式建立算法,即有一个缩进的深度。也许是一个for循环,我想不出来。

//+------------------------------------------------------------------+
//|                                                       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);
  }
//+------------------------------------------------------------------+
 

大家好。

教我如何在新的蜡烛出现时停止EA并启动。

原因: