Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 71

 

J'ai besoin de l'indicateur pour dessiner des flèches sur le graphique quotidien. Je suppose que le problème réside dans l'utilisation des EMA de 15 minutes, tout fonctionne sur les EMA de 15 minutes. Est-il possible de créer un indicateur calculé à partir de l'échelle de temps 15 minutes et de dessiner des flèches sur le graphique journalier ?

Voici le code lui-même :

#property copyright ""
#property link      ""

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Magenta
#property indicator_color2 Red

//--- input parameters

//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,217);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,0.0);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,217);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexEmptyValue(1,0.0);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int counted_bars=IndicatorCounted(),                      
    limit;
    double
    signal_1,
    signal_2,
    MA_1_t,                                                 
    MA_2_t;
 
   if(counted_bars>0)
      counted_bars--;
   
   limit=Bars-counted_bars;
   
   
   for(int i=0;i<limit;i++)
   {
      MA_1_t=iMA(NULL,PERIOD_M15,3,0,MODE_EMA,PRICE_CLOSE,i+0);  
      MA_2_t=iMA(NULL,PERIOD_M15,3,0,MODE_EMA,PRICE_CLOSE,i+1);  
      signal_1 = (условие);
      signal_2 = (условие);
      if (signal_1 >= определенное число)
      ExtMapBuffer1[i]=High[i]+5*Point;
      else
         ExtMapBuffer1[i]=0.0;
      if(signal_2 >= определенное число)
         ExtMapBuffer2[i]=Low[i]-5*Point;         
      else
         ExtMapBuffer2[i]=0.0; 
   }
   return(0);
  }
//+------------------------------------------------------------------+
 
satorifx:


dist = MathAbs((NormalizeDouble(Bid,Digits)-
NormalizeDouble(ObjectGetValueByShift(TrendLineName,0),Digits))*MathPow(10,Digits));

Le code trouve la distance entre le niveau de prix actuel et la tendance par TrendLineName. Mais il y a un problème : apparemment, la tendance n'est pas transmise avec précision entre les moitiés, et donc la distance au prix est très différente pour les différentes moitiés. Comment contourner ce problème ? Idéalement, même si la ligne de tendance n'est affichée que sur H1, sur le cadre temporel ouvert W1 (en fait sur n'importe quel cadre temporel ouvert), la distance calculée devrait être la même.


En rapport avec la question de la citation ci-dessus, une autre question : comment puis-je simuler un cadre temporel différent de celui qui est ouvert sur le graphique ? C'est-à-dire que, par exemple, avec D1 ouvert, dois-je calculer sur M30 ?
 
J'ai cherché sur Internet, j'ai trouvé quelque chose, mais j'ai essayé et ça ne marche pas ! Aidez-moi à ajouter un stop suiveur)) devrait fonctionner comme ceci - si le prix monte / descend (en profit) à "X" points, déclenche un stop suiveur à "Y" points de ce prix et se déplace dans la direction profitable avec l'incrément "Z". Merci à tous ceux qui nous aideront))))))

//+------------------------------------------------------------------+
//| sobstvennyi_probnyi_sovetnic.mq4 |
//| Antonico |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Antonico"
#lien de propriété "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| fonction d'initialisation de l'expert |
//+------------------------------------------------------------------+
double lot=1 ;
extern double sl=30 ;
extern double tp=30 ;
extern double koeff=2 ;
int pon=1 ;
int vtor=0 ;
int sred=3 ;
int hetver=0 ;
int patn=0 ;


int init()
{
//----

//----
retour(0) ;
}
//+------------------------------------------------------------------+
//| fonction de désinitialisation des experts |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
retour(0) ;
}
//+------------------------------------------------------------------+
//| fonction de démarrage de l'expert |
//+------------------------------------------------------------------+
int start()

{ int otkrord=OrdersTotal() ;
if (DayOfWeek()==pon || DayOfWeek()==vtor || DayOfWeek()==sred || DayOfWeek()==hetver || DayOfWeek()==patn || DayOfWeek()==6 | DayOfWeek()==0 || otkrord >0) return(0) ;



si(OrdersHistoryTotal()==0)
{lot=1;}

if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))

{
si (OrderProfit()>0)
{
lot=1 ;
}
si (OrderProfit()<=0)
{
lot=OrderLots()*koeff ; // Multiplier par 2
}

}


int h=TimeHour(TimeCurrent()) ;
int m=TimeMinute(TimeCurrent()) ;
int s=TimeSeconds(TimeCurrent()) ;
double zena0=Open[3] ;
double zena01=Open[2] ;


si (h==1 && m==00 && s==01 && zena0<zena01 )

{OrderSend(Symbol(), OP_BUY,lot,Ask,3,Bid-sl*Point,Ask+tp*Point,"",0,0,Green);}





si (h==1 && m==00 && s==01 && zena0>zena01)
{OrderSend(Symbol(), OP_SELL,lot,Bid,3,Ask+sl*Point,Bid-tp*Point,"",0,0,Red);}
}


{si(OrdersHistoryTotal()==0)
{lot=1;}

if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))

{
si (OrderProfit()>0)
{
lot=1 ;
}
si (OrderProfit()<=0)
{
lot=OrderLots()*koeff ; // Multiplier par 2 après un trade perdant
}

}




double zena1=Open[5] ;
double zena11=Open[4] ;

si (h==3 && m==00 && s==01 && zena1>zena11)
{



OrderSend(Symbol(), OP_BUY,lot,Ask,3,Bid-sl*Point,Ask+tp*Point,"",0,0,Green);}
si (h==14 && m==00 && s==01 && zena1<zena11)
{OrderSend(Symbol(), OP_SELL,lot,Bid,3,Ask+sl*Point,Bid-tp*Point,"",0,0,Red);}

}
}

retour(0) ;
}

//+------------------------------------------------------------------+
 

Pouvez-vous me dire comment traduire un caractère (chaîne de caractères) en code ASCII ?

En gros, vous avez besoin de l'inverse de CharToStr().

 
Heroix:

Pouvez-vous me dire comment traduire un caractère (chaîne de caractères) en code ASCII ?

En gros, vous avez besoin de l'inverse de CharToStr().


 

Bon après-midi.

Aidez-moi, j'ai besoin d'un code

graphique actuel

Lorsqu'une nouvelle barre s'ouvre, un ordre doit être ouvert.

Exactement le nouveau bar

 
sannin:

Bon après-midi.

Aidez-moi, j'ai besoin d'un code

graphique actuel

Lorsqu'une nouvelle barre s'ouvre, un ordre doit être ouvert.

Exactement le nouveau bar

Pas de problème !

Commencez à écrire le code dont vous avez besoin. En cas de difficultés, posez des questions et montrez des morceaux du code que vous avez écrit, et des camarades expérimentés vous montreront où vous vous êtes trompé.

 

Bonjour à tous.

J'ai une question. Dans le testeur, la semaine commence à 00:00 si l'on regarde le graphique horaire, par exemple. Il est connu que la semaine du forex commence à 20:15 GMT. C'est-à-dire que pour passer d'une heure à l'heure GMT du testeur, en gros, il faut prébovlyayut 20 heures et diviser le modulo par 24, non ?

 
pourquoi exactement à 20h15, pour vous, il ouvrira comme votre courtier.
 
Bonne journée à tous. S'il vous plaît, indiquez où obtenir des informations sur la façon de fermer l'EA des regards indiscrets et ce dont vous avez besoin pour que l'EA fonctionne pendant une certaine période de temps et cesse ensuite d'être utile pour le moment, bien, par exemple, pour introduire un code pour la poursuite du travail, comme ça. Merci d'avance ! !!
Raison: