Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1230

 
Igor Makanu:

il y a beaucoup d'erreurs dans votre exemple

il devrait y en avoir :

ici les prix ne sont pas normalisés OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-SL*Point,Bid+TP*Point,"My order",MagicNumber,0,clrGreen) ;

Ici, je ne comprends pas la logique qui fait que OnTick() doit être quitté si la condition est fausse.

peut-être, nous devrions continuer la boucleet juste compter le nombre de commandes

Votre exemple est très simple dans sa logique et il serait difficile de le modifier pour d'autres tâches... peut-être qu'il voudra faire du repérage.

Il est encore tôt)))) Il y aura beaucoup de choses en même temps. Il n'y a pas beaucoup de sens à cela. ))))) Et donc oui, bien sûr après les calculs pour tout ce que la normalisation de l'envoi est nécessaire)))).

Là la condition par ordre, s'il n'y a pas d'ordre sur l'instrument courant avec notre magik, on met l'ordre. Et ensuite, la condition n'atteindra pas l'ordre jusqu'à sa fermeture.

PS n'aime pas la condition Si non.

 

Salutations, pourriez-vous me dire comment lire l'expression

string sym=(symbol==NULL ? Symbol() : symbol);
 
Galim_V:

Salutations, pourriez-vous me dire comment lire correctement cette expression ?

Sisymbol est vide, renvoie la valeur du symbole courant à la variable sym, et s'il n'est pas vide, renvoie la valeur à la variable sym

 
Vladimir Pastushak:

Si la variable symbol est vide, alors la valeur du symbole graphique actuel est retournée à la variable sym, et si elle n'est pas vide, alors sa valeur est passée à la variable sym.

Merci !

 
Galim_V:

Salutations, pourriez-vous me dire comment lire correctement cette expression ?

Il se lit comme suit : Assignez Symbol() à la variable si symbol est NULL, sinon assignez symbol à la variable.

L'équivalent de cette entrée

string sym;
if(symbol == NULL)
sym = Symbol();
else
sym = symbol;
La seule différence est le nombre de lignes.
 
Alexey Viktorov:

Se lit comme suit : Assigner une variable à Symbol() si symbol est NULL sinon assigner une valeur à symbol.

Équivalent à cette entrée

La seule différence est le nombre de lignes.

Merci !

 
Valeriy Yastremskiy:

Que faire alors, par exemple, vous avez une fenêtre ouverte pas Eurobucks, mais Eurofunt, vous comparez le symbole de l'ordre sélectionné avec Eurobucks, si vrai, alors il ya un ordre sur Eurobucks, et si notre magik, puis le retour de la fonction Onstart, et si non, puis définir un ordre sur Eurobucks, mais Kloz, High, Asc, Bid vous aurez pour Eurofunt. sera une erreur lors de l'ouverture des ordres parce que l'offre et la demande pour ces instuents différents. Et Symbol() retournera le symbole de la fenêtre actuelle et aucune erreur ne se produira.

Vous pouvez utiliser un modèle à partir de l'éditeur de méta, il y a un bouton Nouveau en haut à gauche. La fonction OnStart est toujours utilisée, mais ce n'est pas correct, et OnStart est pour les scripts. Le bon modèle.

Le code correct. Le commentaire de votre commande est manquant, et le magicien n'est pas pris en compte dans votre code. Dans les avertissements de la ligne d'ouverture, notez Conversion implicite de type d'un nombre en chaîne de caractères !!!

Oui, il fonctionne comme il se doit. Merci ! !!

Je ne savais pas que c'était si important de créer par modèle. OnStart en effet. Je me suis trompé dans la structure de base. Eh bien, je le sais maintenant.

 
Alexey Belyakov:

Oui, il fonctionne comme il se doit. Merci ! (Rires)

Je ne savais pas que c'était si important de créer à partir d'un modèle. OnStart, en effet. Je me suis trompé dans la structure de base. Eh bien, je le sais maintenant.

Eh bien, et tout ce que vous mettez dans les fonctions de travail avec les commandes devrait être normalisé. Si le point décimal est suivi de 6 chiffres, la commande ne sera pas passée et générera une erreur.

Cherchez le sujet avec "Seules les fonctions utiles de KimIV" ou cherchez-le dans KodoBase.

Igor Makanu a écrit ci-dessus plus d'erreurs. Et les fonctions de Kim sont vraiment utiles pour commencer. Les commentaires sont clairs.

 

Aidez-moi, s'il vous plaît. Pourquoi le test donne-t-il une erreur - "" 2020.08.13 13:09:11.393 2018.08.01 00:00:123456 GBPUSD,M30 : array out of range in '123456.mq4' (59,13)"" ? ???


#property link "2020, Grey."

#lien de propriété "uirnP0215@mail.ru"

#propriété version "1.00"

#propriété stricte


entrée double lots = 0,01 ;

entrée int Magie = 1546 ;



double ibufUP[] ;

double ibufDN[] ;


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

//| Fonction d'initialisation de l'expert |

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

int OnInit()

{


return(INIT_SUCCEEDED) ;

}

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

//| Fonction de désinitialisation experte |

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

void OnDeinit(const int reason)

{

//---


}

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

//| fonction tick expert |

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

void OnTick()

{

CountFractals() ;

si(ibufUP[3]>0)

{

if(!OrderSend(Symbol(), OP_SELL, lots, Bid, 30, 0, 0, "", Magic, 0, clrRed))

Print("Failed to open sell order") ;

}

si(ibufDN[3]>0)

{

if(!OrderSend(Symbol(), OP_BUY, lots, Bid, 30, 0, 0, "", Magic, 0, clrGreen))

Print("Impossible d'ouvrir un ordre d'achat") ;

}



}

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

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

void CountFractals()

{

for(int i=150 ; i>=0 ; i--)

{

ibufUP[i] = iFractals(NULL, 0, MODE_UPPER, i) ;

ibufDN[i] = iFractals(NULL, 0, MODE_LOWER, i) ;

}

}

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



 
Madmas:

Aidez-moi, s'il vous plaît. Pourquoi le test donne-t-il une erreur - "" 2020.08.13 13:09:11.393 2018.08.01 00:00:123456 GBPUSD,M30 : array out of range in '123456.mq4' (59,13)"" ? ???


#property link "2020, Grey."

#lien de propriété "uirnP0215@mail.ru"

#propriété version "1.00"

#propriété stricte


entrée double lots = 0,01 ;

entrée int Magie = 1546 ;



double ibufUP[] ;

double ibufDN[] ;


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

//| Fonction d'initialisation de l'expert |

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

int OnInit()

{


return(INIT_SUCCEEDED) ;

}

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

//| Fonction de désinitialisation experte |

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

void OnDeinit(const int reason)

{

//---


}

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

//| fonction tick expert |

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

void OnTick()

{

CountFractals() ;

si(ibufUP[3]>0)

{

if(!OrderSend(Symbol(), OP_SELL, lots, Bid, 30, 0, 0, "", Magic, 0, clrRed))

Print("Impossible d'ouvrir un ordre de vente") ;

}

si(ibufDN[3]>0)

{

if(!OrderSend(Symbol(), OP_BUY, lots, Bid, 30, 0, 0, "", Magic, 0, clrGreen))

Print("Impossible d'ouvrir un ordre d'achat") ;

}



}

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

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

void CountFractals()

{

for(int i=150 ; i>=0 ; i--)

{

ibufUP[i] = iFractals(NULL, 0, MODE_UPPER, i) ;

ibufDN[i] = iFractals(NULL, 0, MODE_LOWER, i) ;

}

}

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



Ajoutez un compteur de décrémentation dans la fonctionCountFractals pour commencer.