Небольшая помощь в простом советнике - страница 2

 
Donatom писал(а) >>

Я не эксперт, но выше приведенный код, который вы называете кодом МА_rsi, просто окрашивает Машку в зависимости от того выше или ниже RSI уровня 50.

То есть для проверки условий аналогичных этому коду достачно вызвать RSI и проверить выше или ниже он уровня - rsiLevel.

Не совсем так. Окрашивается машка по сигналам RSI

 
Donatom >>:

Я не эксперт, но выше приведенный код, который вы называете кодом МА_rsi, просто окрашивает Машку в зависимости от того выше или ниже RSI уровня 50.

То есть для проверки условий аналогичных этому коду достачно вызвать RSI  и проверить выше или ниже он уровня - rsiLevel.

насколько я понял:

  double ma0 = iCustom(NULL, 0, "MA_rsi", rsiPeriod, maPrice, 0, 1);
   
  if(ma0 < rsiLevel)
  return(OP_BUY);
  else if(ma0 > rsiLevel)
  return(OP_SELL);
  else
  return(-1);
 

Вызывать надо простой RSI

 double ma0 = iRSI(NULL,0,rsiPeriod, maPrice,0,1);
   
  if(ma0 < rsiLevel)
  return(OP_BUY);
  else if(ma0 > rsiLevel)
  return(OP_SELL);
  else
  return(-1);
По этому коду вы будете покупать тогда когда рси меньше rsiLevel, продавать когда рси больше
 
Donatom >>:

Вызывать надо простой RSI

По этому коду вы будете покупать тогда когда рси меньше rsiLevel, продавать когда рси больше


при компиляциии говорит:

')' - wrong parameters count D:\E=XTc\work\GT.mq4 (92, 58)

или "0" или "1" лишние

 

попробовал этот варинт, и тот что выше - всеравно нетак открывает по сигналам

вот исходник на нынешнем этапе:

Файлы:
gt.mq4  4 kb
 

Вот советник на текущем этапе

Что-то всеравно не тк, как надо, посомтрите пожалуйста:

//--------------------------------------------------------------------
extern string     s0          = "Setup: Main";
extern int        Magic       = 1121;
extern double     lots        = 0.1;
extern int        StopLoss    = 10;
extern int        TakeProfit  = 40;

extern string     s1          = "Setup: MA_rsi";
extern int        maPeriod    = 50;
extern int        maMethod    = MODE_EMA;
extern int        maPrice     = PRICE_CLOSE;
extern int        rsiPeriod   = 40;
extern int        rsiLevel    = 50;

extern string     s2          = "Setup: Slope_Direction_Line";
extern int        period      = 20; 
extern int        method      = 3;     // MODE_SMA 
extern int        price       = 0;     // PRICE_CLOSE
int               slip        = 3;


//--------------------------------------------------------------------
//The main condition--------------------------------------------------
int start ()
{
      static datetime TimeFlag = 0;
      datetime        TimeLast = Time[0];
      if (TimeFlag < TimeLast)
      {
         TimeFlag = TimeLast;
         
         int HA = GetSignal_HA();
         int MA = GetSignal_MA();
         int SD = GetSignal_SD();

         AnalyzeSignals(HA, MA, SD);
      
      }
      return (0);

}

void AnalyzeSignals(int HA, int MA, int SD)
{
      int res;
      
      if(HA == OP_BUY && MA == OP_BUY && SD == OP_BUY)         //Buy
      {
         res = OrderSend(Symbol(), OP_BUY, lots, Ask, slip, Bid - StopLoss*Point, Bid + TakeProfit*Point, NULL, Magic);
         if(res < 0) {Alert("Oreder Sent Error", GetLastError());}
      }
      
      else if(HA == OP_SELL && MA == OP_SELL && SD == OP_SELL) //Sell
      {
         res = OrderSend(Symbol(), OP_SELL, lots, Bid, slip, Ask + StopLoss*Point, Ask - TakeProfit*Point, NULL, Magic);
         if(res < 0) {Alert("Oreder Sent Error", GetLastError());}
      }
}

//--------------------------------------------------------------------
//Indicators funktion-------------------------------------------------
// Heiken Ashi

int GetSignal_HA()
{
      double ha2 = iCustom(NULL, 0, "HeikenAshi", 2, 1);
      double ha3 = iCustom(NULL, 0, "HeikenAshi", 3, 1);
   

   if(ha2 > ha3)
      return(OP_BUY);
   else if(ha2 < ha3)
      return(OP_SELL);
   else
      return(-1);
}

//--------------
// MA RSI

int GetSignal_MA()
{
  double ma0 = iMA(NULL, 0, maPeriod, 0, maMethod, maPrice, 1);
   
  if(ma0 < rsiLevel)
      return(OP_BUY);
  else if(ma0 > rsiLevel)
      return(OP_SELL);
  else
      return(-1);
}

//--------------
// Slope Direction Line

int GetSignal_SD()
{
      double sd0 = iCustom(NULL, 0, "Slope_Direction_Line", period, method, price, 0, 1); 
      double sd1 = iCustom(NULL, 0, "Slope_Direction_Line", period, method, price, 1, 1); 
   
   if(sd0 != EMPTY_VALUE)
      return(OP_BUY);
   else if(sd1 != EMPTY_VALUE)
      return(OP_SELL);
   else
      return(-1);    
}
//--------------------------------------------------------------------

 

касательно идюка MArsi:

как на счет того, чтобы вытащить MA и RSI отдельно и сравнить их?

примерно так:

//--------------
// MA RSI

int GetSignal_MA()
{
    double ma0 = iMA (NULL, 0,maPeriod, 0, maMethod, maPrice, i);
    double ma1 = iRSI (NULL, 0, rsiPeriod, maPrice, i);

    if(ma0 < ma1)
        return(OP_BUY);
    else if(ma0 > ma1)
        return(OP_SELL);
    else
        return(-1);
}

сам индюк:

Файлы:
ma_rsi.mq4  3 kb
 
никто?
Причина обращения: