[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 537

 

大家好。

帮我把代码弄好。

 if(Bid > Line_2 && Rsi < 30)     //Если цена больше максимальной(верхней) линии..
                                  //..и RSI меньше заданного условия..
      {
       Opn_B= true;               //..тогда получаем условие на открытие  Buy
      }

当第一个条件Bid > Line_2被满足时,第二个条件RSI<30就会丢失,也就是说,RSI指标线会 超过数值30。

如何正确连接两个条件?

如果有人看到这样的实现,请给我一个链接。

 
Pacman:

大家好。

帮我把代码弄好。

当第一个条件Bid > Line_2被满足时,第二个条件RSI<30就会丢失,也就是说,RSI指标线会超过数值30。

如何正确连接两个条件?

如果有人看到这样的实现,请给我一个链接。

最简单有效的方法是在CodaBase 中搜索已经实施的EA中的 "RSI "一词。
 
我想重复我的问题。 我有一个指标(图片中的上部指标),只给出这些信号。
我需要将这些信号转化为 "实体 "信号(图片中的底部指标)。
如果你知道怎么做,请帮忙

P.S.

图片中的MACD指标只是用来说明我的问题。



我得到的答案是 TaraasBY(为此非常感谢你)。

如果指标缓冲区中没有数值,你就用之前的(非空)数值来填充。

if (gda_BUF1[pos] == EMPTY_VALUE) 
    {
        if (gda_BUF1[pos+1] != EMPTY_VALUE) gda_BUF1[pos] = gda_BUF1[pos+1];
       
    }


但对我来说并不奏效。如何将ExtMapBuffer1[i]和ExtMapBuffer1[pos]联系起来?

我想从MACD中重复那个指标,只是举个例子!如何在其中重复上述的结构?

#property indicator_separate_window
#property indicator_minimum -1.5
#property indicator_maximum 1.5
#property indicator_buffers 1
#property indicator_color1 Aqua
#property  indicator_width1  2
#property indicator_level1 0.0
//--- buffers
double ExtMapBuffer1[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,ExtMapBuffer1);
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
     int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;
//----
   for(int i=0;i<limit;i++)
   
      if((iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+2)<iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+2))&&
         (iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1)>iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+1)))
       {
        ExtMapBuffer1[i]=1;
       }
      else
       {
        
       
       
      if((iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+2)>iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+2))&&
         (iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1)<iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+1)))
       {
        ExtMapBuffer1[i]=-1;
       }
      else
       {
        ExtMapBuffer1[i]=0;
       }
      }
      
 
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
MK07:

如何连接ExtMapBuffer1[i]和ExtMapBuffer1[pos]?

这是指标的代码。 我想重复一下,MACD指标只是举例,我怎样才能在其中重复上述结构?

像这样(适用于MACD)。

int start()
  {
     int counted_bars=IndicatorCounted(),
       limit;  
     static int li_preSignal = 0;
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;
//----
   for(int i=0;i<limit;i++)
   
      if((iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+2)<iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+2))&&
         (iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1)>iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+1)))
       {
        ExtMapBuffer1[i]=1;
        li_preSignal = 1;
       }
      else
       {
        
       
       
      if((iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+2)>iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+2))&&
         (iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1)<iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+1)))
       {
        ExtMapBuffer1[i]=-1;
        li_preSignal = -1;
       }
      else {ExtMapBuffer1[i] = li_preSignal;}
      }
      
 
//----
   return(0);
  }
 
TarasBY:
最简单有效的方法是在已经实施的EA中搜索CodaBase 的 "RSI "一词。

谢谢,我将继续寻找。
 
TarasBY:

所以(如适用于MACD)。

谢谢,它开始工作了,但只是晚了一格!你还有什么可以做的吗?

 
TarasBY:

所以(如适用于MACD)。

你之前的版本用ExtMapBuffer1[pos]对我来说更有意义,而且似乎更普遍。
 
MK07:

谢谢,它开始工作了,但只是晚了一格!你还有什么可以做的吗?

试试这个。

附加的文件:
 

Vinin
:


没有发现随机交集(我是说代码)。

// Обращение к функции техн.индикат.
   
   M_1=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_MAIN,  1);
   M_2=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_MAIN,  2);
   S_1=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_SIGNAL,1);
   S_2=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_SIGNAL,2);

                        // Анализ ситуации
   
   if (M_2 < S_2 && M_1==S_1)                    // Условие откр. Buy и закр. Sell 
     {
      if (Total>0)
        {
        Close_Order_S(Ticket,Ans,Lts); 
        }
      
        Ticket = Open_Order_B(StopLoss,Lts); 
                                                                         
     } 
   if (M_2 > S_2 && M_1==S_1)                    // Условие откр. Sell и закр. Buy        
     {  
      if (Total>0)
        {
        Close_Order_B(Ticket,Ans,Lts);   
        }                           
      
        Ticket = Open_Order_S(StopLoss,Lts); 
 
granit77:

这样试试吧。




谢谢你,它成功了。