cm_strength.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «cm_strength.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
CM_Strength — это пользовательский индикатор для MetaTrader 4, отображающий таблицу относительной силы восьми основных валют (USD, EUR, GBP, JPY, AUD, NZD, CAD, CHF) на графике. Валюты ранжируются по убыванию текущей силы, а также сравниваются с показателями, рассчитанными по данным 30-минутной давности, что позволяет оценить динамику изменения силы.
Индикатор поддерживает выбор между стандартным набором из 28 торговых пар и пользовательским списком пар, задаваемым через перечисление через запятую. Для каждой пары рассчитывается отношение текущей цены к диапазону дня, по которому определяется условная оценка силы.
Результаты отображаются в виде текстовых меток на графике с цветовой индикацией уровня силы и стрелками направления изменения (рост, падение, стабильность). Позиция таблицы на графике настраивается двумя параметрами координат.
Индикатор использует таймер для периодического пересчёта данных и обновления отображения. Обработчик торговых событий присутствует, но не выполняет торговых операций.
Настройки программы
| Настройка | Описание |
|---|---|
| x_axis | Ось X — Горизонтальная позиция отображения таблицы силы на графике (в пикселях от левого верхнего угла). |
| y_axis | Ось Y — Вертикальная позиция отображения таблицы силы на графике (в пикселях от левого верхнего угла). |
Поиск по коду файла
#property version "1.00"
#property strict
#property indicator_chart_window
#define BullColor Lime
#define BearColor Red
#define NONE 0
#define DOWN -1
#define UP 1
sinput int x_axis =0;
sinput int y_axis =70;
bool UseDefaultPairs = true; // Use the default 28 pairs
string OwnPairs = ""; // Comma seperated own pair list
string DefaultPairs[] = {"AUDCAD","AUDCHF","AUDJPY","AUDNZD","AUDUSD","CADCHF","CADJPY","CHFJPY","EURAUD","EURCAD","EURCHF","EURGBP","EURJPY","EURNZD","EURUSD","GBPAUD","GBPCAD","GBPCHF","GBPJPY","GBPNZD","GBPUSD","NZDCAD","NZDCHF","NZDJPY","NZDUSD","USDCAD","USDCHF","USDJPY"};
string TradePairs[];
string curr[8] = {"USD","EUR","GBP","JPY","AUD","NZD","CAD","CHF"};
string EUR[7] = {"EURAUD","EURCAD","EURCHF","EURGBP","EURJPY","EURNZD","EURUSD"};
string GBP[6] = {"GBPAUD","GBPCAD","GBPCHF","GBPJPY","GBPNZD","GBPUSD"};
string GBP_R[1] = {"EURGBP"};
string CHF[1] = {"CHFJPY"};
string CHF_R[6] = {"AUDCHF","CADCHF","EURCHF","GBPCHF","NZDCHF","USDCHF"};
string USD[3] = {"USDCAD","USDCHF","USDJPY"};
string USD_R[4] = {"AUDUSD","EURUSD","GBPUSD","NZDUSD"};
string CAD[2] = {"CADCHF","CADJPY"};
string CAD_R[5] = {"AUDCAD","EURCAD","GBPCAD","NZDCAD","USDCAD"};
string NZD[4] = {"NZDCAD","NZDCHF","NZDJPY","NZDUSD"};
string NZD_R[3] = {"AUDNZD","EURNZD","GBPNZD"};
string AUD[5] = {"AUDCAD","AUDCHF","AUDJPY","AUDNZD","AUDUSD"};
string AUD_R[2] = {"EURAUD","GBPAUD"};
string JPY_R[7] = {"AUDJPY","CADJPY","CHFJPY","EURJPY","GBPJPY","NZDJPY","USDJPY"};
double currstrength[8];
double prevstrength[8];
string postfix=StringSubstr(Symbol(),6,6);
struct pairinf {
double PairPip;
int pipsfactor;
double Pips;
double PipsSig;
double Pipsprev;
double Spread;
double point;
int lastSignal;
int base;
int quote;
}; pairinf pairinfo[];
struct currency
{
string curr;
double strength;
double prevstrength;
double crs;
int sync;
datetime lastbar;
}
; currency currencies[8];
struct signal {
string symbol;
double range;
double range1;
double ratio;
double ratio1;
double bidratio;
double fact;
double strength;
double strength1;
double strength2;
double calc;
double strength3;
double strength4;
double strength5;
double strength6;
double strength7;
double strength8;
double strength_Gap;
double hi;
double lo;
double prevratio;
double prevbid;
int shift;
double open;
double close;
double bid;
double point;
double Signalperc;
double SigRatio;
double SigRelStr;
double SigBSRatio;
double SigCRS;
double SigGap;
double SigGapPrev;
double SigRatioPrev;
double Signalrsi;
}; signal signals[];
int OnInit()
{
// код доступен только после оплаты
}
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[])
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
EventKillTimer();
ObjectsDeleteAll();
}
void OnTimer()
{
GetSignals();
displayMeter();
}
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
}
void displayMeter() {
double arrt[8][3];
int arr2,arr3;
arrt[0][0] = currency_strength(curr[0]); arrt[1][0] = currency_strength(curr[1]); arrt[2][0] = currency_strength(curr[2]);
arrt[3][0] = currency_strength(curr[3]); arrt[4][0] = currency_strength(curr[4]); arrt[5][0] = currency_strength(curr[5]);
arrt[6][0] = currency_strength(curr[6]); arrt[7][0] = currency_strength(curr[7]);
arrt[0][2] = old_currency_strength(curr[0]); arrt[1][2] = old_currency_strength(curr[1]);arrt[2][2] = old_currency_strength(curr[2]);
arrt[3][2] = old_currency_strength(curr[3]); arrt[4][2] = old_currency_strength(curr[4]);arrt[5][2] = old_currency_strength(curr[5]);
arrt[6][2] = old_currency_strength(curr[6]);arrt[7][2] = old_currency_strength(curr[7]);
arrt[0][1] = 0; arrt[1][1] = 1; arrt[2][1] = 2; arrt[3][1] = 3; arrt[4][1] = 4;arrt[5][1] = 5; arrt[6][1] = 6; arrt[7][1] = 7;
ArraySort(arrt, WHOLE_ARRAY, 0, MODE_DESCEND);
for (int m = 0; m < 8; m++) {
arr2 = arrt[m][1];
arr3=(int)arrt[m][2];
currstrength[m] = arrt[m][0];
prevstrength[m] = arrt[m][2];
SetText(curr[arr2]+"pos",IntegerToString(m+1)+".",x_axis+615,(m*18)+y_axis+17,color_for_profit(arrt[m][0]),12);
SetText(curr[arr2]+"curr", curr[arr2],x_axis+630,(m*18)+y_axis+17,color_for_profit(arrt[m][0]),12);
SetText(curr[arr2]+"currdig", DoubleToStr(arrt[m][0],1),x_axis+670,(m*18)+y_axis+17,color_for_profit(arrt[m][0]),12);
if(currstrength[m] > prevstrength[m]){SetObjText("Sdir"+IntegerToString(m),CharToStr(233),x_axis+700,(m*18)+y_axis+17,BullColor,12);}
else if(currstrength[m] < prevstrength[m]){SetObjText("Sdir"+IntegerToString(m),CharToStr(234),x_axis+700,(m*18)+y_axis+17,BearColor,12);}
else {SetObjText("Sdir"+IntegerToString(m),CharToStr(243),x_axis+700,(m*18)+y_axis+17,clrYellow,12);}
}
ChartRedraw();
}
color color_for_profit(double total)
{
if(total<2.0)
return (clrRed);
if(total<=3.0)
return (clrOrangeRed);
if(total>7.0)
return (clrLime);
if(total>6.0)
return (clrGreen);
if(total>5.0)
return (clrSandПоказано первые 50% кода (символов: 10285)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.