Files
Bell-PriceActionWithEma-EA/Indicators/RsiMomentumIndicator/Lib/Handles.mqh
T
2026-05-14 00:54:40 +07:00

47 lines
2.0 KiB
Plaintext

//+------------------------------------------------------------------+
//| Handles.mqh |
//| Tạo / giải phóng handle RSI, EMA9/WMA45 trên RSI, EMA200(close). |
//| EMA200 chỉ CopyBuffer — không ChartIndicatorAdd. |
//+------------------------------------------------------------------+
#ifndef RSIMOM_HANDLES_MQH
#define RSIMOM_HANDLES_MQH
//+------------------------------------------------------------------+
//| Tạo tất cả indicator handle. Trả về true nếu thành công. |
//+------------------------------------------------------------------+
bool Handles_CreateAll()
{
// RSI(close)
h_RSI = iRSI(_Symbol, _Period, InpRSIPeriod, PRICE_CLOSE);
if (h_RSI == INVALID_HANDLE)
{ Print("[RsiMom] Không tạo được handle RSI"); return false; }
// EMA9 và WMA45 tính trên dữ liệu của h_RSI (buffer 0 của RSI)
h_EMA9 = iMA(_Symbol, _Period, InpEMA9Period, 0, MODE_EMA, h_RSI);
if (h_EMA9 == INVALID_HANDLE)
{ Print("[RsiMom] Không tạo được handle EMA9(RSI)"); return false; }
h_WMA45 = iMA(_Symbol, _Period, InpWMA45Period, 0, MODE_LWMA, h_RSI);
if (h_WMA45 == INVALID_HANDLE)
{ Print("[RsiMom] Không tạo được handle WMA45(RSI)"); return false; }
h_EMA200 = iMA(_Symbol, _Period, InpEMATrendPeriod, 0, MODE_EMA, PRICE_CLOSE);
if (h_EMA200 == INVALID_HANDLE)
{ Print("[RsiMom] Không tạo được handle EMA200"); return false; }
return true;
}
//+------------------------------------------------------------------+
//| Giải phóng tất cả indicator handle |
//+------------------------------------------------------------------+
void Handles_ReleaseAll()
{
if (h_RSI != INVALID_HANDLE) IndicatorRelease(h_RSI);
if (h_EMA9 != INVALID_HANDLE) IndicatorRelease(h_EMA9);
if (h_WMA45 != INVALID_HANDLE) IndicatorRelease(h_WMA45);
if (h_EMA200 != INVALID_HANDLE) IndicatorRelease(h_EMA200);
}
#endif // RSIMOM_HANDLES_MQH