[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 201

 
harbor:

Quelqu'un peut-il me conseiller sur la façon de trouver le symbole de la fenêtre graphique actuelle (en surbrillance) parmi celles qui sont ouvertes, pas celle avec le script/conseiller ci-joint, mais celle qui est actuellement active dans le terminal (comme ils le disent aussi dans le focus) ?

Obtenir le descripteur de la fenêtre au sommet de la séquence Z des fenêtres du graphique. Puis on récupère l'en-tête en fonction de ça, et on l'analyse.
 
Zhunko:
Obtenir le descripteur de la fenêtre au sommet de la séquence Z des fenêtres du graphique. Alors, prenez la tête et analysez-la.


Eh bien, mql4 semble avoir une seule fonction avecWindowHandle

Mais je suis en train de faire une dll, est-il possible de faire cela à travers winapi d'une manière ou d'une autre ? Il y a une fonction appeléeGetWindowText par handle

Comment obtenir la poignée ?

 
harbor:


Eh bien, mql4 semble avoir une seule fonction avecWindowHandle

Mais je suis en train de faire une dll, est-il possible de faire cela à travers winapi d'une manière ou d'une autre ? Il y a une fonction appeléeGetWindowText par handle

Comment obtenir la poignée ?

Dans la DLL, vous devez obtenir la poignée de la fenêtre située en haut de la séquence Z. Il y a un client MDI. C'est le parent des fenêtres du graphique. C'est là qu'il faut chercher ce descripteur.
 
Veuillez indiquer ce qui se passera si vous négociez l'EURJPY et l'USDJPY avec des lots égaux (ou non égaux). Peut-être que quelqu'un en a fait l'expérience (j'ai besoin d'une variante de calcul).
 
YOUNGA:
Veuillez indiquer ce qui se passera si vous négociez l'EURJPY et l'USDJPY avec des lots égaux (ou non égaux). Peut-être que quelqu'un en a fait l'expérience (j'ai besoin d'une variante de calcul).
Calcul de quoi ?
 
YOUNGA:
Veuillez indiquer ce qui se passera si vous négociez l'EURJPY et l'USDJPY avec des lots égaux dans des directions différentes (ou s'ils ne sont pas égaux). Peut-être que quelqu'un l'a essayé (j'ai besoin d'une variante de calcul)

Ici, EUR et USD sont la devise de base, et le lot est calculé dans cette devise. Par exemple, pour la première paire, un lot équivaut à 100.000 EUR, pour la seconde à 100.000 USD, dans les deux cas achetés/vendus pour des Yens.
 


Laissez-moi vous expliquer que si vous ouvrez un lot sur chaque paire EURJPY et USDJPY, alors le lot EURUSD devrait changer d'un point dans le prix de l'EURUSD. Quelque chose doit se produire avec la paire synthétique EURJPY/USDJPY puisqu'elles sont corrélées.



 

J'essaie de coder l'idée suivante.

Si l'heure est 01.00.00. ou 03.00.00.

Ouvrez une commande vers le haut.

En d'autres temps, ouvrez un ordre à la baisse.

PROBLÈME Le programme se compile à 01:00:00 et ouvre un ordre d'achat mais ne lit pas || ni rien après.

if(Hour( )==01 && Minute( )==00 && Secondes()==00||Hour( )=03 && Minute( )==00 && Secondes()==00 )

C'est-à-dire qu'à03.00.00 le testeur n'ouvre pas une position d'achat, mais une position devente.

Toutes les autres offres sont ouvertes conformément au code.

  if(Hour( )==01 && Minute( )==00 && Seconds()==00||Hour( )==03 && Minute( )==00 && Seconds()==00 )
 
    
   {  
      if (Bid==Price  )
     
  int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP );
  }
  else
  {
  SL=NormalizeDouble (Price+3000*Point, Digits);         
  TP=NormalizeDouble (Price-100*Point, Digits);
  Ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,SL,TP );
 }
 }
 }

Делал два заголовка if ...... вообще не открывает сделки

 if(Hour( )==01 && Minute( )==00 && Seconds()==00 )
  if(Hour( )==03 && Minute( )==00 && Seconds()==00)
    
   {  
      if (Bid==Price  )
     
  int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP );
  }
  else
  {
  SL=NormalizeDouble (Price+3000*Point, Digits);         
  TP=NormalizeDouble (Price-100*Point, Digits);
  Ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,SL,TP );
 }
 }
 }
Подскажите - как сделать так что бы в 03.00.00. открывалась сделка на покупку? Спасибо
 
solnce600:

PROBLÈME Le programme se compile, à 01.00.00 il ouvre une transaction d'achat, mais ne lit pas || et le caractère qui le suit.

if(Hour( )==01 && Minute( )==00 && Secondes()==00||Hour( )=03 && Minute( )==00 && Secondes()==00 )

C'est-à-dire qu'à03.00.00 le testeur n'ouvre pas une position d'achat, mais une position devente.

Toutes les autres offres sont ouvertes conformément au code.


Pour commencer, habituez-vous à mettre les supports là où vous en avez besoin. Comme ça :

if((Hour( )==01 && Minute( )==00 && Seconds()==00) || (Hour( )==03 && Minute( )==00 && Seconds()==00))
En fait, vous devriez avoir une fourchette de temps, et non une valeur fixe. Votre logique n'est pas du tout correcte. Pas 1 heure OU 3 heures, mais de 1 heure à 3 heures !
 
hoz:


Pour commencer, habituez-vous à mettre les supports là où vous en avez besoin. Comme ça :

Il se peut qu'il n'y ait pas un tick dans cette seconde ou même une minute, donc mieux vaut sans secondes et Minute() < 5 et ouverture limite : if(OrdersTotal< 1) ou autant que nécessaire !
Raison: