DuettoFX Mod
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «duettofx_mod.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
DuettoFX Mod — это пользовательский индикатор для MetaTrader 5, сравнивающий два валютных инструмента на основе RSI или стохастика. Индикатор рассчитывает нормализованную разницу (спред) между двумя аналитическими линиями и отображает её в виде гистограмм и линий на отдельном окне графика.
Индикатор предоставляет текстовую панель с информацией о корреляции между парами, среднем дневном диапазоне (ADR), размере лота и текущем спреде. Также доступны визуальные перекрёстки и метки для отслеживания точек пересечения двух инструментов.
Встроенные вспомогательные функции вычисляют корреляцию Пирсона, средний дневной диапазон цен и нормализованный суммарный спред. Все расчёты выполняются на каждом тике в функции обработки баровых данных.
Настройки программы
| Настройка | Описание |
|---|---|
| SetupIndicator | Тип аналитического индикатора: RSI или стохастик |
| period | Период расчёта основного индикатора |
| instrument_1 | Символ первого инструмента для сравнения |
| instrument_2 | Символ второго инструмента для сравнения |
| smoothing | Количество баров для усреднения значений индикатора |
| first_pair_lot | Размер лота для первой пары |
| show_spread | Отображение линии нормализованного спреда |
| show_spread_ma | Отображение линии скользящей средней спреда |
| MA_period | Период скользящей средней для линии спреда |
| MA_mode | Метод скользящей средней для расчёта линии спреда |
| show_text_interface | Отображение текстовой информационной панели |
| show_crosses | Отображение вертикальных линий пересечения инструментов |
| bar | Смещение бара для определения точек пересечения |
| show_labels | Отображение текстовых меток текущих значений |
| text_size | Размер шрифта для текстовых меток и панели |
| text_font | Шрифт для текстовых меток и панели |
Поиск по коду файла
???//+------------------------------------------------------------------+
#property description "modif. by Mobidik /2018.06.10/"
#property indicator_separate_window
#property indicator_buffers 8
#property indicator_color1 C'0x40,0x00,0x00'
#property indicator_color2 clrBlack
#property indicator_color3 C'0x00,0x40,0x00'
#property indicator_color4 clrBlack
#property indicator_color5 clrWhite
#property indicator_color6 clrGold
#property indicator_color7 clrBlue
#property indicator_color8 clrRed
#property indicator_width1 10
#property indicator_width2 10
#property indicator_width3 10
#property indicator_width4 10
#property indicator_width5 2
#property indicator_width6 2
#property indicator_width7 2
#property indicator_level1 50.0
#property indicator_levelcolor clrMediumTurquoise
enum enm
{
RS, // RSI
ST // Stochastic
};
extern enm SetupIndicator = 0;
extern int period = 120;
extern string instrument_1 = "EURUSD";
extern string instrument_2 = "GBPUSD";
extern int smoothing = 2;
extern double first_pair_lot = 1.0;
extern bool show_spread = TRUE;
extern bool show_spread_ma = FALSE;
extern int MA_period = 24;
extern ENUM_MA_METHOD MA_mode = 2;
extern bool show_text_interface = TRUE;
extern bool show_crosses = false;
extern int bar = 1;
extern bool show_labels = TRUE;
extern int text_size = 10;
extern string text_font = "Segoe UI";
double gda_152[];
double gda_156[];
double gda_160[];
double gda_164[];
double Instr_1[];
double Instr_2[];
double gda_176[];
double gda_180[];
int gi_184;
double gd_188;
int gi_196;
string gs_200;
int gi_208;
int gi_212;
double gd_216;
double gd_224;
double gd_232;
double gd_240;
double gd_248;
double gd_256;
double gd_264;
double gd_272;
double gd_280;
int gi_288 = Blue;
string PREFIX = "DuettoFX - ";
bool gi_300 = FALSE;
string indnm = "";
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
ObjectsDeleteAll(0,PREFIX,-1,-1);
Comment("");
}
int start()
{
// код доступен только после оплаты
}
double ld_12;
string name_b;
string name_s;
int li_36;
int li_40;
gi_196 = WindowFind(indnm);
int li_4 = IndicatorCounted();
if (Bars <= period) return (0);
if (li_4 < 1)
{
for (int i = 1; i <= period; i++)
{
gda_152[Bars - i] = 0.0;
gda_156[Bars - i] = 0.0;
gda_160[Bars - i] = 0.0;
gda_164[Bars - i] = 0.0;
Instr_1[Bars - i] = 0.0;
Instr_2[Bars - i] = 0.0;
gda_176[Bars - i] = 0.0;
gda_180[Bars - i] = 0.0;
}
}
i = Bars - period - 1;
if(li_4 >= period) i = Bars - li_4 - 1;
while(i >= 0)
{
Instr_1[i] = 0;
Instr_2[i] = 0;
for(int li_8 = 0; li_8 < smoothing; li_8++)
{
if(SetupIndicator==0)
{
Instr_1[i] += iRSI(instrument_1, 0, period, PRICE_CLOSE, i + li_8);
Instr_2[i] += iRSI(instrument_2, 0, period, PRICE_CLOSE, i + li_8);
}else{
Instr_1[i] += iStochastic(instrument_1,0,period,1,1,MODE_SMA,0,MODE_MAIN,i+li_8);
Instr_2[i] += iStochastic(instrument_2,0,period,1,1,MODE_SMA,0,MODE_MAIN,i+li_8);
}
}
Instr_1[i] = Instr_1[i] / smoothing;
Instr_2[i] = Instr_2[i] / smoothing;
gda_176[i] = Instr_1[i] - Instr_2[i] + 50.0;
ld_12 = Instr_1[i] - Instr_2[i];
if(ld_12 > 0.0)
{
gda_156[i] = Instr_1[i];
gda_164[i] = Instr_2[i];
gda_152[i] = EMPTY_VALUE;
gda_160[i] = EMPTY_VALUE;
}else{
gda_156[i] = EMPTY_VALUE;
gda_164[i] = EMPTY_VALUE;
gda_152[i] = Instr_2[i];
gda_160[i] = Instr_1[i];
}
if(Instr_1[i+1+bar] < Instr_2[i+1+bar] && Instr_1[i+bar] > Instr_2[i+bar])
{
name_b = PREFIX+instrument_1+instrument_2+"BUY"+((Time[i+bar]));
if (show_crosses)
{
ObjectCreate (0,name_b, OBJ_VLINE, 0, Time[i+bar], 0);
ObjectSetInteger(0,name_b, OBJPROP_BACK, 0);
ObjectSetInteger(0,name_b, OBJPROP_TIME1, Time[i+bar]);
ObjectSetInteger(0,name_b, OBJPROP_COLOR, Green);
ObjectSetInteger(0,name_b, OBJPROP_STYLE, STYLE_DOT);
}
gi_208 = iTime(Symbol(), 0, i + bar);
}
if(Instr_1[i+1+bar] > Instr_2[i+1+bar] && Instr_1[i+bar] < Instr_2[i+bar])
{
name_s = PREFIX+instrument_1+instrument_2+"SELL"+((Time[i+bar]));
if(show_crosses)
{
ObjectCreate (0,name_s, OBJ_VLINE, 0, Time[i+bar],0);
ObjectSetInteger(0,name_s, OBJPROP_BACK, 0);
ObjectSetInteger(0,name_s, OBJPROP_TIME1, Time[i+bar]);
ObjectSetInteger(0,name_s, OBJPROP_COLOR, Maroon);
ObjectSetInteger(0,name_s, OBJPROP_STYLE, STYLE_DOT);
}
Показано первые 50% кода (символов: 8911)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.