[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 537

 

Ciao a tutti.

Aiutatemi a trovare il codice giusto.

 if(Bid > Line_2 && Rsi < 30)     //Если цена больше максимальной(верхней) линии..
                                  //..и RSI меньше заданного условия..
      {
       Opn_B= true;               //..тогда получаем условие на открытие  Buy
      }

Quando la prima condizione Bid > Line_2 è soddisfatta, la seconda condizione RSI<30 è persa, cioè la linea dell'indicatore RSI va sopra il valore 30.

Come collegare correttamente due condizioni?

Se qualcuno ha visto una tale implementazione, per favore mi dia un link.

 
Pacman:

Ciao a tutti.

Aiutatemi a trovare il codice giusto.

Quando la prima condizione Bid > Line_2 è soddisfatta, la seconda condizione RSI<30 è persa, cioè la linea dell'indicatore RSI va sopra il valore 30.

Come collegare correttamente due condizioni?

Se qualcuno ha visto una tale implementazione, per favore mi dia un link.

Il modo più semplice ed efficace è cercare in CodaBase la parola "RSI" negli EA già implementati.
 
Voglio ripetere la mia domanda. Ho un indicatore (l'indicatore superiore nella foto) che dà SOLO questi segnali.
Ho bisogno di trasformare questi segnali in un segnale "solido" (indicatore in basso nell'immagine).
Aiuta se sai come farlo!

P.S.

L'indicatore MACD nell'immagine è usato solo per illustrare il mio problema.



Ho avuto una risposta da TaraasBY (per il quale vi ringrazio molto):

Si riempie il buffer dell'indicatore, nel caso in cui non ci sia nessun valore in esso, con il valore precedente (non vuoto):

if (gda_BUF1[pos] == EMPTY_VALUE) 
    {
        if (gda_BUF1[pos+1] != EMPTY_VALUE) gda_BUF1[pos] = gda_BUF1[pos+1];
       
    }


Ma non funziona per me: come collegare ExtMapBuffer1[i] e ExtMapBuffer1[pos]?

Voglio ripetere quell'indicatore dal MACD solo per esempio! Come ripetere la costruzione sopra menzionata in esso?

#property indicator_separate_window
#property indicator_minimum -1.5
#property indicator_maximum 1.5
#property indicator_buffers 1
#property indicator_color1 Aqua
#property  indicator_width1  2
#property indicator_level1 0.0
//--- buffers
double ExtMapBuffer1[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,ExtMapBuffer1);
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
     int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;
//----
   for(int i=0;i<limit;i++)
   
      if((iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+2)<iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+2))&&
         (iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1)>iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+1)))
       {
        ExtMapBuffer1[i]=1;
       }
      else
       {
        
       
       
      if((iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+2)>iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+2))&&
         (iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1)<iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+1)))
       {
        ExtMapBuffer1[i]=-1;
       }
      else
       {
        ExtMapBuffer1[i]=0;
       }
      }
      
 
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
MK07:

Come faccio a collegare ExtMapBuffer1[i] e ExtMapBuffer1[pos]?

Ecco il codice dell'indicatore. Voglio ripetere che l'indicatore MACD è solo un esempio, come posso ripetere la struttura di cui sopra in esso?

Come questo (applicato al MACD):

int start()
  {
     int counted_bars=IndicatorCounted(),
       limit;  
     static int li_preSignal = 0;
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;
//----
   for(int i=0;i<limit;i++)
   
      if((iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+2)<iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+2))&&
         (iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1)>iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+1)))
       {
        ExtMapBuffer1[i]=1;
        li_preSignal = 1;
       }
      else
       {
        
       
       
      if((iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+2)>iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+2))&&
         (iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1)<iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+1)))
       {
        ExtMapBuffer1[i]=-1;
        li_preSignal = -1;
       }
      else {ExtMapBuffer1[i] = li_preSignal;}
      }
      
 
//----
   return(0);
  }
 
TarasBY:
Il modo più semplice ed efficace è cercare su CodaBase la parola "RSI" negli EA già implementati.

Grazie, continuerò a cercare.
 
TarasBY:

Quindi (applicato al MACD):

Grazie, funziona, ma solo una barra dopo! C'è qualcos'altro che si può fare?

 
TarasBY:

Quindi (applicato al MACD):

La tua versione precedente con ExtMapBuffer1[pos] ha più senso per me e sembra essere più universale.
 
MK07:

Grazie, funziona, ma solo una barra dopo! C'è qualcos'altro che si può fare?

Prova questo.

File:
 

Vinin
:


Nessuna intersezione stocastica trovata (intendo il codice)

// Обращение к функции техн.индикат.
   
   M_1=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_MAIN,  1);
   M_2=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_MAIN,  2);
   S_1=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_SIGNAL,1);
   S_2=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_SIGNAL,2);

                        // Анализ ситуации
   
   if (M_2 < S_2 && M_1==S_1)                    // Условие откр. Buy и закр. Sell 
     {
      if (Total>0)
        {
        Close_Order_S(Ticket,Ans,Lts); 
        }
      
        Ticket = Open_Order_B(StopLoss,Lts); 
                                                                         
     } 
   if (M_2 > S_2 && M_1==S_1)                    // Условие откр. Sell и закр. Buy        
     {  
      if (Total>0)
        {
        Close_Order_B(Ticket,Ans,Lts);   
        }                           
      
        Ticket = Open_Order_S(StopLoss,Lts); 
 
granit77:

Prova in questo modo.




Grazie, ha funzionato.