IndicatorRelease

如果不使用,函数删除指标缓冲区并释放指标计算空间。

bool  IndicatorRelease(

   int       indicator_handle     // 指标处理

   );

返回值

如果成功返回真值,否则返回错误值。

注释

如果不再需要,函数允许删除指标缓冲区来节省内存。处理立即删除,计算块会在一定时间内删除(如果不再调用)。

当在策略测试中工作时,不会执行IndicatorRelease()函数。

示例:

//+------------------------------------------------------------------+

//|                                        Test_IndicatorRelease.mq5 |

//|                        Copyright 2010, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "2010, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

//--- 输入参量

input int                MA_Period=15;

input int                MA_shift=0;

input ENUM_MA_METHOD     MA_smooth=MODE_SMA;

input ENUM_APPLIED_PRICE price=PRICE_CLOSE;

//--- 存储指标处理程序

int MA_handle=INVALID_HANDLE;

//+------------------------------------------------------------------+

//| EA初始化函数                                                      |

//+------------------------------------------------------------------+

int OnInit()

  {

//--- 创建指标处理程序

   MA_handle=iMA(Symbol(),0,MA_Period,MA_shift,MA_smooth,PRICE_CLOSE);

//--- 删除全局变量

   if(GlobalVariableCheck("MA_value"))

      GlobalVariableDel("MA_value");

//---

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| EA订单号函数                                                      |

//+------------------------------------------------------------------+

void OnTick()

  {

//--- 如果全局变量值不存在

   if(!GlobalVariableCheck("MA_value"))

     {

      //--- 在最近2柱获得指标值

      if(MA_handle!=INVALID_HANDLE)

        {

         //--- 指标值的动态数组

         double values[];

         if(CopyBuffer(MA_handle,0,0,2,values)==2 && values[0]!=EMPTY_VALUE)

           {

            //--- 记住倒数第二柱的全局变量值

            if(GlobalVariableSet("MA_value",values[0]))

              {

               //--- 释放指标处理程序

               if(!IndicatorRelease(MA_handle))

                  Print("IndicatorRelease() failed. Error ",GetLastError());

               else MA_handle=INVALID_HANDLE;

              }

            else

               Print("GlobalVariableSet failed. Error ",GetLastError());

           }

        }

     }

//---

  }