Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 550

 
Alexandr24:
J'ai besoin d'aide pour trouver la valeur maximale de l'indicateur N pour le jour précédent ; je reçois les données par iCustom, mais c'est un blocage. Je pense que cela se fait par ArrayMaximum, mais comment trouver la valeur
.

Je n'arrive pas à trouver comment y intégrer iCustom, mais je ne vois pas d'autres options.



1. Trouvez le numéro de la barre au début du jour précédent, trouvez le numéro de la barre à la fin pour.

2. Je ferais une boucle d'un chiffre à l'autre et je calculerais le maximum.

Vous pouvez, bien sûr, utiliser ArrayMaximum, mais après la première étape.

 
En ce qui concerne les proxys, si quelqu'un a besoin d'IPs qui fonctionnent vraiment, je peux conseiller http://buy.fineproxy.org/ moi-même depuis longtemps j'y achète des adresses, tout fonctionne parfaitement et il y a une possibilité de période de test !
 

Désolé pour l'inondation, je vais vous le redemander.

Pouvez-vous suggérer un indicateur d'intérêt ouvert gratuit ? Merci d'avance !

 
GSB:

On ne peut pas écrire des codes de manière aussi inattentive :)

Allez à Comment("USDCADAsk = ",USDCADAsk) ; suivi de USDCADAsk = DoubleToString(MarketInfo("USDCAD",MODE_ASK),usdcaddigits) ; USDCADAsk est déclaré comme double et vous y mettez une chaîne,

et ensuite Digits.... à nouveau ^) et Point

Vous devez rechercher ces erreurs vous-même, personne ne les réparera pour vous comme pour le commerce ! Le compilateur génère 28 erreurs et vous mettez la démo dans le commerce. Vous pourriez souhaiter utiliser de l'argent réel, mais le marché vous aurait corrigé !

A qui appartient l'offre et la demande ?


Correct


Il s'avère que vous n'avez pas besoin d'utiliser des variables supplémentaires et que vous n'avez pas besoin de normalisation, ça devrait être comme ça.
OrderSend("USDCAD",OP_BUY,Lot,MarketInfo("USDCAD",MODE_ASK),slip,0,0,"USDCAD",magic[0],0,Red);
 
Example2:

Il s'avère que vous n'avez pas besoin d'utiliser des variables supplémentaires et que vous n'avez pas besoin de normalisation, ça devrait être comme ça.

OrderSend("USDCAD",OP_BUY,Lot,MarketInfo("USDCAD",MODE_ASK),slip,0,0,"USDCAD",magic[0],0,Red);

Premièrement, vous avez vous-même essayé de les afficher à l'écran pour les vérifier, ce qui a conduit à des erreurs, et deuxièmement, la normalisation est souhaitable et l'ordre fixant le prix et le TP, SL. Si le prix n'est pas normalisé, cela peut provoquer des erreurs. C'est la règle et nous ne devons pas l'enfreindre. Voir des exemples et analyser pourquoi c'est le cas et non l'inverse, par exemple https://book.mql4.com/ru/samples/shared.
 
Bonjour, pourriez-vous me dire comment ajouter, disons, 23% au OrderOpenPrice ? Si vous savez que OrderOpenPrice est déjà à 77%. Je divise par 77, je multiplie par 23 et j'obtiens 7 points au lieu de 31. Voici une ligne de code if (MarketInfo-OrderOpenPrice()>OrderOpenPrice()/50*Percent*Point). Il s'agit d'un transfert vers le seuil de rentabilité, mais pas en points, mais en points de pourcentage. Merci d'avance !
 
vidnab:
Bonjour, si vous pouvez me dire comment ajouter, par exemple, 23% au OrderOpenPrice ? Si vous savez que OrderOpenPrice est déjà à 77%. Je divise par 77, je multiplie par 23 et j'obtiens 7 points au lieu de 31. Voici une ligne de code if (MarketInfo-OrderOpenPrice()>OrderOpenPrice()/50*Percent*Point). Il s'agit d'un transfert vers le seuil de rentabilité, mais pas en points, mais en points de pourcentage. Merci d'avance !


J'ai acheté cent mille euros à 50 roubles, puis j'ajoute 23% au prix d'achat.

Dans votre cas, vous devez exposer le code dans son intégralité. Mais si vous voulez juste l'amener à 100%, divisez par 0,77.

 

Je vous remercie de votre réponse. Voici tout le code

//+----------------------------------------------------------------------------+
//| e-MovingInWL2.mq4 |
//| |
//| Kim Igor V. alias KimIV |
//| http://www.kimiv.ru |
//| |
//| 27.10.2008 Le conseiller déplace le stop au seuil de rentabilité.
//+----------------------------------------------------------------------------+
#property copyright "Kim Igor V. aka KimIV"
#lien de propriété "http://www.kimiv.ru"

//------- Paramètres externes de l'Expert Advisor -----------------------------------------+
extern string _P_Expert = "---------- EA parameters" ;
extern bool AllSymbols = True ; // Regarder les positions de tous les symboles
extern int Magic = -1 ; // Identificateur de position
extern int LevelProfit = 25 ; // Niveau de profit en points
extern int LevelWLoss = 1 ; // Niveau de seuil de rentabilité en points
extern bool ShowComment = True ; // Afficher le commentaire

//------- Paramètres d'exécution des ordres de bourse ------------------------------+
extern string _P_Performance = "---------- Paramètres d'exécution" ;
extern bool UseSound = True ; // Utiliser un signal sonore.
extern string SoundSuccess = "expert.wav" ; // Son du succès
extern string SoundError = "timeout.wav" ; // Son d'erreur.
extern inttern NumberOfTry = 2 ; // Nombre de tentatives

//------- Variables globales de l'Expert Advisor -------------------------------------+
bool gbDisabled = False ; // Indicateur de verrouillage de l'EA
bool gbNoInit = False ; // Drapeau d'échec d'initialisation
couleur clModifyBuy = Aqua ; // couleur clModifyBuy icône
couleur clModifySell = Tomato ; // Couleur de l'icône de modification de la vente

//------- Connexion des modules externes -----------------------------------------+
#include <stdlib.mqh>


//+----------------------------------------------------------------------------+
//| |
//| FONCTIONS PRÉDÉFINIES |
//| |
//+----------------------------------------------------------------------------+
//| fonction d'initialisation de l'expert |
//+----------------------------------------------------------------------------+
void init() {
gbNoInit=False ;
si (!IsTradeAllowed()) {
Message("Pour que l'EA fonctionne correctement, il est nécessaire\n "+
"Autoriser l'EA à commercer") ;
gbNoInit=True ; retour ;
}
si (!IsLibrariesAllowed()) {
Message("Pour que l'EA fonctionne correctement, vous devez\n "+
"Autoriser l'importation depuis des EA externes") ;
gbNoInit=True ; retour ;
}
si (!IsTesting()) {
if (IsExpertEnabled()) Message("L'EA sera lancé au prochain tick") ;
else Message("Le bouton \"Autoriser les EA à démarrer{") est relâché ;
}
start() ;
}

//+----------------------------------------------------------------------------+
//| fonction de désinitialisation des experts |
//+----------------------------------------------------------------------------+
void deinit() {
si (!IsTesting()) Commentaire (") ;
}

//+----------------------------------------------------------------------------+
//| fonction de démarrage de l'expert |
//+----------------------------------------------------------------------------+
void start() {
if (gbDisabled) {
Message("Erreur critique ! EA STOPPED !") ; return ;
}
if (gbNoInit) {
Message("L'initialisation de l'EA a échoué !") ; return ;
}
if (ShowComment) {
Commentaire(IIFs(AllSymbols, "AllSymbols ", ")
, "Magic="+IIFs(Magic<0, "Any", DoubleToStr(Magic, 0))+" "
, "LevelProfit="+DoubleToStr(LevelProfit, 0)+"n "
, "LevelWLoss="+DoubleToStr(LevelWLoss, 0)+"n "
) ;
} else Comment(") ;

string sy=IIFs(AllSymbols, "", NULL) ;
MovingInWL(sy, -1, Magic) ;
}


//+----------------------------------------------------------------------------+
//| |
//| FONCTIONS UTILISATEUR |
//| |
//+----------------------------------------------------------------------------+
//| Auteur : Kim Igor V. alias KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Version : 01.09.2005 |
//| Description : Renvoie le nom de l'opération commerciale.
//+----------------------------------------------------------------------------+
//| Paramètres : ||
//| op - identifiant de l'opération commerciale |
//+----------------------------------------------------------------------------+
string GetNameOP(int op) {
switch (op) {
cas OP_BUY : return("Buy") ;
cas OP_SELL : return("Sell") ;
cas OP_BUYLIMIT : return("BuyLimit") ;
cas OP_SELLLIMIT : return("SellLimit") ;
cas OP_BUYSTOP : return("BuyStop") ;
cas OP_SELLSTOP : return("SellStop") ;
par défaut : return("Unknown Operation") ;
}
}

//+----------------------------------------------------------------------------+
//| Auteur : Kim Igor V. alias KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Version : 18.07.2008 |
//| Description : Il renvoie l'une des deux valeurs en fonction de la condition.
//+----------------------------------------------------------------------------+
color IIFc(bool condition, color ifTrue, color ifFalse) {
si (condition) return(ifTrue) ; sinon return(ifFalse) ;
}

//+----------------------------------------------------------------------------+
//| Auteur : Kim Igor V. alias KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Version : 01.02.2008 |
//| Description : Il renvoie l'une des deux valeurs en fonction de la condition.
//+----------------------------------------------------------------------------+
string IIFs(bool condition, string ifTrue, string ifFalse) {
si (condition) return(ifTrue) ; sinon return(ifFalse) ;
}

//+----------------------------------------------------------------------------+
//| Auteur : Kim Igor V. alias KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Version : 01.09.2005 |
//| Description : Affichage d'un message dans le commentaire et dans le journal | |.
//+----------------------------------------------------------------------------+
//| Paramètres : |
//| m - texte du message |
//+----------------------------------------------------------------------------+
void Message(string m) {
Commentaire(s) ;
si (StringLen(m)>0) Print(m) ;
}

//+----------------------------------------------------------------------------+
//| Auteur : Kim Igor V. alias KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Version : 28.11.2006 |
//| Description : Modification d'une commande présélectionnée.
//+----------------------------------------------------------------------------+
//| Paramètres : |
//| pp - niveau de prix de l'ordre |
//| sl - niveau de prix de l'arrêt.
//| tp - niveau de prix de la prise en charge |
//| ex - date d'expiration |
//+----------------------------------------------------------------------------+
void ModifyOrder(double pp=-1, double sl=0, double tp=0, datetime ex=0) {
bool fm ;
couleur cl=IIFc(OrderType()==OP_BUY
|| OrderType()==OP_BUYLIMIT
|| OrderType()==OP_BUYSTOP, clModifyBuy, clModifySell) ;
double op, pa, pb, os, ot ;
int dg=MarketInfo(OrderSymbol(), MODE_DIGITS), er, it ;

si (pp<=0) pp=OrderOpenPrice() ;
si (sl<0 ) sl=OrderStopLoss() ;
si (tp<0 ) tp=OrderTakeProfit() ;

pp=NormaliserDouble(pp, dg) ;
sl=NormalizeDouble(sl, dg) ;
tp=NormalizeDouble(tp, dg) ;
op=NormalizeDouble(OrderOpenPrice(), dg) ;
os=NormalizeDouble(OrderStopLoss(), dg) ;
ot=NormalizeDouble(OrderTakeProfit(), dg) ;

if (pp!=op || sl!=os || tp!=ot) {
for (it=1 ; it<=NumberOfTry ; it++) {
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break ;
while (!IsTradeAllowed()) Dormir (5000) ;
RefreshRates() ;
fm=OrderModify(OrderTicket(), pp, sl, tp, ex, cl) ;
if (fm) {
if (UseSound) PlaySound(SoundSuccess) ; break ;
} else {
er=GetLastError() ;
if (UseSound) PlaySound(SoundError) ;
pa=MarketInfo(OrderSymbol(), MODE_ASK) ;
pb=MarketInfo(OrderSymbol(), MODE_BID) ;
Print("Error(",er,") modifiant l'ordre :",ErrorDescription(er),", try ",it) ;
Print("Ask=",pa," Bid=",pb," sy=",OrderSymbol(),
" op="+GetNameOP(OrderType())," pp=",pp," sl=",sl," tp=",tp) ;
Dormir (1000*10) ;
}
}
}
}

//+----------------------------------------------------------------------------+
//| Auteur : Kim Igor V. alias KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Version : 23.04.2009 |
//| Description : Déplacement du niveau d'arrêt vers le niveau sans perte.
//+----------------------------------------------------------------------------+
//| Paramètres : |
//| sy - nom de l'instrument ("" - tout symbole, |
//| NULL - symbole actuel) |
//| op - opération ( -1 - toute position) |
//| mn - MagicNumber ( -1 - n'importe quel magik) |
//+----------------------------------------------------------------------------+
void MovingInWL(string sy="", int op=-1, int mn=-1) {
double po, pp ;
int i, k=OrdersTotal() ;

si (sy=="0") sy=Symbole() ;
for (i=0 ; i<k ; i++) {
si (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
si ((OrderSymbol()==sy || sy==") && (op<0 || OrderType()==op)) {
si (mn<0 || OrderMagicNumber()==mn) {
po=MarketInfo(OrderSymbol(), MODE_POINT) ;
si (OrderType()==OP_BUY) {
si (OrderStopLoss()-OrderOpenPrice()<LevelWLoss*po) {
pp=MarketInfo(OrderSymbol(), MODE_BID) ;
si (pp-OrderOpenPrice()>LevelProfit*po) {
ModifyOrder(-1, OrderOpenPrice()+LevelWLoss*po, -1) ;
}
}
}
si (OrderType()==OP_SELL) {
si (OrderStopLoss()==0 || OrderOpenPrice()-OrderStopLoss()<LevelWLoss*po) {
pp=MarketInfo(OrderSymbol(), MODE_ASK) ;
si (OrderOpenPrice()-pp>LevelProfit*po) {
ModifyOrder(-1, OrderOpenPrice()-LevelWLoss*po, -1) ;
}
}
}
}
}
}
}
}
//+----------------------------------------------------------------------------+

 
C'est le code d'Igor Kim, mais je n'arrive pas à le contacter. Si vous pouvez aider !
 
GSB:

Premièrement, vous avez vous-même essayé de les afficher à l'écran pour les vérifier, ce qui a conduit à des erreurs, et deuxièmement, la normalisation est souhaitable et l'ordre fixant le prix et le TP, SL. Si le prix n'est pas normalisé, cela peut entraîner des erreurs. C'est la règle et nous ne devons pas l'enfreindre. Voir des exemples et analyser pourquoi c'est le cas et non l'inverse, par exemple https://book.mql4.com/ru/samples/shared.

Je ne l'ai pas écrit pour faire des reproches, juste pour que les autres voient. Merci pour votre temps.
Raison: