Global Macro Soros
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «global macro soros.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
«Global Macro Soros» — это пользовательский индикатор для MetaTrader 5, отображающий аналитическую оценку макро-тренда (Macro Bias Score) в отдельном окне графика. Индикатор сравнивает быстрые и медленные скользящие средние на трёх таймфреймах (H4, D1, W1) и формирует суммарный баланс от -3 до +3.
На основе соотношения быстрой и медленной скользящей средней на каждом таймфрейме определяется направление тренда (UP, DOWN или FLAT), а их сумма отображается в виде цветного гистограммного графика. Положительные значения указывают на бычий макро-байас, отрицательные — на медвежий.
Индикатор работает как live-датчик: реальное значение рассчитывается только для текущей (последней) свечи, а исторические бары остаются пустыми, что предотвращает ложную заливку всего графика. Опционально доступна панельная дашборд-информация на графике с отображением трендов по каждому таймфрейму, итогового балла и метки направления макро-тренда.
Параметры настраивают периоды и метод скользящих средних, таймфреймы анализа, а также внешний вид и расположение информационной панели.
Настройки программы
| Настройка | Описание |
|---|---|
| InpFastMA | Период быстрой скользящей средней, используемой для определения направления тренда на каждом макро-таймфрейме. |
| InpSlowMA | Период медленной скользящей средней, используемой для определения направления тренда на каждом макро-таймфрейме. |
| InpMAMethod | Метод скользящей средней, применяемый на всех трёх таймфреймах. |
| InpTF_Short | Краткосрочный макро-таймфрейм для анализа тренда. |
| InpTF_Medium | Среднесрочный макро-таймфрейм для анализа тренда. |
| InpTF_Long | Долгосрочный макро-таймфрейм для анализа тренда. |
| InpShowDashboard | Переключатель отображения панели дашборда на графике. |
| InpPanelX | Горизонтальное смещение панели в пикселях. |
| InpPanelY | Вертикальное смещение панели в пикселях. |
| InpFontSize | Размер текста информационной панели (от 6 до 24). |
Поиск по коду файла
#property version "2.10"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots 1
#property indicator_minimum -3.5
#property indicator_maximum 3.5
#property strict
#property indicator_label1 "Macro Bias Score"
#property indicator_type1 DRAW_COLOR_HISTOGRAM
#property indicator_color1 clrGray, clrLimeGreen, clrRed
#property indicator_width1 3
input group "=== Trend Detection ==="
input int InpFastMA = 50; // Fast MA period used to detect trend direction
input int InpSlowMA = 200; // Slow MA period used to detect trend direction
input ENUM_MA_METHOD InpMAMethod = MODE_EMA; // MA method applied on all three timeframes
input group "=== Macro Timeframes ==="
input ENUM_TIMEFRAMES InpTF_Short = PERIOD_H4; // Short-term macro timeframe
input ENUM_TIMEFRAMES InpTF_Medium = PERIOD_D1; // Medium-term macro timeframe
input ENUM_TIMEFRAMES InpTF_Long = PERIOD_W1; // Long-term macro timeframe
input group "=== Dashboard ==="
input bool InpShowDashboard = true; // Show the on-chart dashboard panel
input int InpPanelX = 10; // Panel horizontal offset (pixels)
input int InpPanelY = 10; // Panel vertical offset (pixels)
input int InpFontSize = 9; // Panel text size (6-24)
double ScoreBuf[];
double ColorBuf[];
int hFastShort = INVALID_HANDLE, hSlowShort = INVALID_HANDLE;
int hFastMedium = INVALID_HANDLE, hSlowMedium = INVALID_HANDLE;
int hFastLong = INVALID_HANDLE, hSlowLong = INVALID_HANDLE;
int g_lastShortDir = 0;
int g_lastMediumDir = 0;
int g_lastLongDir = 0;
double g_lastScore = 0;
string PFX = "GMS_INST_";
string SHORT_NAME = "GlobalMacro_Soros_INSTITUTIONAL";
int g_subWin = -1; // this indicator's subwindow index, resolved lazily
bool g_dashboardOn = false;
double g_scale = 1.0; // panel geometry scale (from InpFontSize + DPI)
double g_dpiScale = 1.0;
string g_c_short="", g_c_medium="", g_c_long="", g_c_score="", g_c_time="";
bool ValidateInputs()
{
if(InpFastMA < 1)
{ Print("ERROR: InpFastMA must be >= 1."); return(false); }
if(InpSlowMA < 2)
{ Print("ERROR: InpSlowMA must be >= 2."); return(false); }
if(InpFastMA >= InpSlowMA)
{ Print("ERROR: InpFastMA must be smaller than InpSlowMA."); return(false); }
if(InpFontSize < 6 || InpFontSize > 24)
{ Print("ERROR: InpFontSize must be between 6 and 24."); return(false); }
return(true);
}
double ComputeScale()
{
long dpi = TerminalInfoInteger(TERMINAL_SCREEN_DPI);
if(dpi <= 0) dpi = 96;
g_dpiScale = (double)dpi / 96.0;
if(g_dpiScale < 0.6) g_dpiScale = 0.6;
if(g_dpiScale > 2.5) g_dpiScale = 2.5;
double s = ((double)InpFontSize / 9.0) * g_dpiScale;
if(s < 0.5) s = 0.5;
if(s > 3.0) s = 3.0;
return(s);
}
int SX(double baseVal) { int v = (int)MathRound(baseVal * g_scale); return(v < 1 ? 1 : v); }
int FontPt() { int v = (int)MathRound(InpFontSize * g_dpiScale); if(v < 5) v = 5; if(v > 72) v = 72; return(v); }
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
ObjectsDeleteAll(0, PFX);
if(hFastShort != INVALID_HANDLE) { IndicatorRelease(hFastShort); hFastShort = INVALID_HANDLE; }
if(hSlowShort != INVALID_HANDLE) { IndicatorRelease(hSlowShort); hSlowShort = INVALID_HANDLE; }
if(hFastMedium != INVALID_HANDLE) { IndicatorRelease(hFastMedium); hFastMedium = INVALID_HANDLE; }
if(hSlowMedium != INVALID_HANDLE) { IndicatorRelease(hSlowMedium); hSlowMedium = INVALID_HANDLE; }
if(hFastLong != INVALID_HANDLE) { IndicatorRelease(hFastLong); hFastLong = INVALID_HANDLE; }
if(hSlowLong != INVALID_HANDLE) { IndicatorRelease(hSlowLong); hSlowLong = INVALID_HANDLE; }
}
bool GetTrendDirection(int fastHandle, int slowHandle, int &outDir)
{
double fastVal[1], slowVal[1];
if(CopyBuffer(fastHandle, 0, 0, 1, fastVal) <= 0) return(false);
if(CopyBuffer(slowHandle, 0, 0, 1, slowVal) <= 0) return(false);
if(fastVal[0] > slowVal[0]) outDir = 1;
else if(fastVal[0] < slowVal[0]) outDir = -1;
else outDir = 0;
return(true);
}
int FindSubWindow()
{
int winTotal = (int)ChartGetInteger(0, CHART_WINDOWS_TOTAL);
for(int w = 0; w < winTotal; w++)
{
int total = ChartIndicatorsTotal(0, w);
for(int k = 0; k < total; k++)
{
if(ChartIndПоказано первые 50% кода (символов: 9425)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.