Форум трейдеров » Торговые роботы, советники, индикаторы » Помогите доработать советник на основе ЕМА и RSI
+ Подписаться
  1. 1
    Комментарии
    1
    Темы
    1
    Репутация Pro
     
    Новичок

    2 Медалей

    Помогите доработать советник на основе ЕМА и RSI

    Друзья, во взятом с инета советнике на основе двух ЕМА захотел поставить в качестве фильтра RSI. Но, видимо, что то не то я сделал, советник не запускается, посмотрите, пожалуйста, что я сделал не так?

    //+------------------------------------------------------------------+
    //| Parabolic.mq4 |
    //| Виталик |
    //| wwwita@mail.ru |
    //+------------------------------------------------------------------+
    extern double Lots=0.1;
    extern double Pip=10;
    extern double MoveBack=3;
    extern int chk=0;
    extern double SL=50;
    extern int period_RSI=14;
    //+------------------------------------------------------------------+
    //| |
    //+------------------------------------------------------------------+
    int start()
    {
    double hi=High[1];
    double lo=Low[1];
    double EMA, EMA1, EMA2, EMA3;
    double RSI = iRSI(NULL,0,period_RSI,PRICE_OPEN,0);
    int cnt=0, ticket, total;
    EMA=iMA(0,0,5,0,MODE_EMA,PRICE_MEDIAN,1);
    EMA1=iMA(0,0,50,0,MODE_EMA,PRICE_MEDIAN,1);
    EMA2=iMA(0,0,5,0,MODE_EMA,PRICE_MEDIAN,0);
    EMA3=iMA(0,0,50,0,MODE_EMA,PRICE_MEDIAN,0);
    total=OrdersTotal();
    if(total<1)
    {
    if(AccountFreeMargin()<(1000*Lots))
    {
    Print("У вас нет денег. Свободные средства = ", AccountFreeMargin());
    return(0);
    }
    if(((EMA>EMA1) && (EMA2<EMA3)) || ((EMA<EMA1) && (EMA2>EMA3)))
    {
    chk=1;
    Print("Позиция возможна!");
    }
    if(chk==1)
    {
    if(EMA3-EMA2>2*Point && Bid>=(lo+MoveBack*Point) && RSI>50)
    {
    ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,
    "EMA position:",16385,0,Red);
    if(ticket>0)
    {
    if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES ))
    Print("Открыт ордер SELL : ",OrderOpenPrice());
    chk=0;
    }
    else
    {
    Print("Ошибка открытия SELL ордера : ",GetLastError());
    return(0);
    }
    }
    if(EMA2-EMA3>2*Point && Ask<=(hi-MoveBack*Point) && RSI<50))
    {
    ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,
    "EMA position:",16385,0,Green);
    if(ticket>0)
    {
    if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES ))
    Print("Открыт ордер BUY : ",OrderOpenPrice());
    chk=0;
    }
    else
    {
    Print("Ошибка открытия BUY ордера : ",GetLastError());
    return(0);
    }
    }
    }
    return(0);
    }
    for(cnt=0;cnt<total;cnt++)
    {
    OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
    if(OrderType()<=OP_SELL && // это открытая позиция? OP_BUY или OP_SELL
    OrderSymbol()==Symbol()) // инструмент совпадает?
    {
    if(OrderType()==OP_BUY) // открыта длинная позиция
    {
    // проверим, может уже пора закрываться?
    if(Bid>=(OrderOpenPrice()+Pip*Point))
    {
    chk=0;
    OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ; // закрываем позицию
    return(0); // выходим
    }
    if(Bid<=(OrderOpenPrice()-SL*Point))
    {
    chk=0;
    OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ; // закрываем позицию
    return(0); // выходим
    }
    }
    else // иначе это короткая позиция
    {
    // проверим, может уже пора закрываться?
    if(Ask<=(OrderOpenPrice()-Pip*Point))
    {
    chk=0;
    OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ; // закрываем позицию
    return(0); // выходим
    }
    if(Ask>=(OrderOpenPrice()+SL*Point))
    {
    chk=0;
    OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ; // закрываем позицию
    return(0); // выходим
    }
    }
    }
    }
    return(0);
    }
    //+------------------------------------------------------------------+
    Недоступно! Pro 0
    Поделиться
    Просмотров: 4,996
  2. 104
    Комментарии
    1
    Темы
    111
    Репутация Pro
    Аватар для Georg Valuev  
    В начале пути

    2 Медалей
    Не занимайся этим фуфлом на EMA, RSI и всякой ерунде. Только время терять. Могу дать готовый советник на MACD, RSI. Только Все это фигня полная - так на демо поиграть

Вверх
РегистрацияX

чтобы писать, читать, комментировать