//+------------------------------------------------------------------+
//| 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"
//--- parâmetros de entrada
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;
//--- armazenará o handle de indicador
int MA_handle=INVALID_HANDLE;
//+------------------------------------------------------------------+
//| Função de inicialização do Expert |
//+------------------------------------------------------------------+
int OnInit()
{
//--- cria um handle de indicador
MA_handle=iMA(Symbol(),0,MA_Period,MA_shift,MA_smooth,PRICE_CLOSE);
//--- exclui variável global
if(GlobalVariableCheck("MA_value"))
GlobalVariableDel("MA_value");
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Função tick (ponto) de um Expert |
//+------------------------------------------------------------------+
void OnTick()
{
//--- se o valor da variável global não existir
if(!GlobalVariableCheck("MA_value"))
{
//--- obtém o valor do indicador nas últimas duas barras
if(MA_handle!=INVALID_HANDLE)
{
//--- array dinâmico para valores do indicador
double values[];
if(CopyBuffer(MA_handle,0,0,2,values)==2 && values[0]!=EMPTY_VALUE)
{
//--- lembra na variável global o valor da penúltima barra
if(GlobalVariableSet("MA_value",values[0]))
{
//--- libera o handle do indicador
if(!IndicatorRelease(MA_handle))
Print("IndicatorRelease() falhou. Error ",GetLastError());
else MA_handle=INVALID_HANDLE;
}
else
Print("GlobalVariableSet falhou. Error ",GetLastError());
}
}
}
//---
}
|