CM_Strength
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «cm_strength_plsoft.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
CM_Strength — это пользовательский индикатор для MetaTrader 4, отображающий на графике аналитическую таблицу с данными по 28 валютным парам. Продукт рассчитывает и визуализирует текущую и предыдущую силу валют на основе соотношения цены к дневному диапазону, отображая результаты в виде числовых значений с цветовой индикацией.
Индикатор периодически обновляет данные с помощью таймера, перерисовывая графические объекты на графике. Также поддерживается обработка событий графика, обнаружение новых свечей и запись расчётных данных в CSV-файлы. Встроена система оценок с цветовой кодировкой для быстрой оценки состояния рынка.
Продукт предназначен для визуального анализа валютных пар и их относительной силы в режиме реального времени. Индикатор работает на указанном таймфрейме и предоставляет пользователю настраиваемые параметры позиционирования и количества анализируемых свечей.
Настройки программы
| Настройка | Описание |
|---|---|
| z_axis | z_axis — Вертикальное расстояние между строками таблицы |
| x_axis | x_axis — Смещение по горизонтали для объектов на графике |
| y_axis | y_axis — Смещение по вертикали для объектов на графике |
| timeframe | timeframe — Таймфрейм для расчётов |
| lookback | lookback — Количество свечей для расчётов |
| lastbar | lastbar — Начальная свеча для расчётов |
Поиск по коду файла
???//+------------------------------------------------------------------+
#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
#define ALERT_BAR 1
sinput int z_axis = 12;
sinput int x_axis = 10;
sinput int y_axis = 50;
input ENUM_TIMEFRAMES timeframe = PERIOD_M15; // Timeframe Fibonacci corto
input int lookback = 144; // Numero di candele Fibonacci corto
input int lastbar = 0; // Partenza Fibonacci corto
bool UseDefaultPairs = true; // Use the default 28 pairs
string OwnPairs = ""; // Comma seperated own pair list
static datetime g_lastCandleOpenTime;
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);
string clos;
string plsoft;
string subfolder="";
string namafile="";
string date_="";
string time_="";
string a="|";
int handlefile=0;
bool writefile=false;
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 strength_old;
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;
double open;
double close;
double bid;
double point;
double Signalperc;
double SigRatio;
double SigRelStr;
double SigBSRatio;
double SigCRS;
double SigGap;
double SigGapPrev;
double SigRatioPrev;
int shift;
}; signal signals[];
/*
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[];
*/
string BaseCur, QuoteCur, tMessage;
double BaseVal, QuoteVal, PairVal;
string Symb_text;
double Symb_value;
string FirstCurr = "";
string SecondCurr = "";
int BidRatio[28];
double priceLow[28];
double priceHigh[28];
int Jolly[28];
int alertmail[28][6][2];
color MyColor;
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();
GetCurr();
}
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
}
void GetCurr()
{
for(int j=0; j<28; j++)
{
WriteSuperMinMax(TradePairs[j],j);
BaseCur = StringSubstr(TradePairs[j],0,3)+"currdig";
QuoteCur = StringSubstr(TradePairs[j],3,3)+"currdig";
SetText("Symb_"+IntegerToString(j),TradePairs[j],x_axis,(j*z_axis)+y_axis,clrAqua,10);
SetText("SymbolA_"+IntegerToString(j),ObjectDescription(BaseCur) ,x_axis+90,(j*z_axis)+y_axis,color_for_profit(ObjectDescription(BaseCur)) ,10);
SetText("SymbolB_"+IntegerToString(j),ObjectDescription(QuoteCur),x_axis+110,(j*z_axis)+y_axis,color_for_profit(ObjectDescription(QuoteCur)) ,10);
double diff = StringToDouble(ObjectDescription(BaseCur)) - StringToDouble(ObjectDescription(QuoteCur)) ;
int Passo ; if (diff <=0 ) { Passo=60;} else { Passo=65; }
SetText("SymbolC_"+IntegerToString(j),DoubleToString(diff,1),x_axis+Passo,(j*z_axis)+y_axis,color_for_diff(diff) ,10);
if(StringSubstr(TradePairs[j],0,3)==FirstCurr || StringSubstr(TradePairs[j],0,3)==SecondCurr) { alertmail[j][2][0]=1; }else{ alertmail[j][2][0]=0; }
if(StringSubstr(TradePairs[j],3,3)==SecondCurr || StringSubstr(TradePairs[j],3,3)==FirstCurr ) { alertmail[j][3][1]=1; }else{ alertmail[j][3][1]=0; }
if(priceLow[j]<0){
alertmail[j][0][0]=1;
MyColor = Red;
SetText("priceL"+IntegerToString(j),DoubleToStr(priceLow[j],2) ,x_axis+140,(j*z_axis)+y_axis,MyColor,10);}
else if(priceLow[j]>1){
alertmail[j][0][1]=1;
MyColor = Gold;
SetText("priceL"+IntegerToString(j),DoubleToStr(priceLow[j],2) ,x_axis+140,(j*z_axis)+y_axis,MyColor,10);}
else{
alertmail[j][0][0]=0; alertmail[j][0][1]=0;
SetText("priceL"+IntegerToString(j),DoubleToStr(priceLow[j],2) ,x_axis+140,(j*z_axis)+y_axis,clrAqua,10);}
if(priceHigh[j]<0){
alertmail[j][1][0]=1;
MyColor = Red;
SetText("priceH"+IntegerToString(j),DoubleToStr(priceHigh[j],2) ,x_axis+170,(j*z_axis)+y_axis,MyColor,10);}
else if(priceHigh[j]>1){
alertmail[j][1][1]=1;
MyColor = Gold;
SetText("priceH"+IntegerToString(j),DoubleToStr(priceHigh[j],2) ,x_axis+170,(j*z_axis)+y_axis,MyColor,10);}
else{
alertmail[j][1][0]=0; alertmail[j][1][1]=0;
SetText("priceH"+IntegerToString(j),DoubleToStr(priceHigh[j],2) ,x_axis+170,(j*z_axis)+y_axis,clrAqua,10);}
int passo = 4;
switch(j)
{
case 2 : passo=3; break;
case 6 : passo=3; break;
case 7 : passo=2; break;
case 12 : passo=2; break;
case 18 : passo=2; break;
case 23 : passo=3; break;
case 27 : passo=2; break;
}
SetText("price"+IntegerToString(j),DoubleToStr(iClose(TradePairs[j],0,0),passo),x_axis+200,(j*z_axis)+y_axis,clrWhiteSmoke,10);
long Spread=NormalizeDouble(MarketInfo(TradePairs[j], MODE_SPREAD),1);
if (Spread <=10 ) { passo=14;}
else if (Spread <=100 ) { passo=7; }
else if (Spread <=1000 ) { passo=0; }
SetText("Spread_"+IntegerToString(j),IntegerToString(Spread)+"p",x_axis+250+passo,(j*z_axis)+y_axis,clrAqua,10);
int PassoBR ; if (BidRatio[j] <=10 ) { PassoBR =292;} else { PassoBR=285; }
SetText("BidRatio_"+IntegerToString(j),IntegerToString(DoubleToStr(BidRatio[j],1))+"%",x_axis+PassoBR,(j*z_axis)+y_axis,clrOrange,10);
GetAlert(j);
}
}
void GetAlert(int i)
{
int punteggio = alertmail[i][0][0]+alertmail[i][0][1]+ // Fibo L
alertmail[i][1][0]+alertmail[i][1][1]+ // Fibo H
alertmail[i][2][0]+alertmail[i][2][1]+ // Currency Quote Cur
alertmail[i][3][0]+alertmail[i][3][1]+ // Currency Base
Jolly[i];
MyColor = clrGray;
if(punteggio >= 1){
switch(punteggio)
{
case 1: MyColor = clrAqua;break;
case 2: MyColor = clrTomato;break;
case 3: MyColor = clrGold;break;
case 4: MyColor = clrGreenYellow;break;
}
}
Показано первые 50% кода (символов: 17788)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.