Demandez ! - page 142

 

Un peu d'aide s'il vous plaît avec un EA

J'essaie de fermer un ordre de vente et d'ouvrir un nouvel ordre d'achat. L'achat s'ouvre mais la vente donne l'erreur 4051.

J'utilise

ticket = OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Gold);// fermer la position

et

ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue) ;

 

Comment changer le numéro magique ?

Bonjour à tous,

J'utilise un EA de différence (copie d'un EA d'origine) pour trader des paires de différence dans une fenêtre de graphique de différence et je voudrais changer le nombre magique mais je ne sais pas comment fonctionne le nombre magique ? Pourriez-vous me dire :

1. Comment fonctionne le nombre magique ?

2. Comment changer le nombre magique ?

3. Puis-je prendre n'importe quel nombre pour changer le nombre magique ou dois-je utiliser un certain nombre dans certaines règles ?

4. Pouvez-vous me donner un exemple pour changer le nombre magique de mon EA : 16763 ?

Merci beaucoup pour votre aide !

 

Le numéro magique n'est rien d'autre qu'un identifiant unique. Il distingue chaque instance de la même EA tout en la distinguant de toute autre EA que vous pourriez avoir en cours d'exécution.

Si le numéro magique est une variable externe, il suffit de le remplacer par le nombre que vous voulez. Assurez-vous simplement qu'il ne s'agit pas du même numéro qu'un autre EA en cours d'exécution.

S'il ne s'agit pas d'une variable externe, cherchez la variable dans le code et changez-la par le nombre que vous voulez.

J'espère que cela vous aidera.

Lux

 
luxinterior:
Le numéro magique n'est rien d'autre qu'un identifiant unique. Il distingue chaque instance de la même EA tout en la distinguant de toute autre EA que vous pourriez avoir en cours d'exécution.

Si le nombre magique est une variable externe, il suffit de le changer par le nombre que vous voulez. Assurez-vous simplement qu'il ne s'agit pas du même nombre qu'un autre EA en cours d'exécution.

S'il ne s'agit pas d'une variable externe, cherchez la variable dans le code et changez-la par le nombre que vous voulez.

J'espère que cela vous aidera.

Lux

Bonjour Lux,

Vous voulez dire que je peux changer le numéro magique de mon EA : 16763 en 16764 ; 16765 ect... ?

Merci pour votre réponse rapide.

Luu

 
luu:
Bonjour Lux,

Vous voulez dire que je peux changer le numéro magique de mon EA : 16763 en 16764 ; 16765 ect... ?

Merci pour votre réponse rapide.

Luu

Exactement ! Tant que le numéro est unique, le numéro que vous choisissez n'a pas d'importance.

Vous n'avez pas vraiment besoin de le changer, sauf si vous avez une raison spécifique de le faire.

Lux

 
luxinterior:
Exactement ! Tant que le numéro est unique, le numéro que vous choisissez n'a pas d'importance.

Vous n'avez pas vraiment besoin de le changer, sauf si vous avez une raison spécifique de le faire.

Lux

Merci beaucoup pour votre aide Lux !

Luu

 

Problèmes d'ordre de fermeture d'EA

Mes amis, j'ai un EA avec un indicateur de support et de résistance. L'EA doit clôturer les ordres sur la cible de profit, mais il manque parfois.

 

Aide pour un script générique simple.

Bonjour

Quelqu'un peut-il m'aider avec un script simple ?

Voici ce dont j'ai besoin.

Un script très générique qui peut être utilisé sur n'importe quel symbole et qui placera 3-4 ordres pour SELL_STOP et BUY_STOP.

Disons que je veux placer un buy_stop 20 points au-dessus du prix actuel, un deuxième ordre 40 points au-dessus du prix actuel, un troisième 80 points et ainsi de suite.

Même chose pour Sell_Stop

J'ai essayé d'assembler le script en me basant sur quelques exemples mais comme je ne suis pas familier avec le langage C, j'ai quelques problèmes.

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""// improved.mq4

int start()

{

int ticket,i ;

int cnt=1 ;

int Dist_SL =10 ; // Présélectionner SL (pt)

int Dist_TP =100 ; // Préréglage TP (pt)

string Symb=Symbol() ; // Symbole

RefreshRates() ;

double bid =MarketInfo(Symb,MODE_BID) ;

double ask =MarketInfo(Symb,MODE_ASK) ;

double point =MarketInfo(Symb,MODE_POINT) ;

int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL) ;

if (Dist_TP < Min_Dist) // Si elle est inférieure à autorisée

{

Dist_TP=Min_Dist ; // Fixe la distance autorisée.

Alert(" Augmentation de la distance de TakeP = ",Dist_TP," pt") ;

}

//-------------------------------------------------------------------- 6 --

Alert("La requête a été envoyée au serveur. En attente de réponse..") ;

for(i=100;i<400;i=i+100)

{

double TP=(ask+i*Point) + Dist_TP*Point ; // Prix demandé du TP

ticket=OrderSend(Symb,OP_BUYSTOP,0.1,ask+i*Point,1,(ask+i*Point)-Dist_SL*Point,TP) ;

Sleep(500) ;

int Error=GetLastError() ; // Échec

switch(Error) // Erreurs surmontables

{

case 130:Alert("Le SL est erroné. Réessayer..") ;

RefreshRates() ; // Mise à jour des données

if (Dist_SL < Min_Dist) // S'il est inférieur à ce qui est autorisé

{

Dist_SL=Min_Dist ; // Fixe la distance autorisée

Alert(" Augmentation de la distance de SL = ",Dist_SL," pt") ;

}

i=i-50 ;

Alert (i) ;

Alert (Dist_SL) ;

cnt=cnt+1 ;

Alerte (cnt) ;

si (cnt==3)break ;

continue ; // A la prochaine itération

cas 135:Alert("Le prix a changé. Nouvelle tentative..") ;

RefreshRates() ; // Mise à jour des données

continue ; // A la prochaine itération

cas 136:Alert("Pas de prix. En attente d'un nouveau tick..") ;

while(RefreshRates()==false) // Jusqu'à un nouveau tick

Sleep(1) ; // Délai de cycle

continue ; // A la prochaine itération

case 146:Alert("Le sous-système de négociation est occupé. Réessayer...") ;

Sleep(500) ; // Solution simple

RefreshRates() ; // Mise à jour des données

continue ; // A la prochaine itération

}

switch(Error) // Erreurs critiques

{

cas 2 : Alert("Erreur courante.") ;

break ; // Sortie de 'switch'.

case 5 : Alert("Version obsolète du terminal client.") ;

break ; // Exit 'switch'.

cas 64 : Alert("Le compte est bloqué.") ;

break ; // Exit 'switch'.

cas 133:Alert("Trading interdit") ;

break ; // Quitter 'switch'.

par défaut : Alert("Erreur survenue ",Error);// Autres alternatives

}

//break ;

}

//-------------------------------------------------------------------------- 9 --

Alert ("Le script a terminé ses opérations ---------------------------") ;

return ; // Sortie de start()

}

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

Cela fonctionne en quelque sorte mais j'ai souvent des problèmes avec le stop loss.

 

Voici mon idée : si nous pouvons échanger le serpent avec le taux de sr gaussien dans l'indicateur ssrc, cela pourrait rapporter des dividendes.

l'indicateur ssrc cela pourrait rapporter des dividendes qu'en pensez-vous ? donc au lieu d'être

le ssrc ce serait le taux gaussien de corrélation des rangs des lanciers.

"osgsrspc" lol.(j'ai essayé de le coder mais ça m'est passé au dessus de la tête)

ssrc_bar.mq4

ssrc.mq4

os_gaussien_sr_rate.mq4

Dossiers :
 

Nouvelle question : 5e décimale et gestion de l'argent

Dans un autre forum que je fréquente et qui est destiné aux clients d'un EA particulier, un client se plaignait du fait que le développeur de l'EA n'avait pas encore résolu le problème de la 5e décimale et des prix fractionnaires pour leur EA.

Le développeur a affirmé il y a plusieurs mois que ce problème nécessitait un script spécial pour être résolu. Aujourd'hui, 4 mois plus tard, j'ai dit en substance qu'il était ridicule que ce problème n'ait pas encore été résolu - et j'ai affirmé qu'il suffisait de quelques lignes de code pour redéfinir "Point" de manière similaire à la méthode décrite ici.

Voici donc la question. Le développeur insiste toujours sur le fait que ce problème est super compliqué et nécessite une programmation spéciale du script pour le résoudre. Voici l'explication du développeur :

Salut John. Vous avez raison. De plus en plus de courtiers passent aux pips fractionnels. Cependant, le problème des pips fractionnés n'est pas un bug de [nom supprimé]. Il s'agit d'un problème lié à la façon dont la plateforme MT4 définit la différence dans le nombre de décimales. Nous sommes en train de reprogrammer l'EA et les indicateurs pour qu'ils reconnaissent cette différence. Celle-ci est censée être contenue dans la définition de la variable "Point" de la plateforme MT4 et les EA utilisent cette définition pour déterminer les décimales. Cependant, de nombreuses plateformes MT4 ne transmettent pas plus de 4 décimales à l'EA, ce qui nécessite l'ajout d'un script spécial. Notre défi est que nous utilisons la variable "Point" dans l'ensemble de l'EA et de tous les indicateurs. J'espère avoir un programme de fractionnement de pip fonctionnel d'ici la fin de la semaine prochaine.

Ma question est donc la suivante : L'un d'entre vous, programmeurs expérimentés, a-t-il rencontré cette exigence de script compliqué ou des problèmes avec la valeur de "Point" de la plateforme MT4 ?

Même si vous supposez que "Point" est limité à 4 décimales, cela signifierait que vous n'avez à vous soucier que des paires avec Point = 0,001 ----, ce qui ne prend qu'une ligne ou deux de code.

Ou bien, vous pourriez utiliser "Digits" au lieu de "Point" - ce qui n'utilise toujours que quelques lignes de code.

Ou vous pourriez simplement utiliser une variable booléenne comme "UseFractionalPips = true ;" pour redéfinir "Point".

J'ai vraiment l'impression que le développeur rend le problème plus compliqué qu'il ne l'est (ou peut-être d'autres motifs). Je n'ai simplement jamais lu ou entendu parler de ce problème avec le "Point" limité à seulement 4 décimales - et même si c'était le cas, vous pourriez utiliser "Digits" ou d'autres méthodes pour redéfinir le point sans script spécial.

Je ne programme dans MT4 que depuis 18 mois, j'ai donc pensé que je m'en remettrais à des programmeurs plus expérimentés pour savoir dans quelle mesure la "solution" est compliquée pour gérer les prix par pip fractionnels dans MT4.

Qu'en pensez-vous ?

Merci d'avance pour votre aide,

-B