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

 
你好!
//+------------------------------------------------------------------+
//|                                               Indicator_MACD.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
// Modify Vinin
#property copyright ""
#property link      ""

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
//---- input parameters
extern int       Fast_EMA=13;
extern int       Slow_EMA=21;
extern double    N = 0.001221;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double MACD[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorBuffers(3);
   SetIndexStyle(0,DRAW_ARROW, EMPTY, 3);
   SetIndexArrow(0,233);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,0.0);
   SetIndexStyle(1,DRAW_ARROW, EMPTY, 3);
   SetIndexArrow(1,234);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexEmptyValue(1,0.0);
   SetIndexBuffer(2,MACD);
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   int limit = Bars-counted_bars-1;
   
   for(int i = limit; i>= 0; i--) {
      ExtMapBuffer2[i] = EMPTY;
      ExtMapBuffer1[i] = EMPTY;
      MACD[i]=iMACD(NULL,0,Fast_EMA,Slow_EMA,1,1,MODE_MAIN, i);
      if (((MACD[i]-N)*(MACD[i+1]-N)<0) || ((MACD[i]+N)*(MACD[i+1]+N)<0))
      {
       if( MACD[i] <-N) ExtMapBuffer2[i] = High[i]+iATR(Symbol(), 0, 14, i);
       if( MACD[i] > N) ExtMapBuffer1[i] = Low[i] -iATR(Symbol(), 0, 14, i); 
      }
   }
   return(0);
}
//+------------------------------------------------------------------+
这是指标的代码(用VIN进行了调整和改变--非常感谢)。
一切都很好,似乎是有意义的.......想把它改变一下。然而。这个想法是MACD在底部开始增长(其所有数值都小于N值),在这里设置箭头BAY。
为SHEL,反之亦然。我试着改变交易条件(将数值从<改为>,但不起作用)。如果MACD开始增长(它是负的),箭头出现的时刻与交易条件相吻合。似乎是正确的......,但箭头出现得太多了...........。
请告诉我!!!!!!!!!!!!!!
 
Swetten >>:
Есть МАКД с параметрами 9 и 12.

Верно ли, что он показывает разницу между МА с периодами 9 и 12? А то у меня какой-то разбег в цифрах.

检查MA_method, applied_price在MA和MAKD中的合规性。

 
请指教!
所有的MACD值都包含在一个一维数组MACD[] 中,我想分批(每10个元素)检查它们的最大值和最小值,并在指标中画出它们。
以下是代码。
for(i=0; i<limit; i=i+10)
       {
         int k = i;
         for(k=i; k<i+10; k++)
             {       
              x10[k] = MACD[k];  
             }
         int maxValueIdx=ArrayMaximum(x10);
         int minValueIdx=ArrayMinimum(x10);    
         MAX[k] = maxValueIdx;
         MIN[k] = minValueIdx;
       }
为什么不画呢?
 
Noterday писал(а)>>
请指教!
所有的MACD值都包含在一个一维数组MACD[] 中,我想分批(每10个元素)检查它们的高点和低点,并在指标中画出它们。
以下是代码。
为什么不画呢?


x10阵列的尺寸是多少?

10?
那么你应该这样改写。

for(i=0; i<limit; i+=10)
       {
         int k;
         for(k=0; k<10; k++)
             {       
              x10[k] = MACD[i+k];  
             }
         int maxValueIdx=ArrayMaximum(x10);
         int minValueIdx=ArrayMinimum(x10);    
         MAX[i] = maxValueIdx;
         MIN[i] = minValueIdx;
       }
而且不清楚你在MAX和MIN数组中到底想要什么?
 
情况如下,我用orderSend 打开一个订单,1手,我用orderClose关闭它,0.5手....。我怎样才能让另一个股票的新订单接上新开的订单?
 
Xors писал(а)>>
情况如下,我用orderSend打开一个订单,1手,我用orderClose关闭它,0.5手....。它关闭了一半的订单,用另一个票据开了一个新的订单,我怎样才能快速取回新开订单的票据?


没办法。
唯一的方法是在未结订单和待定订单中进行暴力操作。

 
baltik писал(а)>>

lots=UseLots()。
如果(lot==0)返回(0)。
i=OrderSend(Symbol(),OP_BUY,UseLots(),NormalizeDouble(Ask, Digits),slipage,Ask-StopLoss*Point,Ask+TakeProfit*Point,EA,magic,0,Blue)。

lots=UseLots()。
如果(lot==0)返回(0)。
i=OrderSend(Symbol(),OP_SELL,UseLots(),NormalizeDouble(Bid, Digits),slipage,Bid+StopLoss*Point,Bid-TakeProfit*Point,EA,magic,0,Red);

在测试器中,10个订单中的1个或25个不同订单中的3个出现错误4107


还有,报告的滑移值是什么,报价是小数点后5位还是4位。
 
granit77 >>:

Проверьте соответствие ma_method, applied_price в МА и МАКД.

已经有了。对MA来说是120而不是12。我感到很惊讶!:)

 
我如何知道我的订单的货币?(对于期货)
 
Noterday писал(а)>>
请指教!
所有的MACD值都包含在一个一维数组MACD[] 中,我想分批(每10个元素)检查它们的高点和低点,并在指标中画出它们。
以下是代码。
为什么不画呢?
ArrayResize(MAX,Bars);
ArrayResize(MIN,Bars);
int k=1;
for(i=0; i<limit; i++)
       {
        MACD[i]= trali vali;
         if(i==10*k){k++;
          for(int r=0; r<10; r++)
          MAX[r]=MACD[ArrayMaximum(MACD,10,i-10)];
         
          for(int r=0; r<10; r++)
          MIN[r]=MACD[ArrayMinimum(MACD,10,i-10)];
         }
       }
但我需要捕捉到一个参考点!
原因: