[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 171

 

有一个指标,Sanyok是作者。

它标志着在一根柱子上形成的分形的水平,其成交量大于分形前最后3根柱子的平均成交量。

如何将其加载到EA中?

我正在努力。

h=NormalizeDouble(iCustom(NULL,0, "vfractals",MODE_UPPER, 1),Digits)。

l=NormalizeDouble(iCustom(NULL,0, "vfractals",MODE_LOWER, 1),Digits)。

它不起作用。

附加的文件:
vfractals.mq4  4 kb
 
NormalizeDouble(iCustom(NULL,0, "vfractals",MODE_UPPER, 1),Digits); 1. MODE_UPPER和MODE_LOWER意味着你从第一个和第二个指标缓冲区 取值(你有零和第一个) 2.数字1意味着你取的是第[1]-个元素的值(在最后一个小节)。
 
ilunga:
NormalizeDouble(iCustom(NULL,0, "vfractals",MODE_UPPER, 1),Digits); 1. MODE_UPPER和MODE_LOWER意味着你从第一个和第二个指标缓冲区取值(你有零和第一个) 2.数字1表示取[1]个元素的值(在前一栏)。

谢谢你。
 

动议。

Pavel447 02.03.2011 10:57
你是怎么做的!?
如果你有一个专家顾问(或脚本),可以自动设置SL、TP、追踪止损,并在获利时转移到BU...?
提前感谢)。

 
动议。
dimeon 02.03.2011 11:41
sammi61:

帮助我在EA的代码中加入动态手数,使手数随着入金的增加而增加,或者作为入金的一个百分比?
如果批号是0,则启用自动批号,如果是一个值,则批号是固定的。
附属文件
FiboWave_v1_1lavtolot.mq4(9.26 KB) 删除
 
artmedia70:
数组可以用在很多情况下,也可以用于很多不同的任务。那么,什么是正确的例子呢?
  if (Cls_B[i]||Cls_S[i]) LotCt=NormalizeLot(OrderLots()/(4-i)); 
如何书写[i]?我似乎把它声明为一个变量......,它给出了一个编译错误。我不明白...它要求的是一个整数值,但数组也可以被声明为一个变量吗!?
 

100yan:
как прописать [i] ?

它要求的是一个整数值,但数组也可以被声明为一个变量?

说得更具体些。

数组是一个具有相同名称但不同数字的变量。

 
100yan:
如何书写[i]?我似乎把它声明为一个变量......,它给出了一个编译错误。我不明白...它要求的是一个整数值,但数组也可以被声明为一个变量。
任何在括号[]中的结构必须有数据类型 int。
 

你能告诉我日志中的这些废话是什么意思吗?我怎样才能避免它呢?专家顾问用这个指标进行交易,出错后交易冻结,直到你重新启动终端,因为重新启动专家顾问可能再次崩溃。

22:39:53 +ZigZag_Levels CLJ1,M5: uninit reason 3
22:39:53 Zigzag CLJ1,M5: uninit reason 1

22:39:53 Zigzag CLJ1,M5: 已删除

也许是因为我同时在远程服务器和自己的电脑上使用终端?

 
todem:

大家好!我有一个问题:在这个函数中,对于两个头寸(买入和卖出),我设置了止损,这样卖出的SL=开仓买入+18点,反之,买入的SL=开仓买入。

бла-бла-бла...

从函数中获得相反头寸的开盘价。

бла-бла-бла...

我们知道ModifyOrder函数是一个标准的KIMIW函数,我们用它来设置计算的止损...

问题是,EA只为卖出设置止损,而不是为买入设置止损......谁这么认为?


void SimpleLock(string sy="", int mn=-1) {
  double po, pp, ops1=0, ops2=0, opb;
  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=="") {
        po=MarketInfo(OrderSymbol(), MODE_POINT);
        if (mn<0 || OrderMagicNumber()==mn) {
          if (OrderType()==OP_SELL) {
            opb=OrderStopLoss();                            // Значение стопа позиции до модификации = (0???)
            ops2=NormalizeDouble(OrderPrice(OP_BUY),Digits);
            if (ops2>0 && opb!=0) {
                ModifyOrder(-1, ops2+18*po, -1);
              }
            
          }
          if (OrderType()==OP_BUY) {
            opb=OrderStopLoss();
            ops1=NormalizeDouble(OrderPrice(OP_SELL),Digits);
            if (ops1>0 && opb!=0) {
                ModifyOrder(-1, ops1-18*po, -1);
              }
            
          }
        }
      }
    }
  }
}

如果没有设置停止,则不调用修改...

如果你不为多头设置止损,那么修改就不会被调用..:

double OrderPrice(int type) {
   double price;
   int i, k=OrdersTotal();
      
      for (i=0; i<k; i++) {
         if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
            if (OrderType()==type) {
            price=OrderOpenPrice();  // Значение цены открытия в списке ордеров терминала позиции с типом type и индексом i
            }
         }
      }
   return(price);  // Возвращает цену открытия последней в списке ордеров позиции с типом type и индексом не более k-1
}

你确定所需订单的开盘价被返回了吗?