Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Написал робота? Опубликуй его в Маркете и получай доход!
Igor Somov
424
Igor Somov 2012.07.17 09:12 

В конструктор советников надо вставить два пользов. индикатора

Подскажите пожалуйста как с помошью функции iCustom написать такие условия для каждого из этих индикаторов:

1. "Если цвет индикатора А - зеленый"
iCustom(.."A".......) ?
2. "Если цвет индикатора А - Красный"
iCustom(.."A".......) ?

3. "Если цвет индикатора B - зеленый"
iCustom(.."B".......) ?
4. "Если цвет индикатора B - Красный"
iCustom(.."B".......) ?


\\\------------------------------------
Индикатор A



Декомпил




----------------------------------------------------
Индикатор B


//+------------------------------------------------------------------+
//| indic to see if RSI is above or under 2 valors |
//| Copyright © 2008, Pharmacien@dejante.com |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
// you are asking if RSI is above/under 45/55 ?

#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
//---- indicator settings
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 1

#property indicator_buffers 3
#property indicator_color1 DarkGreen
#property indicator_color2 Crimson
#property indicator_color3 Yellow
//---- indicator parameters
extern int RSI=8;
extern int valeur1=55;
extern int valeur2=45;

//---- indicator buffers
double ExtBuffer1[];
double ExtBuffer2[];
double ExtBuffer3[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- drawing settings
SetIndexStyle (0,DRAW_HISTOGRAM, EMPTY,4,DarkGreen);
SetIndexBuffer(0,ExtBuffer1);
SetIndexStyle (1,DRAW_HISTOGRAM, EMPTY,4,Crimson);
SetIndexBuffer(1,ExtBuffer2);
SetIndexStyle (2,DRAW_HISTOGRAM, EMPTY,4,Yellow);
SetIndexBuffer(2,ExtBuffer3);
//---- names
IndicatorShortName("RSI above/under 45/55");
SetIndexLabel(0,"RSI"+RSI +" is above 55");
SetIndexLabel(1,"RSI"+RSI +" is under 45");
SetIndexLabel(2,"RSI is in the mid zone ");
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| Moving Averages |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- macd counted in the 1st buffer
for(int i=0; i<limit; i++)
if (iRSI(NULL,0,RSI,PRICE_CLOSE,i)<=valeur2)
{
ExtBuffer2[i]=1;
}
else
if (iRSI(NULL,0,RSI,PRICE_CLOSE,i)>=valeur1)
{
ExtBuffer1[i]=1;
}
else
ExtBuffer3[i]=1;

return(0);
}

//+------------------------------------------------------------------+

Если вам лень отвечать, огромная просьба не надо вставлять ссылки на всяческие хэлпы и мануалы - все равно я ничего не пойму.

Просьба написать конкретный ответ на конкретный вопрос.

/*вставляйте код правильно, если хотите быстрого ответа*/

o_O
Модератор
23322
o_O 2012.07.17 09:40  
1. "Если цвет индикатора А - зеленый"
iCustom(smb, tf, "A", valSSP, valKmax, valCountBars, 0, iB)
2. "Если цвет индикатора А - Красный"
iCustom(smb, tf, "A", valSSP, valKmax, valCountBars, 1, iB)
где
smb - нужный вам символ, например "EURUSD"
tf - нужный вам период, например PERIOD_H1
valSSP, valKmax, valCountBars - три значения внешних параметров. Например 70, 50.6, 300
iB - номер бара, с которого нужно взять знчение, например 1 (первый закрытый)

3. "Если цвет индикатора B - зеленый" - по аналогии с А, только другие внешние параметры и номера буферов
4. "Если цвет индикатора B - Красный" -по аналогии с А,


Igor Somov
424
Igor Somov 2012.07.17 10:51  
sergeev:
1. "Если цвет индикатора А - зеленый"
2. "Если цвет индикатора А - Красный" где
smb - нужный вам символ, например "EURUSD"
tf - нужный вам период, например PERIOD_H1
valSSP, valKmax, valCountBars - три значения внешних параметров. Например 70, 50.6, 300
iB - номер бара, с которого нужно взять знчение, например 1 (первый закрытый)

3. "Если цвет индикатора B - зеленый" - по аналогии с А, только другие внешние параметры и номера буферов
4. "Если цвет индикатора B - Красный" -по аналогии с А,




Спасибо. Значит можно смело писать:

if iCustom(smb, tf, "A", valSSP, valKmax, valCountBars, 0, iB) > 0

{
BuyOrderRiskFixed();

} ...... и т.д. ?

--------------------------------

Или надо куда-то вставлять что-то типа

int IND_green ;
IND_green = iCustom(NULL, NULL, "goldminer2",7,50.6,300,0,Goldminer_red_buff,0);

if( IND_green > 0)

{
BuyOrderRiskFixed();

} ...... и т.д. ???

o_O
Модератор
23322
o_O 2012.07.17 11:39  
Igogo:




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

только советую привыкнуть буфера брать в double IND_green;

и явно указывать символ и ТФ вместо NULL. Меньше контролировать прийдется.

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий