//+------------------------------------------------------------------+
//| Test_IndicatorRelease.mq5 |
//| Copyright 2000-2024, MetaQuotes Ltd. |
//| 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;
//+------------------------------------------------------------------+
//| Expert 초기화 함수 |
//+------------------------------------------------------------------+
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);
}
//+------------------------------------------------------------------+
//| Expert 틱 함수 |
//+------------------------------------------------------------------+
void OnTick()
{
//--- 글로벌 변수 값이 없는 경우
if(!GlobalVariableCheck("MA_value"))
{
//--- 마지막 두 막대의 지표 값을 구함
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() 실패. Error ",GetLastError());
else MA_handle=INVALID_HANDLE;
}
else
Print("GlobalVariableSet 실패. Error ",GetLastError());
}
}
}
//---
}
|