Aide au codage - page 777

 
Algo_W:

Je ne suis pas sûr de savoir comment mettre en œuvre IMaOnArray pour cela. Je pense que c'est la solution ? Quelqu'un peut-il m'aider à obtenir la moyenne mobile de l'ADX pour l'histogramme ?

Merci de votre aide.

#property indicator_type1 DRAW_LINE

#property indicator_type1 DRAW_LINE
for(int i = limit-1; i >= 0; i--)
   Buffer1[i] = iADX(NULL, PERIOD_CURRENT, 14, PRICE_CLOSE, MODE_MAIN, i);
   
for(i = limit-1; i >= 0; i--)   
   Buffer2[i] = iMAOnArray(Buffer1, 0, 5, 0, MODE_SMA, i);
 
Naguisa Unada:

Salut Naguisa !

Je crois que tu vas bien ?

Je tiens à vous remercier d'avoir modifié l'indcateur mtf BB. Je peux vous dire qu'il fonctionne à merveille.


Naguisa ! Juste pour en savoir plus si je peux, cet indicateur peut-il être modifié pour que l'on puisse voir différents cadres temporels personnalisés, comme les nombres de Fibonacci ou n'importe quel cadre temporel pair ou impair, et pas nécessairement ceux de MT4 seulement. Est-ce possible, s'il vous plaît ?

 

aide au codage s'il vous plaît.

comment peut-on ı coder

un rayon droit vers un point final ma. ?

 
guner:

aide au codage s'il vous plaît.

comment peut-on ı coder

ad rayon droit à un point de fin de ma. ?

Dessinez un objet de tendance avec des valeurs PRICE1 et PRICE2 égales à la valeur de votre MA choisie sur la barre 0 et TIME1 égal au temps de la barre 0 tandis que TIME2 est quelque part dans le futur. Achaque tick, recalculez la MA et définissez PRICE1 et PRICE2 en conséquence et à chaque nouvelle barre, définissez un nouveau TIME1.

 

Bonjour à tous,


Je suis en train d'étudier le livre "Volatility illuminated" de Mark Whistler et je suis intéressé à creuser plus profondément dans les indicateurs qu'il a construit, en particulier le WAVE-PM.
Whistler a publié le code mq4 dans son livre et il en existe une copie ici http://fxcodebase.com/code/viewtopic.php?f=38&t=64011.

Cependant, mon intention est de porter l'indicateur sur tradingview, qui est ma principale plateforme graphique. Je connais les bases du pinescript, mais j'ai beaucoup de mal à lire le code C du script original.
Quelqu'un peut-il jeter un coup d'oeil au code et me dire en gros la logique de ce qu'il fait ?

Dans le livre, Whistler ne dit pas grand chose sur l'indicateur, juste qu'il "identifie visuellement la "compression" de la distribution à court terme dans la distribution plus large".



Pour ce que j'ai compris, l'oscillateur représente la différence entre les bandes supérieures et inférieures d'une bande de bollinger, puis la valeur est normalisée dans une fourchette de 0-1 et tracée dans le temps.

Dans le code, je vois que deux oscillateurs sont créés (ShortBandsPeriod et LongBandsPeriod) mais ensuite je me perds dans les cycles for... Je peux seulement voir qu'il y a quelques calculs mathématiques (un carré, unepuissance d'exposant, et une tangente ?) mais malheureusement je ne peux pas saisir pourquoi et comment sont faits

.
.
.
for (i=limit; i>=0; i--){
   
             
                avg= iMA(NULL,0,ShortBandsPeriod,0,MODE_SMA,PRICE_CLOSE,i+ShortBandsShift);
                
                sum=0;
                
                for (j=ShortBandsPeriod-1; j>=0; j--){
                 temp = Close[i+j] - avg;
                 sum = sum + temp * temp;
                }
         
                ShortDev[i]= ShortBandsDeviations * MathSqrt(sum / ShortBandsPeriod);
        ShortDev1[i] = MathPow((ShortDev[i] / Point), 2);
                
                
                    //if  ( i < limit - Chars)
                        //{
         
                        
                          temp=0;
                                for (j=Chars-1; j>=0; j--){                             
                                 temp = temp + ShortDev1[i+j];
                                }
                        
            temp = MathSqrt(temp / Chars) * Point;
            if (temp != 0)
                        {
                temp = ShortDev[i] / temp;
            }

                                
         
                        ShortOscillator[i] = MathTanh(temp);
                                
                   //}
   }
.
.
.


Alors toute aide, suggestion ou indication est appréciée, merci !

Dossiers :
WAVE-PM.mq4  5 kb
 

Bonjour, les gars, certains codeurs pourraient-ils aider à modifier cet indicateur fisher.

oui, c'est un indicateur très vieux et repeint,mais il a quelques informations précieuses. je veux analyser l'état de l'indicateur quand chaque bougie est fermée. je serai apprécié.

Nous ne changeons pas la fonction de peinture, nous ajoutons juste l'auto-rafraîchissement. L'indicateur se rafraîchit et enregistre l'état lorsque chaque bougie se ferme, mais ne se rafraîchit pas lorsque la prochaine bougie commence.

Désolé pour mon mauvais anglais, merci d'avance.

Dossiers :
fisher1.mq4  3 kb
 

Salut les gars !

J'espère que vous allez tous bien ?

J'ai trouvé ces indicateurs dans le forum dynamic zone mais ils ne fonctionnent pas en tant que tels et si un généreux codeur peut les réparer, je l'apprécierais grandement.

Je les attache ici,

Je vous remercie sincèrement par avance.

 
Mkurugenzi:

Salut les gars !

J'espère que vous allez tous bien ?

J'ai trouvé ces indicateurs dans le forum dynamic zone mais ils ne fonctionnent pas en tant que tels et si un généreux codeur peut les réparer, je l'apprécierais grandement.

Je les attache ici,

Je vous remercie sincèrement par avance.

@Naguisa Unada


J'espère que vous allez bien ?


Je vous prie de bien vouloir consulter mon dernier message ci-dessus et de voir si vous êtes en mesure de retoucher au moins certains, sinon tous les indicateurs pour qu'ils fonctionnent ?


Je vous remercie d'avance pour votre effort, votre temps et vos ressources.

 

Hé les codeurs ! Quelqu'un peut-il m'aider à modifier cet EA ?

Il s'agit d'un simple EA d'achat bas et de vente haut qui lance des ordres limites toutes les x minutes et qui durent x minutes/heures.


Je pense que ce qui l'améliorerait serait d'y ajouter un filtre. Disons stochastique ou RSI...

Ainsi, lorsque la stochastique est inférieure à 40 = lancement des limites d'achat.

Et quand la stochastique est supérieure à 60 = lancement des limites de vente.

Et entre les deux il ne lance rien



Est-ce possible ? Merci d'avance.

Je joins l'EA


J'ai utilisé l'EA "manuellement" en décidant de l'exécuter en long ou en short avec de bons résultats.

Dossiers :
WIDE_HARD.mq4  8 kb
EA-FXblue.png  68 kb
 
Bonjour. Je m'excuse immédiatement pour mon mauvais anglais. Si ce n'est pas difficile, veuillez m'aider avec le code du conseiller. A savoir, corriger les conditions d'ouverture et de fermeture des positions. Un peu sur le robot, le robot ouvre et ferme des positions au tour de l'indicateur zig zag.
Ce système est censé fonctionner qu'il y ait ou non un indicateur zig zag dans MT4.
//+------------------------------------------------------------------+
//|                                       Test advisor on ZigZag.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                         https:/goga342@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright c 2010, MQL для тебя."
#property link "http://mql4you.ru"
#property strict
extern double lots = 0.01; //
extern int  TakeProfit=60; //
extern int  StopLoss=100; //
extern int Magic=111111111;
extern int Slippage=3;
extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;

datetime Today=0;
double SL,TP;
int ticket;
//±-----------------------------------------------------------------+
int OnInit()
  {
   if(Digits==3 || Digits==5)
     {
      TakeProfit *=10;
      StopLoss   *=10;
      Slippage   *=10;
     }
   return(INIT_SUCCEEDED);
  }
//±-----------------------------------------------------------------+
int deinit() {return(0);}
//±-----------------------------------------------------------------+
int start()
  {

   if(DayOfWeek()==0 || DayOfWeek()==6) return(0); // в выходные не работаем
   if(!IsTradeAllowed()) return(0); // пропустим тик если терминал занят
                                    //:проверим открытие новой свечи
   if(Time[0]==Today) return(0);
   Today=Time[0];
//:получим значение ZigZag на предыдущей свече
   double lZZ=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,1);
   double lZZ_=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,0);
// открытие продаж

   if(CountSell()==0 && lZZ==Low[0] && lZZ_==Low[0])
     {
      SL = NormalizeDouble(Bid+StopLoss*Point, Digits);
      TP = NormalizeDouble(Bid-TakeProfit*Point, Digits);
        {

         ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,Slippage,SL,TP,"macd sample",Magic,0,Red);
         if(ticket>0)
           {
            // закрытие продаж
    //        if(CountSell()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
              {
               for(int i=OrdersTotal()-1; i>=0; i--)
                 {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                    {
                     if(OrderMagicNumber()==Magic && OrderType()==OP_SELL)
                        if(OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,clrNONE))
                           Print("Ошибка открытия ордера на покупку !");
                    }
                 }
              }
           }
        }
     }
// открытие покупок

 //  if(CountBuy()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
     {
      TP = NormalizeDouble(Ask+TakeProfit*Point, Digits);
      SL = NormalizeDouble(Ask-StopLoss*Point, Digits);
        {
         ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,Slippage,SL,TP,"macd sample",Magic,0,Green);
         if(ticket>0)
           {
            // закрытие покупок    
       //     if(CountBuy()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])
              {
               for(int i=OrdersTotal()-1; i>=0; i--)
                 {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                    {
                     if(OrderMagicNumber()==Magic && OrderType()==OP_BUY)
                        if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,clrNONE))
                           Print("Ошибка открытия ордера на продажу!");
                    }
                 }
              }
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
int CountSell()//проверкна открытие ордеров на продажу
  {
   int count=0;

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL)
           {
            if(OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
int CountBuy()// проверкна открытие ордеров на покупку
  {
   int count=0;

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
           {
            if(OrderType()==OP_BUY)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+

ouverture des ventes

if(CountSell()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])

fermeture des ventes

      if(CountSell()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
              

achatd'ouverture

if(CountBuy()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
     

achat de clôture

 if(CountBuy()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])