Comment coder ? - page 231

 

Excellent, merci !

 

Mec, tableaux et fonctions, pas ma tasse de thé.

 

Aide pour EA

Je veux faire ce qui suit :

Utiliser des trames M15 et ouvrir pendant cet intervalle deux ordres maximum en comparant le prix actuel avec la clôture M15 précédente(close[1]). Cependant, je ne sais pas comment écrire le code pour cela puisque je veux que cette procédure ait lieu chaque M15 frame suivante. Comment garder les bonnes variables pour compter les 2 ordres au maximum chaque M15 puisque la fonction de départ s'exécute toujours elle-même ?

Merci

 

Besoin d'aide avec un script d'ouverture d'ordres en attente.

Je sais qu'il y a beaucoup de scripts ici qui ouvrent et ferment les ordres mais je n'en trouve pas un qui ouvre les ordres en attente.

Ce dont j'ai besoin, c'est de 2 scripts, 1 Sellstop et 1 Buystop.

Je voudrais que le Buystop ouvre un ordre Buystop 15 pips au-dessus du Pivot quotidien et que le SellStop ouvre 15 pips en dessous du pivot quotidien.

J'ai joué avec et j'ai obtenu le code ci-dessous pour un SellStop, mais je ne suis pas un codeur et cela ne fonctionne pas. Je suppose que j'ai laissé échapper quelque chose.

Quelqu'un peut-il m'aider, s'il vous plaît ?

PS. Pas grave, j'ai trouvé. J'ai dû changer mon prix d'enchère pour le PVTGreen. J'avais une erreur de 130...

Cela fonctionne maintenant...

Ok, un autre problème, quelqu'un peut-il me dire comment changer l'heure d'expiration de 24 heures plus tard à 22:00 le même jour.

//+------------------------------------------------------------------+

//| script "send pending order with expiration data" |

//+------------------------------------------------------------------+

int start()

{

int ticket,expiration;

double point;

double PVTYellow = iCustom(NULL, 0, "pivot_alllevels", 0, 0, 0);

double PVTBlue = iCustom(NULL, 0, "pivot_alllevels", 0, 1, 0);

double PVTGreen = iCustom(NULL, 0, "pivot_alllevels", 0, 2, 0);

double PVTRed = iCustom(NULL, 0, "pivot_alllevels", 0, 3, 0);

double PVTMagenta = iCustom(NULL, 0, "pivot_alllevels", 0, 4, 0);

//----

point=MarketInfo(Symbol(),MODE_POINT);

expiration=TimeCurrent()+PERIOD_D1*60;

//----

while(true)

{

ticket = OrderSend(Symbol(),OP_SELLSTOP, 0.10, PVTGreen-15*Point, 3, PVTGreen+20*Point, PVTGreen-20*Point, 0,0,expiration,Red);

if(ticket<=0) Print("Error = ",GetLastError());

else { Print("ticket = ",ticket); break; }

//---- 10 seconds wait

Sleep(10000);

}

//----

return(0);

}

//+------------------------------------------------------------------+
 

Pour que l'expiration soit à 22:00, vous pourriez faire ceci...

int iHour = TimeHour(TimeCurrent());

int iMinute = TimeMinute(TimeCurrent());

int iDiff = 22%iHour;

datetime dtExpiryDate = (TimeCurrent()+(iDiff*60*60))-(iMinute*60);

Print(TimeToStr(dtExpiryDate));

Il n'y a pas de vérification des erreurs, donc si vous pensez en avoir besoin, assurez-vous de l'ajouter.

Lux

 

Grab Market Watch Symboles

Bonjour à tous,

Je me demandais s'il existe un moyen de récupérer tous les symboles disponibles dans la fenêtre de surveillance du marché pour les surveiller au lieu d'alimenter manuellement l'EA ?

En d'autres termes, je veux que mon EA passe par tous les symboles qui sont disponibles dans la fenêtre de surveillance du marché et les surveille pour un certain critère.

Toute aide est la bienvenue.

 

Aidez-moi - Solde du compte dimanche

Bonjour,

J'essaie depuis hier de bricoler un cache de ma semaine depuis le solde du compte dimanche (ouverture du marché) révèle.

J'ai besoin d'apporter pour exécuter un EA Compte Solde du dimanche à l'ouverture du succès du marché à l'Equity Manager correctement.

double usedacc = 0 ;

...

if (usedacc == 0 | | DayOfWeek () == 0) usedacc = Account Balance () ;

...

Cela ne fonctionne pas

Peut-être que quelqu'un peut m'aider du mieux que je peux.

Désolé pour le mauvais anglais

 

veuillez supprimer ce message - thx

 

comment obtenir les données d'un indicateur

Bonjour à tous,

J'ai besoin pour un EA des valeurs FIBO100 et FIBO0 de l'indicateur. Comment puis-je les obtenir ?

Merci

derumuro

Dossiers :
 

Comment l'obtenez-vous ?

Mon pote, j'ai rencontré un problème similaire.

Scott

La communication "inter script" (ou "inter indicateur") dans MQL passe exclusivement par des buffers. Ce code :

trendset = iCustom(NULL,0, "VGA HISTOGRAM~",0,0) ;

Signifie que vous voulez récupérer la valeur de la barre actuelle du premier tampon (public) de l'indicateur "VGA HISTOGRAM~". Vous ne pouvez pas récupérer les valeurs des variables déclarées dans d'autres indicateurs (et cela n'a pas d'importance si elles sont déclarées comme externes). Vous pouvez essayer avec des variables globales, mais les variables globales sont plus difficiles à utiliser et offrent plus de chance de faire une erreur que de travailler correctement avec elles ou vous pouvez écrire une DLL (metatrader utilise seulement une instance de DLL par graphique, indépendamment des paramètres, donc vous pouvez faire une sorte de "sémaphore" qui conserverait et renverrait des valeurs en fonction d'ID de toute sorte - cela assurerait la communication entre les codes mql et éviterait une mauvaise lecture des variables (les variables globales par exemple peuvent être facilement confondues et vous pouvez lire des variables d'un graphique complètement différent sans même le savoir))

Salutations

Mladen

En fait, j'ai trouvé une solution à ce problème que je vais partager avec vous.

Dans votre indicateur, créez une nouvelle fonction pour que les choses ne deviennent pas confuses.

void PASSINFO() {

int trendcondtemp ; //Changez ceci par le nom de votre choix, peu importe, laissez-le si vous êtes paresseux.

if (Close[1] > Open[2] && Volume[1] < Volume[2]) trendcondtemp=1 ; //bullish - ceci définit juste une valeur à la variable utilisez votre code

if (Close[1] < Open[2] && Volume[1] < Volume[2]) trendcondtemp=2 ; //bearish - même chose, odeur différente

if (Volume[1] > Volume[2])trendcondtemp=3 ; //il ne se passe rien - meh

if (Symbol()=="USDCHF") GlobalVariableSet("TRENDSETUSDCHF ",trendcondtemp) ;

if (Symbol()=="GBPUSD") GlobalVariableSet("TRENDSETGBPUSD",trendcondtemp) ;

si (Symbol()=="EURUSD") GlobalVariableSet("TRENDSETEURUSD",trendcondtemp) ;

if (Symbol()=="USDJPY") GlobalVariableSet("TRENDSETUSDJPY",trendcondtemp) ;

if (Symbol()=="USDCAD") GlobalVariableSet("TRENDSETUSDCAD",trendcondtemp) ;

if (Symbol()=="NZDUSD") GlobalVariableSet("TRENDSETNZDUSD",trendcondtemp) ;

if (Symbol()=="AUDUSD") GlobalVariableSet("TRENDSETAUDUSD",trendcondtemp) ;

if (Symbol()=="AUDNZD") GlobalVariableSet("TRENDSETAUDNZD",trendcondtemp) ;

if (Symbol()=="AUDCAD") GlobalVariableSet("TRENDSETAUDCAD",trendcondtemp) ;

si (Symbol()=="EURUSD") GlobalVariableSet("TRENDSETEURUSD",trendcondtemp) ;

if (Symbol()=="AUDCHF") GlobalVariableSet("TRENDSETAUDCHF",trendcondtemp) ;

if (Symbol()=="AUDJPY") GlobalVariableSet("TRENDSETAUDJPY",trendcondtemp) ;

if (Symbol()=="CHFJPY") GlobalVariableSet("TRENDSETCHFJPY",trendcondtemp) ;

if (Symbol()=="EURGBP") GlobalVariableSet("TRENDSETEURGBP",trendcondtemp) ;

if (Symbol()=="EURAUD") GlobalVariableSet("TRENDSETEURAUD",trendcondtemp) ;

if (Symbol()=="EURCHF") GlobalVariableSet("TRENDSETEURCHF",trendcondtemp) ;

if (Symbol()=="EURJPY") GlobalVariableSet("TRENDSETEURJPY",trendcondtemp) ;

si (Symbol()=="EURNZD") GlobalVariableSet("TRENDSETEURNZD",trendcondtemp) ;

if (Symbol()=="GBPCHF") GlobalVariableSet("TRENDSETGBPCHF",trendcondtemp) ;

if (Symbol()=="GBPAUD") GlobalVariableSet("TRENDSETGBPAUD",trendcondtemp) ;

if (Symbol()=="GBPCAD") GlobalVariableSet("TRENDSETGBPCAD",trendcondtemp) ;

if (Symbol()=="GBPJPY") GlobalVariableSet("TRENDSETGBPJPY",trendcondtemp) ;

if (Symbol()=="NZDJPY") GlobalVariableSet("TRENDSETNZDJPY",trendcondtemp) ;

//ajoutez le pétrole/l'or/les monnaies/tout ce que vous négociez après cela, j'ai couvert tout ce que mon courtier fait.

}

Ok, maintenant parce que cela dépend de la devise, il n'y a aucune chance que cela se croise avec une autre devise et que les valeurs soient faussées. Vous devez maintenant mettre ceci dans votre fonction de démarrage / quoi que ce soit avant d'appeler la valeur.

int trendet ;

if (Symbol()=="USDCHF") trendset= GlobalVariableGet("TRENDSETUSDCHF") ;

if (Symbol()=="GBPUSD") trendset= GlobalVariableGet("TRENDSETGBPUSD") ;

si (Symbol()=="EURUSD") trendset= GlobalVariableGet("TRENDSETEURUSD") ;

if (Symbol()=="USDJPY") trendset= GlobalVariableGet("TRENDSETUSDJPY") ;

if (Symbol()=="USDCAD") trendset= GlobalVariableGet("TRENDSETUSDCAD") ;

if (Symbol()=="NZDUSD") trendset= GlobalVariableGet("TRENDSETNZDUSD") ;

if (Symbol()=="AUDUSD") trendset= GlobalVariableGet("TRENDSETAUDUSD") ;

if (Symbol()=="AUDNZD") trendset= GlobalVariableGet("TRENDSETAUDNZD") ;

if (Symbol()=="AUDCAD") trendset= GlobalVariableGet("TRENDSETAUDCAD") ;

if (Symbol()=="EURUSD") trendset= GlobalVariableGet("TRENDSETEURUSD") ;

if (Symbol()=="AUDCHF") trendset= GlobalVariableGet("TRENDSETAUDCHF") ;

if (Symbol()=="AUDJPY") trendset= GlobalVariableGet("TRENDSETAUDJPY") ;

if (Symbol()=="CHFJPY") trendset= GlobalVariableGet("TRENDSETCHFJPY") ;

if (Symbol()=="EURGBP") trendset= GlobalVariableGet("TRENDSETEURGBP") ;

if (Symbol()=="EURAUD") trendset= GlobalVariableGet("TRENDSETEURAUD") ;

if (Symbol()=="EURCHF") trendset= GlobalVariableGet("TRENDSETEURCHF") ;

if (Symbol()=="EURJPY") trendset= GlobalVariableGet("TRENDSETEURJPY") ;

if (Symbol()=="EURNZD") trendset= GlobalVariableGet("TRENDSETEURNZD") ;

if (Symbol()=="GBPCHF") trendset= GlobalVariableGet("TRENDSETGBPCHF") ;

if (Symbol()=="GBPAUD") trendset= GlobalVariableGet("TRENDSETGBPAUD") ;

if (Symbol()=="GBPCAD") trendset= GlobalVariableGet("TRENDSETGBPCAD") ;

if (Symbol()=="GBPJPY") trendset= GlobalVariableGet("TRENDSETGBPJPY") ;

if (Symbol()=="NZDJPY") trendset= GlobalVariableGet("TRENDSETNZDJPY") ;

Veuillez noter !!! (vous l'avez probablement déjà réalisé) mais vous devez avoir l'indicateur en cours d'exécution sur votre devise sur laquelle votre ea fonctionne pour que les valeurs changent sinon vous obtiendrez juste l'ancienne variable qui est stockée depuis des semaines dans mt4.