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

 
Vinin:


si (c % 2==0) //pair


Je ne vérifierais pas doublement l'égalité avec quoi que ce soit.
 
Pouvez-vous m'indiquer comment exécuter un for loop sur des ordres déficitaires déjà clôturés ? Ou peut-être que quelqu'un a déjà une fonction : lorsqu'un trade à perte est fermé, multiplier le lot ?
 
tara:

Je ne vérifierais pas doublement l'égalité avec quoi que ce soit.


Je pensais avoir écrit avant que seulement pour les entiers. Ou vous ne le lisez pas bien ?

Vinin 18.09.2011 03:14 am | supprimer
NickXXX:

Question pour une énigme).

Comment déterminer par programme si un nombre est pair ou impair ?

Par exemple :

int a, b, c ;

a=2 ;

b=3 ;

c=a+b

c est pair ou impair ?



Si les nombres sont des entiers, vérifiez le reste de la division par 2.

if (c % 2==0) //четное

 

clarifier les erreurs de code


avatar
2
Qwuyt 18.09.2011 11:56

Bonjour !

S'il vous plaît, si vous n'êtes pas paresseux, regardez le code et dites-moi quelles sont mes erreurs. J'ai eu un tas d'erreurs à la compilation. C'est mon premier EA, je commence tout juste à le comprendre. L'idée de l'Expert Advisor est la suivante : le lundi à une heure donnée, nous plaçons des ordres en attente dans les deux sens à une distance de X points de la clôture de la semaine précédente. Le vendredi, à une heure donnée, nous fermerons les ordres au marché et supprimerons les ordres en attente. C'est tout.

//+------------------------------------------------------------------+
//|                                                         Week.mq4 |
//|                                          Copyright © 2011, Qwuyt |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, Qwuyt"
#property link      ""

//--- input parameters
extern double    lot=0.01;                                                 //размер лота 
extern int       tp=200;                                                   //тейк профит
extern int       sl=50;                                                    //стоплосс
extern int       move=100;                                                 //движение цены 
extern int       hc=22;                                                    //час закрытия 
extern int       ho=4;                                                     //час закрытия
double BP;                                                                 //цена открытия бай
double SP;                                                                 //цена открытия селл
int Ticket;                                                                
int Tip;                                                                   //тип ордера
int Curday;                                                                //день недели
bool Ans = false;                                                          //ответ сервера после закрытия ордера
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()                               
  {
  int Curday = DayOfWeek                                    
  double BP = iClose(NULL,10080,1)+NormalizeDouble(move*Point,Digits);     //      
  double SP = iClose(NULL,10080,1)-NormalizeDouble(move*Point,Digits);
    if (ho >= Hour && Curday=1)                                            //4 утра понедельника - открытие бай
    {
    OrderSend (Symbol(),OP_BUYSTOP,lot,BP,3,sl,tp,NULL,0,0,Red)
    }
    if (ho >= Hour && Curday=1)                                            //4 утра понедельника - открытие селл
    {
    OrderSend (Symbol(),OP_SELLSTOP,lot,SP,3,sl,tp,NULL,0,0,Red)
    }
    while(true)                                                           //цикл закрытия орд.
     {
      if (Tip==0 && hc >= Hour && Curday=6)                               // Открыт ордер Buy, 22 часа пятницы закрыть
        {                                                                 //
         RefreshRates();                                                  // Обновление данных
         Ans=OrderClose(Ticket,lot,Bid,3);                                // Закрытие Buy
         return;                                                          // Выход из start()
        }
      if (Tip==1 && hc >= Hour && Curday=6)                               // Открыт ордер Sell, 22 часа пятницы закрыть
        {                                                                 //

         RefreshRates();                                                   // Обновление данных
         Ans=OrderClose(Ticket,lot,Bid,3);
         return;                                                          // Выход из start()
        }
      if (Tip==4||Tip==5 && hc >= Hour && Curday=6)                               // Открыт ордер Buy, 22 часа пятницы закрыть
        {                                                                 //
         RefreshRates();                                                  // Обновление данных
         Ans=OrderDelete(Ticket,CLR_NONE);                                // Закрытие Buy
         return;                                                          // Выход из start()
        }
      break;                                                               // Выход из while
     }
     Tip = OrderType();
return();
  }
Fichiers joints:
Semaine_1.mq4 (4.52 KB)



929
abolk 18.09.2011 12:00 am correct | supprimer

pour commencer :

1) mettre ; à la fin de chaque opérateur

2) utiliser les fonctions correctes, par exemple Hour()

 
Falmera:
Pouvez-vous m'indiquer comment exécuter un for loop sur des commandes déficitaires déjà clôturées ? Ou peut-être que quelqu'un a déjà une fonction : lorsqu'un trade à perte est fermé, multiplier le lot ?

Des conseils ?
 
Falmera:

alors aidez-moi s'il vous plaît


Montrez-moi vos propres tentatives d'implémentation de cette fonction - le fil de discussion "aide aux débutants".

ou recherchez "recherche de la dernière commande clôturée" ou similaire - le sujet existe depuis longtemps.

 
Falmera:

Eh bien, donnez-moi un indice.

Voir les hiboux de la branche Avalanche.
 

J'apprends un langage de programmation et j'ai du mal à comprendre le comportement du programme. J'ai écrit un EA basé sur le manuel, mais je l'ai déformé selon un principe de fonctionnement légèrement différent.

L'Expert Advisor est basé sur une moyenne de 2 muwings. L'idée est simple, les moyennes mobiles se croisent, l'ordre est fermé et l'ordre opposé est ouvert. J'ai écrit un EA et il fonctionne bien. Bien sûr, il est légèrement désavantagé, mais en accord avec l'idée. Le problème entier est le suivant (en gras) :

A=iMA(NULL,0,Period_MA_1,0,MODE_SMA, PRICE_CLOSE,1) ; // A

B=iMA(NULL,0,Period_MA_2,0,MODE_SMA,PRICE_CLOSE,1) ; // B

C=iMA(NULL,0,Period_MA_1,0,MODE_SMA,PRICE_CLOSE,2) ; // C

D=iMA(NULL,0,Period_MA_2,0,MODE_SMA,PRICE_CLOSE,2) ; // D

Si je change la façon de calculer les moyennes mobiles (le signe plus peut apparaître) et que je mets la méthode exponentielle( MODE_SMA) au lieu de la méthode simple(MODE_EEMA ) et une autre(MODE_SMMA), appelée méthode lissée, tout va mal. Le principe de fonctionnement devient encore plus amusant (dans le testeur de stratégie) car l'EA ouvre un ordre au tout début de la période fixée et le ferme à la fin. C'est-à-dire que pendant une année, il ouvre une seule transaction au début de la période et la ferme à la fin. En conséquence, le conseiller expert m'a montré un plus, mais je n'ai pas besoin d'un tel plus. Je peux tirer à pile ou face moi-même et ouvrir un ordre d'achat ou de vente et voir si je gagne ou perds en un an. À propos, si je règle MODE_SMA sur MODE_LWMA (Linear Weighted Moving Average), le programme fonctionne bien.

S'il vous plaît, conseillez-moi, qu'est-ce qui ne va pas ? Le principe est le même, mais le mode de calcul des moyennes mobiles a été un peu modifié.

Le code complet est dans le fichier joint.


J'ai reçu des réponses ici, mais elles ne sont pas compétentes et ne portent pas sur le fond. J'utilise soi-disant 4 moyennes mobiles. Ce n'est pas vrai, il y a deux moyennes mobiles, mais pour chaque moyenne mobile, on prend des valeurs pour deux barres (un total de 4 appels de tableau, A, B, C, D) : 1 et 2 . En outre, ils ont écrit que lorsqu'un ordre est fermé, nous devrions diminuer le nombre d'ordres totaux, mais cela n'est pas nécessaire car les ordres sont comptés à l'aide de la fonction Odertotal et si je ferme un ordre, le total de l'ordre lui-même change de valeur à la prochaine itération. Ils suggèrent également d'utiliser les "chiffres magiques" pour suivre les commandes, mais je ne suis pas encore arrivé à cette partie du manuel. Je dois répéter que le programme fonctionne lorsque MODE_SMA et MODE_LWMA sont utilisés mais pas lorsque MODE_EMA et MODE_SMMA sont utilisés. Qui sait pourquoi, écrivez-moi une réponse s'il vous plaît.

Dossiers :
 
Falmera:

S'il vous plaît, donnez-moi un indice.
allez sur le topic avalanche, il y a assez de conseillers là bas avec n'importe quelle augmentation de lot.... Faites une recherche sur le forum en haut à droite ou sur Google.
 
neisseria:

J'apprends un langage de programmation et j'ai du mal à comprendre le comportement du programme. J'ai écrit un EA basé sur le manuel, mais je l'ai déformé selon un principe de fonctionnement légèrement différent.

L'Expert Advisor est basé sur une moyenne de 2 muwings. L'idée est simple, les moyennes mobiles se croisent, l'ordre est fermé et l'ordre opposé est ouvert. J'ai écrit un EA et il fonctionne bien. Bien sûr, il est légèrement désavantagé, mais en accord avec l'idée. Le problème entier est le suivant (en gras) :

A=iMA(NULL,0,Period_MA_1,0,MODE_SMA, PRICE_CLOSE,1) ; // A

B=iMA(NULL,0,Period_MA_2,0,MODE_SMA,PRICE_CLOSE,1) ; // B

C=iMA(NULL,0,Period_MA_1,0,MODE_SMA,PRICE_CLOSE,2) ; // C

D=iMA(NULL,0,Period_MA_2,0,MODE_SMA,PRICE_CLOSE,2) ; // D

Si je change la façon de calculer les moyennes mobiles (le signe plus peut apparaître) et que je mets la méthode exponentielle( MODE_SMA) au lieu de la méthode simple(MODE_EEMA ) et une autre(MODE_SMMA), appelée méthode lissée, tout va mal. Le principe de fonctionnement devient encore plus amusant (dans le testeur de stratégie) car l'EA ouvre un ordre au tout début de la période fixée et le ferme à la fin. C'est-à-dire que pendant une année, il ouvre une seule transaction au début de la période et la ferme à la fin. En conséquence, le conseiller expert m'a montré un plus, mais je n'ai pas besoin d'un tel plus. Je peux tirer à pile ou face moi-même et ouvrir un ordre d'achat ou de vente et voir si je gagne ou perds en un an. À propos, si je règle MODE_SMA sur MODE_LWMA (Linear Weighted Moving Average), le programme fonctionne bien.

S'il vous plaît, conseillez-moi, qu'est-ce qui ne va pas ? Le principe est le même, mais le mode de calcul des moyennes mobiles a juste été un peu modifié.

Le code complet est dans le fichier joint.


J'ai reçu des réponses ici, mais elles ne sont pas compétentes et ne portent pas sur le fond. J'utilise soi-disant 4 moyennes mobiles. Ce n'est pas vrai, il y a deux moyennes mobiles, mais pour chaque moyenne mobile, on prend des valeurs pour deux barres (un total de 4 appels de tableau, A, B, C, D) : 1 et 2 . En outre, ils ont écrit que lorsqu'un ordre est fermé, nous devrions diminuer le nombre d'ordres totaux, mais cela n'est pas nécessaire car les ordres sont comptés à l'aide de la fonction Odertotal et si je ferme un ordre, le total de l'ordre lui-même change de valeur à la prochaine itération. Ils suggèrent également d'utiliser les "chiffres magiques" pour suivre les commandes, mais je ne suis pas encore arrivé à cette partie du manuel. Je dois répéter que le programme fonctionne lorsque MODE_SMA et MODE_LWMA sont utilisés mais pas lorsque MODE_EMA et MODE_SMMA sont utilisés. Qui sait pourquoi, écrivez-moi une réponse s'il vous plaît.


Je vérifierais également les conditions. Il y a peut-être un problème