CurrencySlopeStrength
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «gary.baludasupercss.v.2.0.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
CurrencySlopeStrength — это пользовательский индикатор для MetaTrader 4, рассчитывающий силу валютных трендов (Currency Slope Strength) по восьми основным валютам. В основе расчёта лежит метод тройной скользящей средней (TMA), нормализованный с помощью ATR, что позволяет оценить кратрейнд каждой валюты на выбранном таймфрейме.
Индикатор отображает на графике таблицы валютных значений с поддержкой до трёх таймфреймов одновременно (основной, средний и дополнительный). Каждая валюта представлена отдельной линией в отдельном окне, а также числовыми значениями в таблицах прямо на графике.
Продукт включает систему визуальных сигналов: стрелки покупки и продажи при пересечении валютных значений, линии уровней пересечения, а также цветовую индикацию силы пересечений. Доступны всплывающие уведомления, email- и push-оповещения при выполнении заданных условий пересечения.
Настройки охватывают выбор валют, таймфреймов, цветов, ширины и стилей линий, параметры отображения таблиц и стрелок, а также параметры задержки обновления данных и тип оповещений.
Настройки программы
| Настройка | Описание |
|---|---|
| gen | Общие настройки — Групповой параметр общих настроек |
| autoSymbols | Автосимволы — Автоматическое формирование списка символов |
| symbolsToWeigh: CADCHF,NZDCAD,EURCHF,EURGBP, (symbolsToWeigh) | Список символов — Список символов для расчёта весов валют |
| maxBars | Максимум баров — Максимальное количество баров для расчёта |
| weighOnlySymbolOnChart | Взвешивание по символу графика — Использовать только символ на графике для расчёта весов |
| nonPropFont | Шрифт текста — Шрифт для отображения текста на графике |
| addSundayToMonday | Добавить воскресенье к понедельнику — Учёт воскресных свечей как понедельних при расчёте на D1 |
| showOnlySymbolOnChart | Только символ на графике — Отображение только символа на графике |
| ind | Настройки индикатора — Групповой параметр настроек индикатора |
| autoTimeFrame | Автотаймфрейм — Автоматический выбор таймфреймов для таблиц |
| ind_tf | Список таймфреймов — Список доступных таймфреймов для автовыбора |
| timeFrame: CSS & left column (timeFrame) | Основной таймфрейм — Основной таймфрейм для CSS и левого столбца |
| extraTimeFrame: center column (extraTimeFrame) | Дополнительный таймфрейм (центр) — Дополнительный таймфрейм для центрального столбца таблицы |
| extraTimeFrame2: right column (extraTimeFrame2) | Дополнительный таймфрейм (правый) — Дополнительный таймфрейм для правого столбца таблицы |
| NoOfTimeFrames: num of TF to display (NoOfTimeFrames) | Количество таймфреймов — Количество отображаемых таймфреймов в таблице (до 3) |
| ignoreFuture | Игнорировать будущие свечи — Игнорирование будущих свечей при расчёте |
| showCrossAlerts | Уведомления о пересечениях — Включение/отключение уведомлений о пересечениях |
| differenceThreshold | Порог разницы — Порог разницы для отображения стрелок |
| showLevelCross | Показать пересечение уровней — Отображение линий пересечения уровней |
| levelCrossValue | Значение уровня пересечения — Значение уровня для пересечения |
| SlopeMAPeriod: CSSv3.8=21 ~ CSSSuper=7 (SlopeMAPeriod) | Период MA наклона — Период скользящей средней для расчёта наклона |
| SlopeATRPeriod: CSSv3.8=100 ~ CSSSuper=50 (SlopeATRPeriod) | Период ATR наклона — Период ATR для нормализации наклона |
| PopupAlert | Всплывающие уведомления — Включение/отключение всплывающих уведомлений |
| EmailAlert | Email-уведомления — Включение/отключение отправки email-уведомлений |
| PushAlert | Push-уведомления — Включение/отключение push-уведомлений |
| cur | Настройки валют — Групповой параметр настроек валют |
| USD | Включить USD — Включение/отключение отображения и расчёта для валюты USD |
| EUR | Включить EUR — Включение/отключение отображения и расчёта для валюты EUR |
| GBP | Включить GBP — Включение/отключение отображения и расчёта для валюты GBP |
| CHF | Включить CHF — Включение/отключение отображения и расчёта для валюты CHF |
| JPY | Включить JPY — Включение/отключение отображения и расчёта для валюты JPY |
| AUD | Включить AUD — Включение/отключение отображения и расчёта для валюты AUD |
| CAD | Включить CAD — Включение/отключение отображения и расчёта для валюты CAD |
| NZD | Включить NZD — Включение/отключение отображения и расчёта для валюты NZD |
| colour | Цветовые настройки — Групповой параметр цветовых настроек |
| Color_USD | Цвет линии USD — Цвет линии для валюты USD |
| Color_EUR | Цвет линии EUR — Цвет линии для валюты EUR |
| Color_GBP | Цвет линии GBP — Цвет линии для валюты GBP |
| Color_CHF | Цвет линии CHF — Цвет линии для валюты CHF |
| Color_JPY | Цвет линии JPY — Цвет линии для валюты JPY |
| Color_AUD | Цвет линии AUD — Цвет линии для валюты AUD |
| Color_CAD | Цвет линии CAD — Цвет линии для валюты CAD |
| Color_NZD | Цвет линии NZD — Цвет линии для валюты NZD |
| line_width_USD | Толщина линии USD — Толщина линии для валюты USD |
| line_style_USD | Стиль линии USD — Стиль линии для валюты USD |
| line_width_EUR | Толщина линии EUR — Толщина линии для валюты EUR |
| line_style_EUR | Стиль линии EUR — Стиль линии для валюты EUR |
| line_width_GBP | Толщина линии GBP — Толщина линии для валюты GBP |
| line_style_GBP | Стиль линии GBP — Стиль линии для валюты GBP |
| line_width_JPY | Толщина линии JPY — Толщина линии для валюты JPY |
| line_style_JPY | Стиль линии JPY — Стиль линии для валюты JPY |
| line_width_AUD | Толщина линии AUD — Толщина линии для валюты AUD |
| line_style_AUD | Стиль линии AUD — Стиль линии для валюты AUD |
| line_width_CAD | Толщина линии CAD — Толщина линии для валюты CAD |
| line_style_CAD | Стиль линии CAD — Стиль линии для валюты CAD |
| line_width_NZD | Толщина линии NZD — Толщина линии для валюты NZD |
| line_style_NZD | Стиль линии NZD — Стиль линии для валюты NZD |
| line_width_CHF | Толщина линии CHF — Толщина линии для валюты CHF |
| line_style_CHF | Стиль линии CHF — Стиль линии для валюты CHF |
| colorWeakCross | Цвет слабого пересечения — Цвет слабого пересечения |
| colorNormalCross | Цвет обычного пересечения — Цвет обычного пересечения |
| colorStrongCross | Цвет сильного пересечения — Цвет сильного пересечения |
| colorDifferenceUp | Цвет разницы вверх — Цвет при положительной разнице валютных значений |
| colorDifferenceDn | Цвет разницы вниз — Цвет при отрицательной разнице валютных значений |
| colorDifferenceLo | Цвет разницы низкая — Цвет при разнице ниже порога |
| colorTimeframe | Цвет таймфрейма — Цвет текста таймфрейма в таблице |
| colorLevelHigh | Цвет уровня высокий — Цвет маркера пересечения верхнего уровня |
| colorLevelLow | Цвет уровня низкий — Цвет маркера пересечения нижнего уровня |
| disp | Настройки отображения — Групповой параметр настроек отображения |
| displayTextSize | Размер текста — Размер шрифта текста на графике |
| horizontalOffset | Горизонтальное смещение — Горизонтальное смещение элементов таблицы |
| verticalOffset | Вертикальное смещение — Вертикальное смещение элементов таблицы |
| tableVertOffset: 3rd table (tableVertOffset) | Вертикальное смещение таблицы — Вертикальное смещение третьей таблицы |
| horizontalShift: columns (horizontalShift) | Сдвиг столбцов — Горизонтальный шаг столбцов таблицы |
| verticalShift: rows (verticalShift) | Сдвиг строк — Вертикальный шаг строк таблицы |
| gen2 | Настройки стрелок — Групповой параметр настроек отображения стрелок |
| showArrows: set showOnlySymbolOnChart to true (showArrows) | Показать стрелки — Отображение стрелок покупки и продажи |
| BuyArrowColor | Цвет стрелки покупки — Цвет стрелки покупки на графике |
| BuyArrowFontSize | Размер шрифта стрелки покупки — Размер шрифта стрелки покупки |
| SellArrowColor | Цвет стрелки продажи — Цвет стрелки продажи на графике |
| SellArrowFontSize | Размер шрифта стрелки продажи — Размер шрифта стрелки продажи |
| rede | Настройки задержки — Групповой параметр настроек задержки чтения |
| EveryTickMode: set to false if viewing full css tables w/3 TFs (EveryTickMode) | Обновление каждый тик — Режим обновления данных каждый тик или по таймеру |
| ReadEveryNewBar: reads every new bar even if ReadEveryXSeconds hasn't expired (ReadEveryNewBar) | Читать при новом баре — Чтение данных при каждом новом баре |
| ReadEveryXSeconds: set EveryTickMode to false (ReadEveryXSeconds) | Интервал чтения (секунды) — Интервал чтения данных в секундах (при отключённом EveryTickMode) |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 8
#define version "v3.8"
#property strict
#define CURRENCYCOUNT 8
extern string gen = "----General inputs----"; //----
extern bool autoSymbols = false;
extern string symbolsToWeigh = "AUDCAD,AUDCHF,AUDJPY,AUDNZD,AUDUSD,CADJPY,CHFJPY,EURAUD,EURCAD,EURJPY,EURNZD,EURUSD,GBPAUD,GBPCAD,GBPCHF,GBPJPY,GBPNZD,GBPUSD,NZDCHF,NZDJPY,NZDUSD,USDCAD,USDCHF,USDJPY"; //symbolsToWeigh: CADCHF,NZDCAD,EURCHF,EURGBP,
extern int maxBars = 200;
extern bool weighOnlySymbolOnChart = true;
extern string nonPropFont = "Lucida Console";
extern bool addSundayToMonday = true;
extern bool showOnlySymbolOnChart = true;
extern string ind = "----Indicator inputs----"; //----
extern bool autoTimeFrame = true;
extern string ind_tf = "timeFrame M1,M5,M15,M30,H1,H4,D1,W1,MN"; //----
extern string timeFrame = "H4"; //timeFrame: CSS & left column
extern string extraTimeFrame = "D1"; //extraTimeFrame: center column
extern string extraTimeFrame2 = "H1"; //extraTimeFrame2: right column
extern int NoOfTimeFrames = 3; //NoOfTimeFrames: num of TF to display
extern bool ignoreFuture = true;
extern bool showCrossAlerts = true;
extern double differenceThreshold = 0.0;
extern bool showLevelCross = true;
extern double levelCrossValue = 2.0;
extern int SlopeMAPeriod = 7; //SlopeMAPeriod: CSSv3.8=21 ~ CSSSuper=7
extern int SlopeATRPeriod = 50; //SlopeATRPeriod: CSSv3.8=100 ~ CSSSuper=50
extern bool PopupAlert = true;
extern bool EmailAlert = true;
extern bool PushAlert = true;
extern string cur = "----Currency inputs----"; //----
extern bool USD = true;
extern bool EUR = true;
extern bool GBP = true;
extern bool CHF = true;
extern bool JPY = true;
extern bool AUD = true;
extern bool CAD = true;
extern bool NZD = true;
extern string colour="----Colo(u)r inputs----"; //----
extern color Color_USD = clrRed;
extern color Color_EUR = clrDeepSkyBlue;
extern color Color_GBP = clrRoyalBlue;
extern color Color_CHF = clrPaleTurquoise;
extern color Color_JPY = clrGold;
extern color Color_AUD = clrDarkOrange;
extern color Color_CAD = clrPink;
extern color Color_NZD = clrTan;
extern int line_width_USD = 3;
extern int line_style_USD = 0;
extern int line_width_EUR = 3;
extern int line_style_EUR = 0;
extern int line_width_GBP = 3;
extern int line_style_GBP = 0;
extern int line_width_JPY = 3;
extern int line_style_JPY = 0;
extern int line_width_AUD = 3;
extern int line_style_AUD = 0;
extern int line_width_CAD = 3;
extern int line_style_CAD = 0;
extern int line_width_NZD = 3;
extern int line_style_NZD = 0;
extern int line_width_CHF = 3;
extern int line_style_CHF = 0;
extern color colorWeakCross = clrGold;
extern color colorNormalCross = clrGold;
extern color colorStrongCross = clrGold;
extern color colorDifferenceUp = 0x303000;
extern color colorDifferenceDn = 0x000030;
extern color colorDifferenceLo = 0x005454;
extern color colorTimeframe = clrWhite;
extern color colorLevelHigh = clrLimeGreen;
extern color colorLevelLow = clrCrimson;
extern string disp = "----Display Inputs----"; //----
extern int displayTextSize = 11;
extern int horizontalOffset = 10;
extern int verticalOffset = 10;
extern int tableVertOffset = 170; //tableVertOffset: 3rd table
extern int horizontalShift = 20; //horizontalShift: columns
extern int verticalShift = 15; //verticalShift: rows
extern string gen2 = "----Arrow Display----"; //----
extern bool showArrows = true; //showArrows: set showOnlySymbolOnChart to true
extern color BuyArrowColor = clrDarkGreen;
extern int BuyArrowFontSize = 22;
extern color SellArrowColor = clrMaroon;
extern int SellArrowFontSize = 22;
int ATRPeriodArrows=20;
double ATRMultiplierArrows=1.0;
bool OnlyDrawArrowsOnNewBar=true;
datetime drawArrowTime=0;
bool BuyArrowActive=false, SellArrowActive=false;
int leftBarPrev=0, rightBarPrev=0;
extern string rede = "----Read Delay----"; //----
extern bool EveryTickMode = true; //EveryTickMode: set to false if viewing full css tables w/3 TFs
extern bool ReadEveryNewBar = true; //ReadEveryNewBar: reads every new bar even if ReadEveryXSeconds hasn't expired
extern int ReadEveryXSeconds = 10; //ReadEveryXSeconds: set EveryTickMode to false
datetime NextReadTime=0, lastBarTime=0;
string indicatorName="CurrencySlopeStrength";
string shortName;
int userTimeFrame;
int userExtraTimeFrame;
int userExtraTimeFrame2;
string almostUniqueIndex;
bool sundayCandlesDetected;
string objectName;
int windex;
int size;
int digits=0;
string ObjectSuffix="_SCSS";
string ObjectSuffix2="_objdel";
bool IsInit;
double arrUSD[];
double arrEUR[];
double arrGBP[];
double arrJPY[];
double arrAUD[];
double arrCAD[];
double arrNZD[];
double arrCHF[];
int symbolCount;
string symbolNames[];
string currencyNames[CURRENCYCOUNT]={ "USD","EUR","GBP","JPY","AUD","CAD","NZD","CHF" };
double currencyValues[CURRENCYCOUNT]; // Currency slope strength
double currencyValuesPrior[CURRENCYCOUNT]; // Currency slope strength prior bar
double currencyOccurrences[CURRENCYCOUNT]; // Holds the number of occurrences of each currency in symbols
int line_width[CURRENCYCOUNT];
int line_style[CURRENCYCOUNT];
color currencyColors[CURRENCYCOUNT];
int OnInit()
{
// код доступен только после оплаты
}
void initSymbols()
{
int i;
string symbolExtraChars=StringSubstrOld(Symbol(),6,4);
if(weighOnlySymbolOnChart)
{
symbolsToWeigh=StringSubstrOld(Symbol(),0,6);
}
symbolsToWeigh = StringTrimLeft(symbolsToWeigh);
symbolsToWeigh = StringTrimRight(symbolsToWeigh);
if(StringSubstrOld(symbolsToWeigh,StringLen(symbolsToWeigh)-1)!=",")
{
symbolsToWeigh=StringConcatenate(symbolsToWeigh,",");
}
if(autoSymbols)
{
createSymbolNamesArray();
if(weighOnlySymbolOnChart)
{
ArrayResize(symbolNames,1);
symbolNames[0]=Symbol();
}
}
else
{
i=StringFind(symbolsToWeigh,",");
while(i!=-1)
{
size=ArraySize(symbolNames);
string newSymbol=StringConcatenate(StringSubstrOld(symbolsToWeigh,0,i),symbolExtraChars);
ArrayResize(symbolNames,size+1);
symbolNames[size]=newSymbol;
symbolsToWeigh=StringSubstrOld(symbolsToWeigh,i+1);
i=StringFind(symbolsToWeigh,",");
}
}
if(showOnlySymbolOnChart)
{
symbolCount=ArraySize(symbolNames);
string tempNames[];
for(i=0; i<symbolCount; i++)
{
for(int j=0; j<CURRENCYCOUNT; j++)
{
if(StringFind(Symbol(),currencyNames[j])==-1)
{
continue;
}
if(StringFind(symbolNames[i],currencyNames[j])!=-1)
{
size=ArraySize(tempNames);
ArrayResize(tempNames,size+1);
tempNames[size]=symbolNames[i];
break;
}
}
}
for(i=0; i<ArraySize(tempNames); i++)
{
ArrayResize(symbolNames,i+1);
symbolNames[i]=tempNames[i];
}
}
else
{
string symbols = "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 tempSymbols[];
int count=0;
for(i=0;i<ArraySize(symbolNames);i++)
{
if(StringFind(symbols, StringSubstrOld(symbolNames[i],0,6)) != -1)
{
ArrayResize(tempSymbols,count+1);
tempSymbols[count] = symbolNames[i];
count++;
}
}
ArrayResize(symbolNames, ArraySize(tempSymbols));
ArrayCopy(symbolNames,tempSymbols,0,0,WHOLE_ARRAY);
}
symbolCount=ArraySize(symbolNames);
for(i=0; i<symbolCount; i++)
{
int currencyIndex=getCurrencyIndex(StringSubstrOld(symbolNames[i],0,3));
currencyOccurrences[currencyIndex]++;
currencyIndex=getCurrencyIndex(StringSubstrOld(symbolNames[i],3,3));
currencyOccurrences[currencyIndex]++;
}
if(!autoTimeFrame)
{
userTimeFrame = StrToTF(timeFrame); //css & left column
userExtraTimeFrame = StrToTF(extraTimeFrame); //center column
userExtraTimeFrame2 = StrToTF(extraTimeFrame2); //right column
}
else
{
userTimeFrame=Period();
if( userTimeFrame == PERIOD_M1 ) userExtraTimeFrame = PERIOD_M5;
else if( userTimeFrame == PERIOD_M5 ) userExtraTimeFrame = PERIOD_M15;
else if( userTimeFrame == PERIOD_M15 ) userExtraTimeFrame = PERIOD_M30;
else if( userTimeFrame == PERIOD_M30 ) userExtraTimeFrame = PERIOD_H1;
else if( userTimeFrame == PERIOD_H1 ) userExtraTimeFrame = PERIOD_H4;
else if( userTimeFrame == PERIOD_H4 ) userExtraTimeFrame = PERIOD_D1;
else if( userTimeFrame == PERIOD_D1 ) userExtraTimeFrame = PERIOD_W1;
else if( userTimeFrame == PERIOD_W1 ) userExtraTimeFrame = PERIOD_MN1;
else if( userTimeFrame == PERIOD_MN1 ) userExtraTimeFrame = PERIOD_MN1;
if( userTimeFrame == PERIOD_M1 ) userExtraTimeFrame2 = PERIOD_M1;
else if( userTimeFrame == PERIOD_M5 ) userExtraTimeFrame2 = PERIOD_M1;
else if( userTimeFrame == PERIOD_M15 ) userExtraTimeFrame2 = PERIOD_M5;
else if( userTimeFrame == PERIOD_M30 ) userExtraTimeFrame2 = PERIOD_M15;
else if( userTimeFrame == PERIOD_H1 ) userExtraTimeFrame2 = PERIOD_M30;
else if( userTimeFrame == PERIOD_H4 ) userExtraTimeFrame2 = PERIOD_H1;
else if( userTimeFrame == PERIOD_D1 ) userExtraTimeFrame2 = PERIOD_H4;
else if( userTimeFrame == PERIOD_W1 ) userExtraTimeFrame2 = PERIOD_D1;
else if( userTimeFrame == PERIOD_MN1 ) userExtraTimeFrame2 = PERIOD_W1;
}
}
int getCurrencyIndex(string currency)
{
for(int i=0; i<CURRENCYCOUNT; i++)
{
if(currencyNames[i]==currency)
{
return(i);
}
}
return (-1);
}
void createSymbolNamesArray()
{
int hFileName=FileOpenHistory("symbols.raw",FILE_BIN|FILE_READ);
int recordCount=int(FileSize(hFileName)/1936);
int counter=0;
for(int i=0; i<recordCount; i++)
{
string tempSymbol=StringTrimLeft(StringTrimRight(FileReadString(hFileName,12)));
if(MarketInfo(tempSymbol,MODE_BID)>0 && MarketInfo(tempSymbol,MODE_TRADEALLOWED))
{
ArrayResize(symbolNames,counter+1);
symbolNames[counter]=tempSymbol;
counter++;
}
FileSeek(hFileName,1924,SEEK_CUR);
}
FileClose(hFileName);
}
string GetTimeframeString(int tf)
{
string result;
switch(tf)
{
case PERIOD_M1: result = "M1"; break;
case PERIOD_M5: result = "M5"; break;
case PERIOD_M15: result = "M15"; break;
case PERIOD_M30: result = "M30"; break;
case PERIOD_H1: result = "H1"; break;
case PERIOD_H4: result = "H4"; break;
case PERIOD_D1: result = "D1"; break;
case PERIOD_W1: result = "W1"; break;
case PERIOD_MN1: result = "MN1"; break;
default: result="SRITSOD";
}
return ( result );
}
void OnDeinit(const int reason)
{
for(int i=ObjectsTotal()-1;i>=0;i--)
{
if(StringFind(ObjectName(i),ObjectSuffix,0)>0)
{
ObjectDelete(ObjectName(i));
}
}
}//OnDeinit(const int reason)
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[])
{
// код доступен только после оплаты
}//OnCalculate()
double getSlope(string symbol,int tf,int shift)
{
double dblTma,dblPrev;
int shiftWithoutSunday=shift;
if(addSundayToMonday && sundayCandlesDetected && tf==PERIOD_D1)
{
if(TimeDayOfWeek(iTime(symbol,PERIOD_D1,shift))==0) shiftWithoutSunday++;
}
double atr=iATR(symbol,tf,SlopeATRPeriod,shiftWithoutSunday+10)/10;
double gadblSlope=0.0;
if(atr!=0)
{
if(ignoreFuture)
{
dblTma=iMA(symbol,tf,SlopeMAPeriod,0,MODE_LWMA,PRICE_CLOSE,shiftWithoutSunday);
dblPrev=(iMA(symbol,tf,SlopeMAPeriod,0,MODE_LWMA,PRICE_CLOSE,shiftWithoutSunday+1)*231+iClose(symbol,tf,shiftWithoutSunday)*20)/251;
}
else
{
dblTma=calcTma(symbol,tf,shiftWithoutSunday);
dblPrev=calcTma(symbol,tf,shiftWithoutSunday+1);
}
gadblSlope=(dblTma-dblPrev)/atr;
}
return ( gadblSlope );
}
double calcTma(string symbol,int tf,int shift)
{
double dblSum = iClose( symbol, tf, shift ) * 21;
double dblSumw = 21;
int jnx,knx;
for(jnx=1,knx=20; jnx<=20; jnx++,knx--)
{
dblSum += iClose(symbol, tf, shift + jnx) * knx;
dblSumw += knx;
if(jnx<=shift)
{
dblSum += iClose(symbol, tf, shift - jnx) * knx;
dblSumw += knx;
}
}
return ( dblSum / dblSumw );
}
void calcCSS(int tf,int shift)
{
int i;
for(i=0; i<symbolCount; i++)
{
double slope=getSlope(symbolNames[i],tf,shift);
currencyValues[getCurrencyIndex(StringSubstrOld(symbolNames[i], 0, 3))] += slope;
currencyValues[getCurrencyIndex(StringSubstrOld(symbolNames[i], 3, 3))] -= slope;
}
for(i=0; i<CURRENCYCOUNT; i++)
{
if(currencyOccurrences[i]>0) currencyValues[i]/=currencyOccurrences[i]; else currencyValues[i]=0;
}
}
void ShowCurrencyTable(int tf, int column, int rightBar2)
{
int i=0;
int tempValue, tempValue_2;
string showText, showText_2;
double slope=0, slope_2=0;
color showColor;
static datetime tLastAlert[8];
static datetime tLastAlert_1[8];
static datetime tLastAlert_2[8];
static datetime tLastAlert_3[8];
static datetime tLastAlert_4[8];
static datetime tLastAlert_3a, tLastAlert_3b;
static datetime tLastAlert_3c, tLastAlert_3d;
static datetime tLastAlert_3e, tLastAlert_3f;
static datetime tLastAlert_3g, tLastAlert_3h;
static datetime tLastAlert_3i, tLastAlert_3j;
static datetime tLastAlert_3k, tLastAlert_3l;
bool OkToSendAlerts = (!IsInit && rightBar2 == 0);
double Currency_Values[CURRENCYCOUNT][3]; //first time frame
double tempCurrencyValues[CURRENCYCOUNT][3]; //second time frame
double tempCurrencyValues2[CURRENCYCOUNT][3]; //third time frame
ArrayInitialize(Currency_Values,0.0);
ArrayInitialize(tempCurrencyValues,0.0);
ArrayInitialize(tempCurrencyValues2,0.0);
if(column == 1)
{
for(i=0; i<CURRENCYCOUNT; i++)
{
Currency_Values[i][0] = currencyValues[i];
Currency_Values[i][1] = NormalizeDouble(currencyValuesPrior[i], 2);
Currency_Values[i][2] = i;
}
}//if(column == 1)
if(column == 2)
{
for(i=0; i<symbolCount; i++)
{
slope=getSlope(symbolNames[i],tf,rightBar2);
slope_2=getSlope(symbolNames[i],tf,rightBar2+1);
tempCurrencyValues[getCurrencyIndex(StringSubstrOld(symbolNames[i], 0, 3))][0] += slope;
tempCurrencyValues[getCurrencyIndex(StringSubstrOld(symbolNames[i], 0, 3))][1] += slope_2;
tempCurrencyValues[getCurrencyIndex(StringSubstrOld(symbolNames[i], 3, 3))][0] -= slope;
tempCurrencyValues[getCurrencyIndex(StringSubstrOld(symbolNames[i], 3, 3))][1] -= slope_2;
}
for(i=0; i<CURRENCYCOUNT; i++)
{
tempCurrencyValues[i][2]=i;
if(currencyOccurrences[i]>0) tempCurrencyValues[i][0]/=currencyOccurrences[i]; else tempCurrencyValues[i][0]=0;
if(currencyOccurrences[i]>0) tempCurrencyValues[i][1]/=currencyOccurrences[i]; else tempCurrencyValues[i][1]=0;
}
}//if(column == 2)
if(column == 3)
{
for(i=0; i<symbolCount; i++)
{
slope=getSlope(symbolNames[i],userExtraTimeFrame2,rightBar2);
slope_2=getSlope(symbolNames[i],userExtraTimeFrame2,rightBar2+1);
tempCurrencyValues2[getCurrencyIndex(StringSubstrOld(symbolNames[i], 0, 3))][0] += slope;
tempCurrencyValues2[getCurrencyIndex(StringSubstrOld(symbolNames[i], 0, 3))][1] += slope_2;
tempCurrencyValues2[getCurrencyIndex(StringSubstrOld(symbolNames[i], 3, 3))][0] -= slope;
tempCurrencyValues2[getCurrencyIndex(StringSubstrOld(symbolNames[i], 3, 3))][1] -= slope_2;
}
for(i=0; i<CURRENCYCOUNT; i++)
{
tempCurrencyValues2[i][2]=i;
if(currencyOccurrences[i]>0) tempCurrencyValues2[i][0]/=currencyOccurrences[i]; else tempCurrencyValues2[i][0]=0;
if(currencyOccurrences[i]>0) tempCurrencyValues2[i][1]/=currencyOccurrences[i]; else tempCurrencyValues2[i][1]=0;
}
}//if(column == 3)
if(showOnlySymbolOnChart)
{
if(column == 1)
{
objectName=almostUniqueIndex+"_css_obj_column1_tf"+ObjectSuffix;
if(ObjectFind(objectName)==-1)
{
if(ObjectCreate(objectName,OBJ_LABEL,windex,0,0))
{
ObjectSet(objectName,OBJPROP_CORNER,1);
ObjectSet(objectName,OBJPROP_XDISTANCE,horizontalOffset+10+horizontalShift*6);
ObjectSet(objectName,OBJPROP_YDISTANCE,verticalOffset);
ObjectSet(objectName,OBJPROP_HIDDEN,true);
}
}
ObjectSetText(objectName,TFToString(userTimeFrame),displayTextSize,nonPropFont,colorTimeframe);
}//if(column == 1)
if(column ==2)
{
objectName=almostUniqueIndex+"_css_obj_column2_tf"+ObjectSuffix;
if(ObjectFind(objectName)==-1)
{
if(ObjectCreate(objectName,OBJ_LABEL,windex,0,0))
{
ObjectSet(objectName,OBJPROP_CORNER,1);
ObjectSet(objectName,OBJPROP_XDISTANCE,horizontalOffset+10+horizontalShift*3);
ObjectSet(objectName,OBJPROP_YDISTANCE,verticalOffset);
ObjectSet(objectName,OBJPROP_HIDDEN,true);
}
}
ObjectSetText(objectName,TFToString(userExtraTimeFrame),displayTextSize,nonPropFont,colorTimeframe);
}//if(column == 2)
if(column == 3)
{
objectName=almostUniqueIndex+"_css_obj_column3_tf"+ObjectSuffix;
if(ObjectFind(objectName)==-1)
{
if(ObjectCreate(objectName,OBJ_LABEL,windex,0,0))
{
ObjectSet(objectName,OBJPROP_CORNER,1);
ObjectSet(objectName,OBJPROP_XDISTANCE,horizontalOffset+10);
ObjectSet(objectName,OBJPROP_YDISTANCE,verticalOffset);
ObjectSet(objectName,OBJPROP_HIDDEN,true);
}
}
ObjectSetText(objectName,TFToString(userExtraTimeFrame2),displayTextSize,nonPropFont,colorTimeframe);
}//if(column == 3)
double Curr1Val=0, Curr1ValPrior=0, Curr2Val=0, Curr2ValPrior=0;
string Curr1, Curr2;
int index=getCurrencyIndex(StringSubstrOld(Symbol(),0,3));
int index2=getCurrencyIndex(StringSubstrOld(Symbol(),3,3));
Curr1=currencyNames[index];
Curr1Val=currencyValues[index];
Curr1ValPrior=currencyValuesPrior[index];
Curr2=currencyNames[index2];
Curr2Val=currencyValues[index2];
Curr2ValPrior=currencyValuesPrior[index2];
digits = GetDigits(Curr1+Curr2);
if(column == 1)
{
objectName=almostUniqueIndex+"_css_obj_column1_value1"+ObjectSuffix;
if(ObjectFind(objectName)==-1)
{
if(ObjectCreate(objectName,OBJ_LABEL,windex,0,0))
{
ObjectSet(objectName,OBJPROP_CORNER,1);
ObjectSet(objectName,OBJPROP_XDISTANCE,horizontalOffset+horizontalShift*6);
ObjectSet(objectName,OBJPROP_YDISTANCE,verticalOffset+verticalShift*1.5);
ObjectSet(objectName,OBJPROP_HIDDEN,true);
}
}
showText=RightAlign(DoubleToStrПоказано первые 50% кода (символов: 47531)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.