12 июля, 2010Обновлено 08 февраля, 2011

Индикатор для оценки ситуации в группе валютных пар

Сергей Ерёмин
RU

Трейдеру зачастую приходится быстро оценить ситуацию по рынку в целом или на группе валютных пар. Тот, кто часто использует такие приемы в торговле, знает, что это задача не из простых. Для упрощения жизни спекулянта в этом случае разрабатываются самые разнообразные алгоритмы. Но общая черта одна – работа сразу с несколькими инструментами.

Вашему вниманию предлагается простой вариант реализации индикатора, который показывает положение вещей суммарно по нескольким (до десяти) инструментам. При этом ситуация отображается сразу по всем стандартным таймфреймам (M1, M15, M30, H1, H4, D1, W1 и MN1).

Во входных параметрах индикатора можно указать названия торговых инструментов и их коэффициент при общем подсчете. Коэффициент может принимать значения 1 и -1.
Допустим, используются торговые инструменты EURUSD и USDJPY, а оценку общей ситуации нужно вести так, чтобы понятие «рост» было сопряжено с ростом пары EURUSD и падением пары USDJPY. Иными словами, чтобы оценивался восходящий тренд против доллара США. В таком случае паре EURUSD следует сопоставить коэффициент 1, а паре USDJPY –  -1. В случае если понятию «рост» нужно сопоставить рост доллара США, то для EURUSD выставляется коэффициент -1, а USDJPY – 1.

Алгоритм оценки ситуации крайне прост. Если цена закрытия инструмента на предыдущем баре больше, чем цена открытия, то считается, что инструмент растет, и в этом случае в общий зачет ставится «+1», в противном случае – «-1». Затем это значение умножается на коэффициент данного инструмента (из входных параметров) и уже полученное значение прибавляется к общей величине сигнала. Затем, если суммарный сигнал больше 0, то считается, что тренд восходящий, если меньше 0 – нисходящий, а если равен 0 – отсутствие четкого тренда.

Визуально это отображается стрелочками:
?    Восходящий тренд – зеленая стрелка вверх.
?    Нисходящий тренд – красная стрелка вниз.
?    Отсутствие четкого тренда – белая стрелка вправо.

Код индикатора крайне прост:

//+——————————————————————+
//|                                                price_compass.mq4 |
//|                                     Copyright © 2010, ENSED Team |
//|                                             http://www.ensed.org |
//+——————————————————————+
#property copyright «Copyright © 2010, ENSED Team»
#property link      «http://www.ensed.org»
#property indicator_separate_window
#property indicator_minimum 0.0
#property indicator_maximum 0.1
extern string Symb_1=»EURUSD»; //символ
extern int    Symb_1_k=1; //коэффициент для общего тренда (1 или -1 (например, 1 для EURUSD и -1 для USDJPY))

extern string Symb_2=»GBPUSD»;
extern int    Symb_2_k=1;

extern string Symb_3=»AUDUSD»;
extern int    Symb_3_k=1;

extern string Symb_4=»USDJPY»;
extern int    Symb_4_k=-1;

extern string Symb_5=»USDCHF»;
extern int    Symb_5_k=-1;

extern string Symb_6=»USDCAD»;
extern int    Symb_6_k=-1;

extern string Symb_7=»»;
extern int    Symb_7_k=1;

extern string Symb_8=»»;
extern int    Symb_8_k=1;

extern string Symb_9=»»;
extern int    Symb_9_k=1;

extern string Symb_10=»»;
extern int    Symb_10_k=1;

string ShortIndName=»CIND»;
//+——————————————————————+
//| Custom indicator initialization function                         |
//+——————————————————————+
int init()
{
IndicatorShortName(ShortIndName);
IndicatorDigits(0);
SetIndexEmptyValue(0,0.0);
//—- indicators
int mwind=WindowFind(ShortIndName);
if(mwind>0) ObjectsDeleteAll(mwind);
//—-
return(0);
}
//+——————————————————————+
//| Custom indicator deinitialization function                       |
//+——————————————————————+
int deinit()
{
//—-
int mwind=WindowFind(ShortIndName);
if(mwind>0) ObjectsDeleteAll(mwind);
//—-
return(0);
}
//+——————————————————————+
//| Custom indicator iteration function                              |
//+——————————————————————+

//+——————————————————————+
//|                       Подсчёт сигнала |
int signal(int period) {
int i=0, k=0, signal=0;
string arr_symbols[10][2];
arr_symbols[0][0] = Symb_1;
arr_symbols[1][0] = Symb_2;
arr_symbols[2][0] = Symb_3;
arr_symbols[3][0] = Symb_4;
arr_symbols[4][0] = Symb_5;
arr_symbols[5][0] = Symb_6;
arr_symbols[6][0] = Symb_7;
arr_symbols[7][0] = Symb_8;
arr_symbols[8][0] = Symb_9;
arr_symbols[9][0] = Symb_10;

arr_symbols[0][1] = Symb_1_k;
arr_symbols[1][1] = Symb_2_k;
arr_symbols[2][1] = Symb_3_k;
arr_symbols[3][1] = Symb_4_k;
arr_symbols[4][1] = Symb_5_k;
arr_symbols[5][1] = Symb_6_k;
arr_symbols[6][1] = Symb_7_k;
arr_symbols[7][1] = Symb_8_k;
arr_symbols[8][1] = Symb_9_k;
arr_symbols[9][1] = Symb_10_k;
for(i=0;i<=9; i++) {
if(arr_symbols[i][0]!=»» && MathAbs(StrToInteger(arr_symbols[i][1]))==1) {
if(iClose(arr_symbols[i][0],period,1)>iOpen(arr_symbols[i][0],period,1))
signal+=1*StrToInteger(arr_symbols[i][1]);
if(iClose(arr_symbols[i][0],period,1)<iOpen(arr_symbols[i][0],period,1))
signal+=-1*StrToInteger(arr_symbols[i][1]);
} //end if(arr_symbols[i][0]!=»» && MathAbs(StrToInteger(arr_symbols[i][1]))==1)
} //end for(i=0;i<=9; i++)
return(signal);
}
//|                        Подсчёт сигнала |
//+——————————————————————+

//+——————————————————————+
//|                       Нанесение стрелки |
void create(int period, int x, int mwind) {
int obj_text=0, y=20;
color color_to_show=CLR_NONE;
if(signal(period)==0) { obj_text=232;  color_to_show=White; y+=3;}
if(signal(period)>0) { obj_text=233; color_to_show=Green; }
if(signal(period)<0) { obj_text=234; color_to_show=Red; y+=5;}
if(ObjectCreate(«text_0_comp»+period,OBJ_LABEL,mwind,0,0)) {
ObjectSet(«text_0_comp»+period,OBJPROP_XDISTANCE,x);
ObjectSet(«text_0_comp»+period,OBJPROP_YDISTANCE,y);
ObjectSetText(«text_0_comp»+period,CharToStr(obj_text),15,
«WingDings»,color_to_show);
} //end if(ObjectCreate(«text_0_comp»+period,OBJ_LABEL,mwind,0,0))
}
//|                       Нанесение стрелки |
//+——————————————————————+

int start() {
int    counted_bars=IndicatorCounted();
int mwind=WindowFind(ShortIndName);
if(mwind>0) ObjectsDeleteAll(mwind);

create(PERIOD_M1, 10, mwind);
if(ObjectCreate(«text_1_comp»,OBJ_LABEL,mwind,0,0)) {
ObjectSet(«text_1_comp»,OBJPROP_XDISTANCE,12);
ObjectSet(«text_1_comp»,OBJPROP_YDISTANCE,45);
ObjectSetText(«text_1_comp»,»M1″,10,»Arial»,Gold);
}
create(PERIOD_M15, 40, mwind);
if(ObjectCreate(«text_2_comp»,OBJ_LABEL,mwind,0,0)) {
ObjectSet(«text_2_comp»,OBJPROP_XDISTANCE,37);
ObjectSet(«text_2_comp»,OBJPROP_YDISTANCE,45);
ObjectSetText(«text_2_comp»,»M15″,10,»Arial»,Gold);
}
create(PERIOD_M30, 75, mwind);
if(ObjectCreate(«text_3_comp»,OBJ_LABEL,mwind,0,0)) {
ObjectSet(«text_3_comp»,OBJPROP_XDISTANCE,72);
ObjectSet(«text_3_comp»,OBJPROP_YDISTANCE,45);
ObjectSetText(«text_3_comp»,»M30″,10,»Arial»,Gold);
}
create(PERIOD_H1, 110, mwind);
if(ObjectCreate(«text_4_comp»,OBJ_LABEL,mwind,0,0)) {
ObjectSet(«text_4_comp»,OBJPROP_XDISTANCE,112);
ObjectSet(«text_4_comp»,OBJPROP_YDISTANCE,45);
ObjectSetText(«text_4_comp»,»H1″,10,»Arial»,Gold);
}

create(PERIOD_H4, 145, mwind);
if(ObjectCreate(«text_5_comp»,OBJ_LABEL,mwind,0,0)) {
ObjectSet(«text_5_comp»,OBJPROP_XDISTANCE,147);
ObjectSet(«text_5_comp»,OBJPROP_YDISTANCE,45);
ObjectSetText(«text_5_comp»,»H4″,10,»Arial»,Gold);
}

create(PERIOD_D1, 180, mwind);
if(ObjectCreate(«text_6_comp»,OBJ_LABEL,mwind,0,0)) {
ObjectSet(«text_6_comp»,OBJPROP_XDISTANCE,182);
ObjectSet(«text_6_comp»,OBJPROP_YDISTANCE,45);
ObjectSetText(«text_6_comp»,»D1″,10,»Arial»,Gold);
}
create(PERIOD_W1, 215, mwind);
if(ObjectCreate(«text_7_comp»,OBJ_LABEL,mwind,0,0)) {
ObjectSet(«text_7_comp»,OBJPROP_XDISTANCE,216);
ObjectSet(«text_7_comp»,OBJPROP_YDISTANCE,45);
ObjectSetText(«text_7_comp»,»W1″,10,»Arial»,Gold);
}

create(PERIOD_MN1, 250, mwind);
if(ObjectCreate(«text_8_comp»,OBJ_LABEL,mwind,0,0)) {
ObjectSet(«text_8_comp»,OBJPROP_XDISTANCE,247);
ObjectSet(«text_8_comp»,OBJPROP_YDISTANCE,45);
ObjectSetText(«text_8_comp»,»MN1″,10,»Arial»,Gold);
}
return(0);
}
//+——————————————————————+

Данный индикатор способен значительно упростить ориентацию в рыночной ситуации, однако он представлен только в ознакомительных целях. Вместо предложенного алгоритма можно использовать другой более совершенный или подходящий для конкретной торговой системы индикатор.

Сергей Ерёмин

Сергей Ерёмин

Источник: ensed

Подпишитесь на нас в VK

Fortrader contentUrl Suite 11, Second Floor, Sound & Vision House, Francis Rachel Str. Victoria Victoria, Mahe, Seychelles +7 10 248 2640568

Ещё из этой категории

Все статьи

Crane Scalper – лучший индикатор для скальпинга

Форекс индикатор Crane Scalper – довольно старый, но все еще интересный авторский фильтр для скальпинга от пользователя форума forexsystemru.com с ником Crossluck. Он имеет подвальный формат, дает графические сигналы на вход в рынок, а также обладает встроенным фильтром флета. Тестирование индикатор Crane Scalper пользователями форума показало его высокую прибыльность, а также возможность торговли с его […]

Форекс индикатор BatMA – модифицированная скользящая средняя

Форекс индикатор BatMA представляет собой модификацию стандартного индикатора Moving Average. Он позволяет использовать в нем как общепринятые методы усреднения (SMA, SMMA, LWMA, EMA), так и усреднение посредством фильтра Баттерворта второго порядка. В радиотехнике подобный фильтр используется для разделения частотных сигналов. Настройки форекс индикатора BatMA Открывая закладку «Параметры» этого индикатора, вы найдёте доступ к следующим настройкам: MA_Period […]

Сигнальный торговый индикатор AO-AC AA MTF NRP TT+JK

Сигнальный торговый индикатор AO-AC AA MTF NRP TT+JK – очередная авторская разработка Tankk’а, известного на форуме forexsystemru.com трейдеров разработчика многих прибыльных индикаторов для трейдинга. AO-AC AA MTF NRP TT+JK – это комбинация осцилляторов АО и АС, дающая три сетапа для появления торговых сигналов (ArrAltVariantType1): Variant1 – двойное пересечение (АО и АС) нулевого уровня. В этом […]

Торговый индикатор Super Stochastic DA TT

Торговый индикатор Super Stochastic DA TT – это одна из разработок Tankk’а, уже давно завоевавшего популярность на форуме трейдеров forexsystemru.com. Несмотря на свое название, фильтр кроме внешнего вида не имеет никакого отношения к Стохастику. В нем заложен принцип использования дивергенции цены и объема. В Super Stochastic DA TT реализовано четыре типа расчета, визуальное отображение дивергенций, а […]

Недавние обучающие статьи

Все статьи

Редакция рекомендует

Все статьи