Если есть возможность, сделайте, пжлст, алерт на индюк, чтобы срабатывал, когда часовой и дневной сигнал совпадают. Алерт должен звонить раз в час, но не на открытии свечи, а в СЕРЕДИНЕ ЧАС
UFX TREND multiMeter 1.01.ex4 (22 Kb)А.
Сам индюк — UFX TREND
Комментарии (9)
23 igrun Сообщений: 1647 - igrun
4 walter8319 Автор Сообщений: 100
12 Slava78 Сообщений: 598
Редактирован: 10 ноября 2021, 20:10
4 walter8319 Автор Сообщений: 100
самый простой способ скинуть так с тегом код:
35 AM2 Сообщений: 16277 - Андрей
#property indicator_chart_window
#property indicator_plots 0
input ENUM_TIMEFRAMES i_eOlderTF = PERIOD_D1; // Older TF
input ENUM_TIMEFRAMES i_eYoungerTF = PERIOD_H1; // Younger TF
input uint i_uMinutes = 30; // Minutes from the opening
enum ENUM_BAR_TYPE
{
BAR_TYPE_DODG,
BAR_TYPE_BULL,
BAR_TYPE_BEAR
};
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
if (i_uMinutes > uint(Period()))
{
Alert(«Wrong value of parameter \»Minutes from the opening\". Indicator is turned off.");
return INIT_FAILED;
}
return(INIT_SUCCEEDED);
}
//+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
//| Expert deinitialization function |
//+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
//| Custom indicator iteration function |
//+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
if (!IsTesting())
if (!IsTFDataReady(i_eOlderTF) || !IsTFDataReady(i_eYoungerTF))
return rates_total;
datetime dtYoungerTFTime = iTime(NULL, i_eYoungerTF, 0);
if (TimeCurrent() — dtYoungerTFTime < i_uMinutes * 60)
return rates_total;
static datetime dtPrevBar = 0;
if (dtPrevBar == dtYoungerTFTime)
return rates_total;
dtPrevBar = dtYoungerTFTime;
ENUM_BAR_TYPE eOlderBar = GetBarType(0, i_eOlderTF);
ENUM_BAR_TYPE eYoungerBar = GetBarType(0, i_eYoungerTF);
if (eOlderBar == BAR_TYPE_DODG || eYoungerBar == BAR_TYPE_DODG || eOlderBar != eYoungerBar)
return rates_total;
Alert(«Coincidence of readings for », (eOlderBar == BAR_TYPE_BEAR)? «sell.»: «buy.»);
return rates_total;
}
//+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
//| Определение типа свечи |
//+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
ENUM_BAR_TYPE GetBarType(const int nBar, const ENUM_TIMEFRAMES eTF)
{
double fWholeHeight = iHigh(NULL, eTF, nBar) — iLow(NULL, eTF, nBar);
if (fWholeHeight <= 0.0)
return BAR_TYPE_DODG;
if (fabs(iOpen(NULL, eTF, nBar) — iClose(NULL, eTF, nBar)) / fWholeHeight < 2 * DBL_EPSILON)
return BAR_TYPE_DODG;
if (iOpen(NULL, eTF, nBar) > iClose(NULL, eTF, nBar))
return BAR_TYPE_BEAR;
return BAR_TYPE_BULL;
}
//+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
//| Проверка обновления данных указанного ТФ |
//+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
bool IsTFDataReady(ENUM_TIMEFRAMES eTF)
{
ResetLastError();
iTime(NULL, eTF, 1);
return GetLastError() == ERR_NO_ERROR;
}
4 walter8319 Автор Сообщений: 100
35 AM2 Сообщений: 16277 - Андрей
35 AM2 Сообщений: 16277 - Андрей
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий