[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 112

 
大家好。我不知道该在哪里写,所以我在这里写。我需要一个简单的指标,对于当地的专业人士来说,这并不难写。也许是在别的地方,但搜索没有得到任何信息(+7)。我想使用直方图,在零点以下和零点以上分别用红色和绿色的条形交叉抹布。我使用7EMA关闭和7EMA打开。如果你不能硬着头皮去写,请或捅破脑袋,如果这样的指标已经存在。我将把它作为一个指标,不知道如何使用它)。
 
Djon777:
大家好。我不知道该在哪里写,所以我在这里写。我需要一个简单的指标,对于当地的专业人士来说,这并不难写。也许是在别的地方,但搜索没有得到任何信息(+7)。我想使用直方图,在零点以下和零点以上分别用红色和绿色的条形交叉抹布。我使用7EMA关闭和7EMA打开。如果你不能硬着头皮去写,请或捅破脑袋,如果这样的指标已经存在。我将把它作为一个指标,不知道如何使用它)。
MACD是MT4的标准指标集。
 
Zhunko:
MACD包含在标准的MT4指标集中。


我知道它是,但我需要的是像这样的直方图http://savepic.org/2586171.gif
 
artmedia70:
仅仅是歧视...:(
为了 "鉴别",你必须先鉴别!你必须先鉴别。唯一的问题是谁?;)
 

下午好!

我想在我的EA中使用一个自定义指标。 我下载了这个指标,取了它的代码,并把它粘贴到我的EA中。我得到了一个错误。 我的理解是,SetIndexBuffer() 函数只能在指标中使用。我应该怎么做:把它改成另一个函数(在哪个函数中)或者从自定义指标中提取数据并插入到专家顾问的代码中?

我将非常感谢您的帮助!

 

下午好。

我有SupDem,对它做了一点改变,增加了一个条形厚度的缓冲器。

我试图通过相对于第0条的数字来找到这些条。

double GetSapDemUP(string sy="0", int tf=0,int ne=0) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=1; i<k; i++) {
    zz=iCustom(sy, tf, "SupDem_5z_1", 6, i+1);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(zz);
    }
  }
  Print("SupDem_5z_1(): SupDem ",ne," не найден");
  return(0);
}

double GetSapDemDN(string sy="0", int tf=0,int ne=0) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=0; i<k; i++) {
    zz=iCustom(sy, tf, "SupDem_5z_1", 5, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(zz);
    }
  }
  Print("SupDem_5z_1(): SupDem ",ne," не найден");
  return(0);
}
它不工作,我做错了什么? 用代码帮助我
附加的文件:
 

下午好!

尊敬的专业人士,请您为我提供建议。

如果价格超过该订单的开仓价50点,则必须修改该订单。

OrderSelect(0, SELECT_BY_POS,MODE_TRADES)。

double OPEN =OrderOpenPrice();
double maximus = OPEN + 0.00500;
提醒("maximus = ",maximus)。
double minimus = OPEN - 0.00500;
RefreshRates()。//刷新数据。
timecur = TimeToStr(TimeCurrent(),TIME_SECONDS); //计算出HH:MM格式的当前时间。
如果((timecur > "00:00:00") && (timecur < "22:58:00") && (Deal_s == 1) && (Deal_bb == 0)&& (Bid > maximus)
{
OrderSelect(0, SELECT_BY_POS,MODE_TRADES)。
Lootup = OrderLots () * 0.34;
Lootdown = OrderLots () * 0.34;
OrderClose(OrderTicket(), Lootdown, Ask, 10, CLR_NONE)。
警告(GetLastError())。
Deal_bb = 1;
}

如果它发生在白天,我能够做到这一点。请教,如何检查开盘价+50P是否由每手价格控制,直到几天后关闭?

 
berezhnuy:

下午好。

我有SupDem,对它做了一点改变,增加了一个条形厚度的缓冲器。

我试图通过相对于第0条的数字来找到这些条。

没有找到,我做错了什么?帮助代码

这就是你如何寻找处于0和1缓冲区的极端的价格!!

试着通过打印或soment、2和3、4和5缓冲区输出数值

例子。

Comment(iCustom(NULL,0, "SupDem_5z_1", 5, i));

类似这样的事情...

 
Egori4:

下午好!

我想在我的EA中使用一个自定义指标。 我下载了该指标,取了它的代码并粘贴到我的EA中。我得到了一个错误。 我的理解是,SetIndexBuffer() 函数只能在指标中使用。我应该怎么做:把它改成另一个函数(在哪个函数中)或者从自定义指标中提取数据并插入到专家顾问的代码中?

我将非常感谢您的帮助!

一系列文章中的第一篇。


https://www.mql5.com/ru/articles/1456

 
Boneshapper:

下午好!

尊敬的专业人士,请您为我提供建议。

如果价格超过该订单的开仓价50点,则必须修改该订单。

OrderSelect(0, SELECT_BY_POS,MODE_TRADES)。

double OPEN =OrderOpenPrice();
double maximus = OPEN + 0.00500;
提醒("maximus = ",maximus)。
double minimus = OPEN - 0.00500;
RefreshRates()。//刷新数据。
timecur = TimeToStr(TimeCurrent(),TIME_SECONDS); //计算出HH:MM格式的当前时间。
如果((timecur > "00:00:00") && (timecur < "22:58:00") && (Deal_s == 1) && (Deal_bb == 0)&& (Bid > maximus)
{
OrderSelect(0, SELECT_BY_POS,MODE_TRADES)。
Lootup = OrderLots () * 0.34;
Lootdown = OrderLots () * 0.34;
OrderClose(OrderTicket(), Lootdown, Ask, 10, CLR_NONE)。
警告(GetLastError())。
Deal_bb = 1;
}

如果它发生在白天,我能够做到这一点。请告诉我,如何检查如何设置条件,控制每手的开盘价+50P,直到它在几天内关闭。

试着循环浏览一下这些位置

for(int i=OrdersTotal()-1; i>=0; i--)
   {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
       {
         if(OrderType()==OP_BUY)
            {
          //ваши действия 
            }
         if(OrderType()==OP_SELL)
            {
          //ваши действия 
            }
       }
   }