[Помогите написать советник, я новичок в MQL и плохо все понимаю. Буду очень признателен. Советник на основании RSI. ] Советник

 
Здравствуйте! Помогите написать советник, я новичок в MQL и плохо все понимаю. Буду очень признателен. Советник на основании RSI. Спасибо!
Вот код:
extern int RSIPeriod=14;
extern double RSI_Level =30 ;
extern double RSI_2_Level =70;


bool Work=true;
string Symb;



//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
double RSI_1 =iCustom(NULL, 0, "RSI",14, 1, 0);
if( RSI_1 < RSI_Level )
{
OrderSend( Symbol(),OP_BUY,0.1,Ask,3,Bid -200*Point,Bid+200*Point);
}

double RSI_2 =iCustom(NULL, 0, "RSI",14, 1, 0);
if( RSI_2 > RSI_2_Level )
{

OrderSend( Symbol(),OP_SELL,0.1,Bid,3,Ask -200*Point,Ask+200*Point);
}
return(0);
}
 
PAVEL10:
Здравствуйте! Помогите написать советник, я новичок в MQL и плохо все понимаю. Буду очень признателен. Советник на основании RSI. Спасибо!

Посмотрите в сети советников на основании RSI полным полно

 
Вы прикольный! Для получения морального права писать советники, нужно ознакомиться с принципами их функционирования, с набором необходимых данных, которыми он должен обладать. Это всё можно ПОПЫТАТЬСЯ осмыслить на чужих советниках.

А для прикола, могу предложить такой вид функции старт:

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
    double RSI = iRSI (NULL, 0, RSIPeriod, 0, 0);
    if (RSI < RSI_Level)
    {
        OrderSend (Symbol(), OP_BUY, 0.1, NormalizeDouble (Ask, Digits), 3, NormalizeDouble (Bid - 200 * Point, Digits), NormalizeDouble (Bid + 200 * Point, Digits));
    }
    else if (RSI > RSI_2_Level)
    {
        OrderSend (Symbol(), OP_SELL, 0.1, NormalizeDouble (Bid, Digits) 3, NormalizeDouble (Ask + 200 * Point, Digits), NormalizeDouble (Ask - 200 * Point, Digits));
    }
    return (0);
}

Манию открытия ордеров можно прочувствовать... ;)

 
PAVEL10:
Здравствуйте! Помогите написать советник, я новичок в MQL и плохо все понимаю. Буду очень признателен. Советник на основании RSI. Спасибо!

1. Посмотрите стандартную функцию iRSI

2. Ваш код на каждый тик будет открывать по ордеру. Перед открытием ордера вам требуется вставить проверку на наличие уже открытого (рыночного) ордера.

 

Я не разбираюсь в программирование, и мне это очень тяжело делать… Спасибо! Вы за деньги программируете господа или за идею?

 
PAVEL10:

Я не разбираюсь в программирование, и мне это очень тяжело делать… Спасибо! Вы за деньги программируете господа или за идею?



Если не разбираетесь в программировании, то сгенерировать мало-мальски прибыльную идею Вам будет ой как сложно. Изучайте программирование - и будет Вам счастье. НАчало ведь положено уже)

 
да, для меня очень сложно...
 
PAVEL10:
да, для меня очень сложно...

По-тиху по-тиху с 1й странички - и все будет норм.https://book.mql4.com/ru/content
 

есть книга, спсибо,

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

extern int RSIPeriod=14;
extern double RSI_Level =30 ;
extern double RSI_2_Level =70;


bool Work=true;
string Symb;



//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)
{
double RSI_1 =iCustom(NULL, 0, "RSI",14, 1, 0);
if( RSI_1 < RSI_Level )
{
OrderSend( Symbol(),OP_BUY,0.1,Ask,3,Ask-250*Point,Ask+250*Point);
}

double RSI_2 =iCustom(NULL, 0, "RSI",14, 1, 0);
if( RSI_2 > RSI_2_Level )
{

OrderSend( Symbol(),OP_SELL,0.1,Bid,3,Bid+250*Point,Bid-250*Point);
}
}
return(0);
}

 

Топикстартер, есть пара замечаний:

1. Тему надо называть предметно, с конкретным запросом. Примерно так, как я подправил.

2. Научитесь цивилизованно вставлять код. Для этого есть комбинация Ctrl+Alt+M или кнопка SRC.

 

Я первый раз на форуме, и не знаю вашего устава...

Почему советник работает только в бай и только на тестере?

Причина обращения: