[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 704

 
ToLik_SRGV:

还有奥德修斯,在前面的例子中,你是这样的。

而现在是这样的。

你没有删除任何东西,还是我在幻想?
这里是原始代码
 IndicatorBuffers(7);
   SetIndexBuffer(0, MACDBuffer);
   SetIndexBuffer(1, SignalBuffer);
   SetIndexBuffer(2, FastEMABuffer);
   SetIndexBuffer(3, SlowEMABuffer);
   SetIndexBuffer(4, SignalEMABuffer);
   SetIndexBuffer(5, Buffer1);
   SetIndexBuffer(6, Buffer2);
   SetIndexStyle(0, DRAW_NONE);
   SetIndexStyle(1, DRAW_LINE,EMPTY);
  SetIndexStyle(2, DRAW_LINE,EMPTY,2 );
   SetIndexStyle(3, DRAW_NONE,EMPTY,2);
   SetIndexStyle(4, DRAW_NONE);
   SetIndexStyle(5, DRAW_HISTOGRAM,EMPTY, 2);
   SetIndexStyle(6, DRAW_HISTOGRAM,EMPTY, 2);
   SetIndexDrawBegin(0, SlowEMA);
   SetIndexDrawBegin(1, SlowEMA);
   IndicatorShortName("ZeroLag MACD Colored(" + FastEMA + "," + SlowEMA + "," + SignalEMA + ")");
   SetIndexLabel(0, "MACD");
   SetIndexLabel(1, "Signal");
   SetIndexLabel(5, "MACD");
   SetIndexLabel(6, "MACD");
 
odiseif:
以下是最后的代码
对不起,我搞错了。.....,这是原文。
//+------------------------------------------------------------------+
//|                                                 ZeroLag MACD.mq4 |
//|                                                               RD |
//|                                                 marynarz15@wp.pl |
//| Colored by SVK © 2009.                                           |
//+------------------------------------------------------------------+
#property copyright "RD"
#property link      "marynarz15@wp.pl"
//----
#property indicator_separate_window
#property  indicator_buffers 7
#property indicator_color1 Black
#property indicator_color2 Blue
#property indicator_color3 Black
#property indicator_color4 Black
#property indicator_color5 Black
#property indicator_color6 Lime
#property indicator_color7 Red

//---- input parameters
extern int FastEMA = 12;
extern int SlowEMA = 26;
extern int SignalEMA = 9;

//---- buffers
double MACDBuffer[];
double SignalBuffer[];
double FastEMABuffer[];
double SlowEMABuffer[];
double SignalEMABuffer[];

double Buffer1[];
double Buffer2[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorBuffers(7);
   SetIndexBuffer(0, MACDBuffer);
   SetIndexBuffer(1, SignalBuffer);
   SetIndexBuffer(2, FastEMABuffer);
   SetIndexBuffer(3, SlowEMABuffer);
   SetIndexBuffer(4, SignalEMABuffer);
   SetIndexBuffer(5, Buffer1);
   SetIndexBuffer(6, Buffer2);
   SetIndexStyle(0, DRAW_NONE);
   SetIndexStyle(1, DRAW_LINE,EMPTY);
   SetIndexStyle(2, DRAW_NONE);
   SetIndexStyle(3, DRAW_NONE);
   SetIndexStyle(4, DRAW_NONE);
   SetIndexStyle(5, DRAW_HISTOGRAM);
   SetIndexStyle(6, DRAW_HISTOGRAM);
   SetIndexDrawBegin(0, SlowEMA);
   SetIndexDrawBegin(1, SlowEMA);
   IndicatorShortName("ZeroLag MACD Colored(" + FastEMA + "," + SlowEMA + "," + SignalEMA + ")");
   SetIndexLabel(0, "MACD");
   SetIndexLabel(1, "Signal");
   SetIndexLabel(5, "MACD");
   SetIndexLabel(6, "MACD");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   double prev,current;
   int counted_bars = IndicatorCounted();
   if(counted_bars < 0) 
       return(-1);
   if(counted_bars > 0) 
       counted_bars--;
   limit = Bars - counted_bars;
   double EMA, ZeroLagEMAp, ZeroLagEMAq;
   for(int i = 0; i < limit; i++)
     {
       FastEMABuffer[i] = 100.0*iMA(NULL, 0, FastEMA, 0, MODE_EMA, PRICE_CLOSE, i);
       SlowEMABuffer[i] = 100.0*iMA(NULL, 0, SlowEMA, 0, MODE_EMA, PRICE_CLOSE, i);
     }
   for(i = 0; i < limit; i++)
     {
        EMA = iMAOnArray(FastEMABuffer, Bars, FastEMA, 0, MODE_EMA, i);
        ZeroLagEMAp = FastEMABuffer[i] + FastEMABuffer[i] - EMA;
        EMA = iMAOnArray(SlowEMABuffer, Bars, SlowEMA, 0, MODE_EMA, i);
        ZeroLagEMAq = SlowEMABuffer[i] + SlowEMABuffer[i] - EMA;
        MACDBuffer[i] = ZeroLagEMAp - ZeroLagEMAq;
        FastEMABuffer[i] = 0.0;
        SlowEMABuffer[i] = 0.0;
     }
   for(i = 0; i < limit; i++)
       SignalEMABuffer[i] = iMAOnArray(MACDBuffer, Bars, SignalEMA, 0, MODE_EMA, i);
   for(i = 0; i < limit; i++)
     {
       EMA = iMAOnArray(SignalEMABuffer, Bars, SignalEMA, 0, MODE_EMA, i);
       SignalBuffer[i] = SignalEMABuffer[i] + SignalEMABuffer[i] - EMA;
       SignalEMABuffer[i] = 0.0;
     }
//---- dispatch values between 2 buffers
   bool up=true;
   for(i=limit-1; i>=0; i--)
     {
      current=MACDBuffer[i];
      prev=MACDBuffer[i+1];
      if(current>prev) up=true;
      if(current<prev) up=false;
      if(!up)
        {
         Buffer2[i]=current;
         Buffer1[i]=0.0;
        }
      else
        {
         Buffer1[i]=current;
         Buffer2[i]=0.0;
        }
     }     
   return(0);
  }
//+------------------------------------------------------------------+
 
ToLik_SRGV:

Sergey,我不完全理解你到底改了什么,因为在你提供的地址,你需要注册才能看到CCI 过滤器 源代码。
我只发现一个错误,iWPR 没有applied_price 参数,所以它是正确的。

 
ToLik_SRGV:

原则上,没有任何区别。
试试我的函数,它很简单,把 "medj "和所需的拖网作为参数传递。
这个函数应该在任何地方开始调用,只要它从每一个tick开始就可以了。

很明显,这些订单必须有不同的滑块。

罗杰
我明白了,你在函数的开头定义了一个变量ro,但你没有把它分配到任何地方,也就是说,它是0。

ToLik_SRGV,谢谢,它仍然不能正常工作这意味着我有错误的地方来隐藏问题。总之谢谢你,我会自己想办法的。罗杰
 

像往常一样在这里)))像往常一样向好心人致敬 )))

有什么问题,我想不出来。全局变量的问题。我在指标代码中这样做。

string Global="Global"; //имя глобальной переменной
int param; // параметр глобальной переменной
int init()
  {
  GlobalVariablesDeleteAll(NULL); 
   return(0);
  }
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
int start()
  { //привожу простой пример
  double bar1= iMA(Symbol(),PERIOD_M5,13,0,MODE_SMMA,PRICE_TYPICAL,0);
  double bar2= iOpen(Symbol(),PERIOD_M5,0);
   if (bar1>bar2){ param = 1; GlobalVariableSet(Global,param); }
   if (bar1<bar2){ param = 2; GlobalVariableSet(Global,param); } 

//----
   return(0);
  }

然后我试着用这段代码从专家顾问中获得一个全局变量的值

string Global="Global";  
int param;

int start()
  {
  int i= GlobalVariableSet(Global,param);
  Print (i);   // Здесь он мне и выводит всякую лабуду вида : 1279217736


   return(0);
  }
我做错了什么?我本应得到1个或2个参数值,但我得到了.....为什么我必须在EA代码的开头再写一遍名称和变量? 它们似乎作为球状物存在,但没有它们,编译就无法进行。
 

我可以同时建立两个买入/卖出头寸吗?

我试了一下--我写了简单的代码,同时打开买入和卖出头寸,实时连接到欧元/美元,它们似乎都打开了。

但那是模拟账户和策略测试器,实时的情况呢,我的经纪公司会不会介意?

我以前从未尝试过,我不认为我开始了这种实验。

 
Infinity:...
你需要另一个函数来读取全局变量的值:))
int i= GlobalVariableGet(Global);
 
Lim1:

我可以同时建立两个买入/卖出头寸吗?

我试了一下--我写了简单的代码,同时打开买入和卖出头寸,实时连接到欧元/美元,它们似乎都打开了。

但那是模拟账户和策略测试器,实时的情况呢,我的经纪公司会不会介意?

我以前从未尝试过,我不认为我开始了这种实验。

打开...当他们让你...:)
一般来说--询问你的DC的支持团队
 
ToLik_SRGV:
为了读取全局变量的值,我们需要另一个函数:)))

太清楚了,看书不看人,干活不干活,谢谢!继续前进)与问题。所有关于相同的全局变量。我在该指标中加入了以下条件。

string EUR="EURUSD"; //имя глобальной переменной
string GBP="GBPUSD"; //имя глобальной переменной
string valuta="";
int param; // параметр глобальной переменной
int init()
  {
  GlobalVariablesDeleteAll(NULL); 
   return(0);
  }
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
int start()
  { string symb = Symbol();  //Здесь узнаю на какой валюте стоит индикатор
    
    if (symb==EUR) {valuta=EUR;}   // здесь сравнивая ,в переменную занощу имя глобальной переменной
    if (symb==GBP) {valuta=GBP;}   // которую следует использовать
  //привожу простой пример
  double bar1= iMA(Symbol(),PERIOD_M5,13,0,MODE_SMMA,PRICE_TYPICAL,0);
  double bar2= iOpen(Symbol(),PERIOD_M5,0);
   if (bar1>bar2){ param = 1; GlobalVariableSet(valuta,param); }   // а здесь присваиваю параметр глобальной переменной
   if (bar1<bar2){ param = 2; GlobalVariableSet(valuta,param); } 
   return(0);
  }

我想定义哪个全局变量应该被分配一个值,这取决于指标以什么货币为基础。

我理解在全局变量GlobalVariableSet(valuta,param)中,名称(valuta)应该包含上面分配给它的值

在专家顾问代码中再次调用全局变量

string valuta="valuta"。

int i= GlobalVariableGet(valuta); // 但我没有得到这个值,....也许这样就无法改变全局变量的名称

我想我已经弄明白了--原来我不能用这个名字调用全局变量,但如果我注册字符串名称GlobalVariableGet("EURUSD")就可以了)。

 

首先,从帮助

doubleGlobalVariableGet( string name)

返回现有全局变量的值,如果有错误,则返回0。调用GetLastError()来获取错误信息。


你能看到GV的内容,但不能检索它?

原因: