[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 537

 

Bonjour à tous.

Aidez-moi à obtenir le bon code.

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

Lorsque la première condition Bid > Line_2 est remplie, la deuxième condition RSI<30 est perdue, c'est-à-dire que la ligne de l'indicateur RSI passe au-dessus de la valeur 30.

Comment lier correctement deux conditions ?

Si quelqu'un a vu une telle mise en œuvre, veuillez me donner un lien.

 
Pacman:

Bonjour à tous.

Aidez-moi à obtenir le bon code.

Lorsque la première condition Bid > Line_2 est remplie, la deuxième condition RSI<30 est perdue, c'est-à-dire que la ligne de l'indicateur RSI passe au-dessus de la valeur 30.

Comment lier correctement deux conditions ?

Si quelqu'un a vu une telle mise en œuvre, veuillez me donner un lien.

Le moyen le plus simple et le plus efficace est de rechercher dans CodaBase le mot "RSI" dans les EA déjà mises en œuvre.
 
Je veux répéter ma question. J'ai un indicateur (l'indicateur supérieur dans l'image) qui ne donne QUE ces signaux.
Je dois transformer ces signaux en un signal "solide" (indicateur du bas sur l'image).
Aidez-nous si vous savez comment faire !

P.S.

L'indicateur MACD dans l'image n'est utilisé que pour illustrer mon problème.



J'ai reçu une réponse de TaraasBY (pour lequel je vous remercie beaucoup) :

Vous remplissez le tampon de l'indicateur, au cas où il ne contiendrait aucune valeur, avec la valeur précédente (non vide) :

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


Mais cela ne fonctionne pas pour moi. Comment lier ExtMapBuffer1[i] et ExtMapBuffer1[pos] ?

Je veux répéter cet indicateur à partir de MACD seulement par exemple ! Comment répéter la construction mentionnée ci-dessus dans cet indicateur ?

#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:

Comment connecter ExtMapBuffer1[i] et ExtMapBuffer1[pos] ?

Voici le code de l'indicateur. Je tiens à répéter que l'indicateur MACD n'est qu'un exemple, comment puis-je y reproduire la structure mentionnée ci-dessus ?

Comme ceci (appliqué au 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:
Le moyen le plus simple et le plus efficace est de rechercher dans CodaBase le mot "RSI" dans des EA déjà mises en œuvre.

Merci, je vais continuer à chercher.
 
TarasBY:

Donc (appliqué au MACD) :

Merci, ça marche, mais seulement une barre plus tard ! Y a-t-il autre chose que vous puissiez faire ?

 
TarasBY:

Donc (appliqué au MACD) :

Votre version précédente avec ExtMapBuffer1[pos] est plus logique pour moi et semble être plus universelle.
 
MK07:

Merci, ça marche, mais seulement une barre plus tard ! Y a-t-il autre chose que vous puissiez faire ?

Essayez ça.

Dossiers :
 

Vinin
:


Aucune intersection stochastique trouvée (je veux dire code)

// Обращение к функции техн.индикат.
   
   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:

Essayez de cette façon.




Merci, ça a marché.
Raison: