[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 67

 

Bonjour, tout le monde.

J'ai décidé de devenir écrivain. J'ai lu quelque chose à ce sujet et j'ai décidé d'écrire un conseiller expert, qui ouvrirait une position lorsque le RSI avec la période 8 croise 70 et fermerait la position lorsque croise 30 et rien d'autre ne se produirait. Je l'ai écrit, voici le code

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

//---- paramètres d'entrée
extern int PerRSI=8 ;
extern int intNamber=77771 ;

extern double Lots=1.0 ;

/+------------------------------------------------------------------+
//| fonction de démarrage de l'expert |
//+------------------------------------------------------------------+
int start()
{
int
cnt=0,
billet,
total ;
double
rsi_0, //valeur. rsi_0 courant
rsi_1 ; // Valeur. rsi_1 1ère barre
si (Bars<100)
{
Print("barres inférieures à 100") ;
retour(0) ;
}
rsi_0=iRSI(NULL,0, PerRSI,0,0) ; // Barre actuelle
rsi_1=iRSI(NULL,0, PerRSI,0,1) ; // Barre actuelle plus 1
total=OrdersTotal() ;
si(total<1)
if(rsi_0 < rsi_1 && rsi_0 > 70) // Si la ligne a franchi 70
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0, "My RSI", MagicNamber,0,Green) ;
si(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("Ordre de vente ouvert : ",OrderOpenPrice())
}
else Print("Erreur lors de l'ouverture d'un ordre de VENTE : ",GetLastError()) ;
retour(0) ;
}
for(cnt=0;cnt<total;cnt++)
{
RefreshRates() ;
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ;
if(OrderType()<=OP_SELL && // il s'agit d'une position ouverte ? OP_BUY ou OP_SELL
OrderSymbol()==Symbol()) // correspondance de l'outil ?
{
if(OrderType()==OP_SELL) // la position est ouverte
{
if(rsi_0 > rsi_1 && rsi_0 < 30) // Si la ligne a franchi 30
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ; // position de clôture
return(0) ; // sortie

}}}}}

Je l'ai testé et il fonctionne en grande partie comme je voulais. J'ai décidé de modifier le code, pour ouvrir une position lorsque le SSI - 14 franchit le niveau 100, et pour fermer une position lorsque franchit le niveau 100. J'ai changé le code RSI pour CCI , le voici.

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

//---- paramètres d'entrée
extern int PerCCI=14 ;
extern inttern MagicNamber=88881 ;

extern double Lots=1.0 ;

//+------------------------------------------------------------------+
//| fonction de démarrage de l'expert |
//+------------------------------------------------------------------+
int start()
{
int
cnt=0,
billet,
total ;
double
cci_0, // valeur du cci_0. cci_0 courant
cci_1 ; // valeur cci_1. cci_1 1ère barre
si (Bars<100)
{
Print("barres inférieures à 100") ;
retour(0) ;
}
cci_0=iRSI(NULL,0, PerCCI,0,0) ; // Barre actuelle
cci_1=iRSI(NULL,0, PerCCI,0,1) ; // barre actuelle plus 1
total=OrdersTotal() ;
si(total<1)
if(cci_0 < cci_1 && cci_0 > 100) // si la ligne a franchi 100
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0, "My CCI", MagicNamber,0,Green) ;
si(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("Ordre de vente ouvert : ",OrderOpenPrice())
}
else Print("Erreur lors de l'ouverture d'un ordre de VENTE : ",GetLastError()) ;
retour(0) ;
}
for(cnt=0;cnt<total;cnt++)
{

OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES) ;
if(OrderType()<=OP_SELL && // il s'agit d'une position ouverte ? OP_BUY ou OP_SELL
OrderSymbol()==Symbol()) // correspondance de l'outil ?
{
if(OrderType()==OP_SELL) // la position est ouverte
{
if(cci_0 > cci_1 && cci_0 < -100) // si la ligne a franchi -100
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ; // position de clôture
return(0) ; // sortie
}}}}}

Commencé à tester CCI ..... bien, rien ne se passe, ne vend pas ou n'achète pas, pas d'erreurs dans le journal, à la fin du test ouvre le graphique de la courbe, mais ce n'est pas CCI, mais RSI 70-30 avec la période 14..... Peut-être que l'un des rédacteurs expérimentés comprendra et dira pourquoi et comment le réparer.

 
pepsi писал(а) >>
Ensuite, la démonstration dans le journal montre tout plus clairement. On sait mieux où chercher l'erreur. Tout seul...

>> Merci.

 

Rebonjour !!!!!!!

Je voudrais /non-intrusivement/;-)) vous rappeler votre question sur la p. 64 sur les conditions de trading pour MA... merci d'avance (pour un coup de pied dans le pantalon d'un imbécile)

 

Messieurs, pouvez-vous me dire si j'utilise plusieurs graphiques temporels différents d'un même instrument de trading dans le terminal ?

Comment le trafic est-il consommé par le programme ? Consomme-t-il le trafic de la période minimale, ou le trafic de toutes les périodes ?

 
igrok2008 >> :

Rebonjour !!!!!!!

Je voudrais /non-intrusivement/;-)) vous rappeler votre question sur la p. 64 sur les conditions de trading pour MA... merci d'avance (pour le coup de pied dans le pantalon des nuls)

int start()
  {
//----
    double MA_0=iMA(NULL, 0, pMA, pSh, mode, price,0);
    double MA_1=iMA(NULL, 0, pMA, pSh, mode, price,1);

    перед использованием в коде open_1 или  open_0 их нужно инициализировать, т. е. объяснить программе
    к виду каких данных эти опены относятся( целые, дробные, строчные, логические)

    double open_0=Open[0]; //  double - дробное число. 0 и 1 это номера ячееек,
    double open_1=Open[1]; // которые в данном случае являются номерами баров
        
    if( MA_1< Open[1] && MA_0>Open[0])
     if( CheckOrders(OP_SELL))//продажа
      {
       if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
       }
       
    if( MA_1>Open[1] && MA_0<Open[0])
     if( CheckOrders(OP_BUY))//покупка
      {
       if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
       }
//----
   return(0);
  }
 
KONDOR >> :

Merci pour la réponse ! !!

1. Laissez-moi clarifier, est-ce que les deux lignes avec double open_0 et double_1 doivent être écrites AVANT les lignes de double MA, ou est-ce que c'est sans critique ? ?????...

2. Dans les conditions de trading vous pouvez remplacer open[0,1] par open_0,1 ? ???????.....

 
igrok2008 >> :

Merci pour la réponse ! !!

1. Laissez-moi clarifier, est-ce que les deux lignes avec double open_0 et double_1 doivent être écrites AVANT les lignes de double MA, ou est-ce que c'est sans critique ? ?????...

2. Vous pouvez remplacer open[0,1] par open_0,1 ? ???????.....

1. non critique.

2. peut

 

Aidez-nous s'il vous plaît... Je suis peut-être paresseux, mais je n'arrive pas à trouver comment connecter le programme pour trader sur un compte démo ou réel... Expliquez-moi ce qu'il faut écrire et où il faut chanter, je vous en supplie... merci d'avance !))

 
J'ai écrit - j'ai écrit, j'ai négocié dans le testeur, mais sur la démo ou réel ne veut pas faire des transactions, et en général il n'ya pas de signaux, alors qu'ils devraient être là(((
 
keekkenen >> :

1. non critique

2. peut

CGFCB<J c'est-à-dire MERCI !!!!