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

 

Salut,

Veuillez me donner l'exemple le plus simple pour ouvrir un ordre (immédiatement, sans aucun "si").
Le manuel est très compliqué.

 
olis:

Salut,

Veuillez me donner l'exemple le plus simple pour ouvrir un ordre (immédiatement, sans aucun "si").
Le tutoriel est très compliqué.

Envoi de la commande()

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)

Fonction de base utilisée pour ouvrir une position ou placer un ordre en attente.
Renvoie le numéro de ticket, qui est attribué à l'ordre par le serveur commercial, ou -1 en cas d'échec. Pour obtenir plus d'informations sur l'erreur, vous devez appeler la fonction GetLastError().
Notes.
Lors de l'ouverture d'un ordre au marché (OP_SELL ou OP_BUY), seuls les derniers cours acheteur (pour la vente) ou vendeur (pour l'achat) peuvent être utilisés comme cours d'ouverture. Si l'opération est effectuée pour un instrument financier différent de l'instrument actuel, alors pour obtenir les derniers cours pour cet instrument, il faut utiliser la fonction MarketInfo() avec le paramètre MODE_BID ou MODE_ASK. Vous ne pouvez pas utiliser un prix estimé ou non normalisé. Si le prix d'ouverture demandé n'était pas dans le flux de prix ou si le prix demandé n'est pas normalisé en fonction du nombre de décimales, l'erreur 129 (ERR_INVALID_PRICE) sera générée. Si le prix d'ouverture demandé est gravement dépassé, une erreur 138 (ERR_REQUOTE) est générée quelle que soit la valeur du paramètre slippage. Si le prix demandé est périmé mais toujours présent dans le flux de prix, la position sera ouverte au prix actuel et seulement si le prix actuel se situe dans la fourchette prix+slippage.

Les prix StopLoss et TakeProfit ne doivent pas être placés trop près du marché. La distance minimale de stop en pips peut être obtenue en utilisant la fonction MarketInfo() avec le paramètre MODE_STOPLEVEL. L'erreur 130 (ERR_INVALID_STOPS) est générée en cas d'arrêts erronés ou non normalisés.

Lorsque vous placez un ordre en suspens, le prix d'ouverture ne peut pas être trop proche du marché. La distance minimale du prix en suspens par rapport au prix actuel du marché en points peut également être obtenue en utilisant la fonction MarketInfo() avec le paramètre MODE_STOPLEVEL. Si le prix d'ouverture de l'ordre en attente est incorrect, l'erreur 130 (ERR_INVALID_STOPS) sera générée.

Sur certains serveurs commerciaux, il est possible d'interdire l'expiration des ordres en attente. Dans ce cas, une erreur 147 (ERR_TRADE_EXPIRATION_DENIED) sera générée lors de la tentative de définir une valeur non nulle dans le paramètre d'expiration.

Sur certains serveurs commerciaux, il est possible de fixer une limite au nombre total d'ordres ouverts et en attente. Si cette limite est dépassée, une nouvelle position ne sera pas ouverte (aucun ordre en attente ne sera défini) et le serveur de négociation renverra l'erreur 148 (ERR_TRADE_TOO_MANY_ORDERS).
Paramètres :
symbole - Nom de l'instrument financier à négocier.
cmd - Opération commerciale. Peut être l'une des valeurs commerciales.
volume - Nombre de lots.
prix - Prix d'ouverture.
glissement - Glissement de prix maximum autorisé pour les ordres de marché (ordres d'achat ou de vente).
stoploss - Le prix de clôture d'une position lorsque la perte est atteinte (0 s'il n'y a pas de perte).
takeprofit - Le prix de clôture d'une position lorsque le niveau de rentabilité est atteint (0 s'il n'y a pas de niveau de rentabilité).
commentaire - Texte de commentaire de commande. La dernière partie du commentaire peut être modifiée par le serveur de négociation.
magie - Numéro magique de la commande. Peut être utilisé comme un identifiant défini par l'utilisateur.
expiration - Heure d'expiration de l'ordre en cours.
couleur de la flèche - Couleur de la flèche d'ouverture sur le graphique. Si le paramètre est absent ou si sa valeur est CLR_NONE, la flèche d'ouverture n'apparaît pas sur le graphique.
 
ULAD:

Je n'arrive pas à trouver comment calculer la durée de vie entre la formation du motif et la barre 0.

Si le modèle existe et qu'il n'y a pas de référence précise au prix et au temps.

Le modèle n'existe pas toujours. Il a été formé à un moment donné. Voici un lien vers le moment de sa formation et le moment de la barre actuelle ou vers la barre de sa formation et la barre actuelle. Pouvez-vous trouver la différence entre la formation du modèle et l'heure actuelle?
 
olis:

Salut,

Veuillez me donner l'exemple le plus simple pour ouvrir un ordre (immédiatement, sans aucun "si").
Le manuel est très compliqué.


//--------------------------------------------------------------------
// simpleopen.mq4 
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
int start()                                  // Спец. функция start()
  {                                          // Открытие BUY
   OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
   return;                                   // Выход из start()
  }
//--------------------------------------------------------------------
 
Roll:


Merci, ça marche !
 

J'essaie de comprendre un exemple tiré du livre de S.K., rocseparate.mq4 Expert Advisor Je lance un test, affiche un graphique. En bas, il y a une fenêtre rocseparate, mais elle est vide. Comment faire pour qu'un indicateur soit affiché dans la fenêtre principale ? Le code est comme dans le livre :

//-------------------------------------------------------------- 5a --
   double L_1=iCustom(NULL,0,"rocseparate",H,P,B,A,1,0);
   double L_5=iCustom(NULL,0,"rocseparate",H,P,B,A,5,0);
//-------------------------------------------------------------- 5b --
   if (L_5<=-Level && L_1>L_5)
     {
      Opn_B=true;                               // Критерий 
 
ScioMe:

J'essaie de comprendre un exemple tiré du livre de S.K., rocseparate.mq4 Expert Advisor Je lance un test, affiche un graphique. En bas, il y a une fenêtre rocseparate, mais elle est vide. Comment faire pour qu'un indicateur soit affiché dans la fenêtre principale ? Le code comme dans le livre :


Tutoriel :
"...L'indicateur personnalisé rocseparate.mq4 du taux de variation des prix sur les échelles de temps actuelles, les plus proches et les plus proches... est un analogue complet de l'indicateur roc.mq4, mais il est affiché dans une fenêtre séparée. Il a permis de calculer les valeurs des lignes de vitesse pour différentes périodes, non pas par rapport à la référence MA, mais par rapport à la ligne zéro horizontale".

 
Roll:


Tutoriel :
".. .L'indicateur personnalisé rocseparate.mq4 du taux de variation des prix sur les horizons temporels actuel, le plus proche et le plus proche est affiché dans une fenêtre séparée ... est l'analogue complet de l'indicateur roc.mq4, mais il est affiché dans une fenêtre séparée. Cela a permis de calculer les valeurs des lignes de vélocité pour différentes périodes, non pas par rapport à la référence MA, mais par rapport à la ligne zéro horizontale".


Oui, tout à fait exact : je le dépose sur le graphique, rocseparate apparaît en bas dans sa propre fenêtre. Mais lorsque je clique sur "Open Chart" après le test, la fenêtre du graphique est vide. Je ne comprends pas ce qui ne va pas ?
 
Appuyez ensuite sur la touche End du clavier (EA shared.mq4) et observez votre indicateur (la fenêtre n'est pas vide).
 

Bon après-midi, messieurs.

J'ai encore besoin de votre avis sur cette question :

Je suis en train d'écrire un EA et j'ai rencontré un problème. Selon TS, le conseiller expert doit effectuer des calculs toutes les minutes pendant un nombre donné de minutes. Après cela, toutes les données doivent être remises à zéro et les calculs doivent recommencer depuis le début.

Et ainsi de suite, cycle par cycle. Le cycle de temps est de 1 à 60 minutes. Veuillez m'indiquer comment décrire cela correctement dans le code. Comment puis-je rendre le code suivant cyclique et avec la possibilité de régler la durée du cycle de 1 à 60 minutes ?

Jusqu'à présent, ma boucle de 5 minutes ressemble à ceci :

if ((TimeMinute(TimeCurrent()))==time1)

Price20=koef_10;

if ((TimeMinute(TimeCurrent()))==time2)

Price20=koef_10;

if ((TimeMinute(TimeCurrent()))==time3)

Price20=koef_10;

if ((TimeMinute(TimeCurrent()))==time4)

Price20=koef_10;

if ((TimeMinute(TimeCurrent()))==time5)

Price20=koef_10;


J'apprécierais votre aide.