Comment coder ? - page 336

 
tkuan77:
Bonjour mladen, malheureusement, je viens de réessayer et cela ne fonctionne toujours pas.

Existe-t-il un autre moyen de fermer ma transaction en fonction d'un moment précis ?

Salutations

Ryan

J'ai utilisé ce code :

extern bool UseCurrSymbol = false;

int init() { return(0); }

int deinit() { return(0); }

void start(void)

{

bool result;

if(OrdersTotal()>0)

{

if (TimeCurrent()>= StrToTime("07:00:00"))

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

if (!UseCurrSymbol || OrderSymbol()==Symbol())

{

if (OrderType()==OP_BUY)

{

double pBid=MarketInfo(OrderSymbol(),MODE_BID);

result = OrderClose(OrderTicket(),OrderLots(),pBid,3,Blue);

}

if (OrderType()==OP_SELL)

{

double pAsk=MarketInfo(OrderSymbol(),MODE_ASK);

result = OrderClose(OrderTicket(),OrderLots(),pAsk,3,Red);

}

}

}

}

return;

}

Pour tester, et il a fermé l'ordre (voir l'exemple)

Dossiers :
test_closed.gif  63 kb
 
mladen:
J'ai utilisé ce code :
extern bool UseCurrSymbol = false;

int init() { return(0); }

int deinit() { return(0); }

void start(void)

{

bool result;

if(OrdersTotal()>0)

{

if (TimeCurrent()>= StrToTime("07:00:00"))

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

if (!UseCurrSymbol || OrderSymbol()==Symbol())

{

if (OrderType()==OP_BUY)

{

double pBid=MarketInfo(OrderSymbol(),MODE_BID);

result = OrderClose(OrderTicket(),OrderLots(),pBid,3,Blue);

}

if (OrderType()==OP_SELL)

{

double pAsk=MarketInfo(OrderSymbol(),MODE_ASK);

result = OrderClose(OrderTicket(),OrderLots(),pAsk,3,Red);

}

}

}

}

return;

}

Pour tester, et il a fermé la commande (voir l'exemple)

Bonjour mladen, merci. le problème a été résolu de mon côté. juste une remarque, pouvez-vous m'expliquer un peu quel est le but de ces quelques lignes dans votre codage ?

extern bool UseCurrSymbol = false ; et

if (!UseCurrSymbol || OrderSymbol()==Symbol())

Salutations

Ryan

 
tkuan77:
Bonjour mladen, merci. le problème a été résolu de mon côté. juste une remarque, pouvez-vous m'expliquer un peu quel est le but de ces quelques lignes dans votre codage ?

extern bool UseCurrSymbol = false ; et

if (!UseCurrSymbol || OrderSymbol()==Symbol())

Salutations

Ryan

Vous avez utilisé la variable UseCurrSymbol et cette ligne exacte dans votre code.

J'ai dû créer cette variable pour que le code utilise les mêmes variables que votre code.

 
mladen:
Vous avez utilisé la variable UseCurrSymbol et cette ligne exacte dans votre code j'ai dû faire cette variable pour que le code utilise les mêmes variables que votre code.

Bonjour mladen, désolé car j'ai obtenu cette partie du code à partir des sources que vous m'avez fournies précédemment.

Ce que je voulais dire c'est pourquoi nous avons besoin de mettre un bool UseCurrSymbol à false et quel est le but de la 2ème ligne pour --> if (!UseCurrSymbol || OrderSymbol()==Symbol())

 
tkuan77:
Salut mladen, désolé car j'ai obtenu cette partie du code à partir des sources que vous m'avez fournies plus tôt. Ce que je voulais dire, c'est pourquoi nous avons besoin de mettre un bool UseCurrSymbol à false et quel est le but de la 2ème ligne pour --> if (!UseCurrSymbol || OrderSymbol()==Symbol())

Il n'est pas nécessaire de le mettre à false

Si vous le mettez à true, alors seul le symbole actuel sera vérifié pour les ordres. Cela vous permet donc de choisir les ordres que vous souhaitez traiter.

 

Bonjour à tous !

J'ai le problème suivant.

Je veux qu'une valeur d'un indi icustom, par exemple iCustom(NULL,0, "MACD",12,26,9,0,i) soit utilisée dans une sous-fonction comme :

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

pour obtenir le momentum du "iCustom(NULL,0, "MACD",12,26,9,0,i)"...

Quand je l'appelle normalement avec Mom(High,22,Bars,i)

cela fonctionne, mais lorsque j'utilise l'indicateur personnalisé à la place du "High", cela ne fonctionne évidemment pas.

Donc ma question est, comment puis-je implémenter ceci pour que le code fonctionne ?

Merci pour toute aide !

Au revoir, AT

 
at120:
Bonjour à tous !

J'ai le problème suivant.

Je veux qu'une valeur d'une indication icustom, par exemple iCustom(NULL,0, "MACD",12,26,9,0,i) soit utilisée dans une sous-fonction comme :

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

pour obtenir le momentum du "iCustom(NULL,0, "MACD",12,26,9,0,i)"...

Quand je l'appelle normalement avec Mom(High,22,Bars,i)

cela fonctionne, mais lorsque j'utilise l'indicateur personnalisé à la place du "High", cela ne fonctionne évidemment pas.

Donc ma question est, comment puis-je implémenter ceci pour que le code fonctionne ?

Merci pour toute aide !

Au revoir, AT

at120

Avez-vous un indicateur nommé "macd" dans le dossier des indicateurs (je ne parle pas du macd intégré, mais d'un macd personnalisé) ? Si oui, vérifiez si les paramètres sont corrects

 

Salut Mladen !

Merci pour le replay rapide !

Désolé MACD était un mauvais exemple, prenez n'importe quel autre exemple, un MACD personnalisé ou quelque chose comme ça.

J'ai vérifié la sortie via une fenêtre supplémentaire et testé indi /output pour définir les bons paramètres,

pour être sûr que "iCustom(NULL,0, "myIndi",0,i)" a les bons paramètres. Bien sûr, il est compilé, dans le bon dossier, etc...

J'obtiens toujours l'erreur (lorsque j'utilise une variable) - par exemple

double mom1 = iCustom(NULL,0, "myIndi",0,i) ; -> mom(mom1,Bars,20,i)

-> "mom" - paramètre de conversation non autorisé ou lorsque je l'utilise directement ->

mom( iCustom(NULL,0, "myIndi",0,i),Bars,20,i)

Erreur : iCustom - paramètre passé comme référence, variable attendue

Merci pour l'aide et les informations !

Bye, AT

 
at120:
Bonjour Mladen !

Merci pour le replay rapide !

Désolé MACD était un mauvais exemple, prenez n'importe quel autre exemple, un MACD personnalisé ou quelque chose comme ça.

J'ai vérifié la sortie via une fenêtre supplémentaire et testé indi /output pour définir les bons paramètres,

pour être sûr que "iCustom(NULL,0, "myIndi",0,i)" a les bons paramètres. Bien sûr, il est compilé, dans le bon dossier, etc...

J'obtiens toujours l'erreur (lorsque j'utilise une variable) - par exemple

double mom1 = iCustom(NULL,0, "myIndi",0,i);-> mom(mom1,Bars,20,i)

-> "mom" - paramètre de conversation non autorisé ou lorsque je l'utilise directement ->

mom( iCustom(NULL,0, "myIndi",0,i),Bars,20,i)

Erreur : iCustom - paramètre passé comme référence, variable attendue

Merci pour l'aide et l'information !

Au revoir, AT

Si vous utilisez un simple appel à iCustom(), l'erreur ne peut se produire que dans les paramètres.

Vous ne pouvez pas utiliser iCustom() comme paramètre pour la fonction mom() (vérifiez l'en-tête de la fonction mom et vous verrez quels paramètres et quel type de paramètres la fonction mom() accepte). Le résultat de iCustom() est défini comme "double" - il ne peut pas prendre le rythme d'un tableau passé par référence. Consultez également ce fil de discussion : https://www.mql5.com/en/forum/173108 - il vous aidera peut-être.

 

Bonjour Mladen !

Je pense que l'appel de mon iCustom est correct, car en test et en normal(exportation de données ou utilisation comme indi)

cela fonctionne bien jusqu'à présent. Je pense que le problème est comme vous l'avez mentionné la valeur double/array.

Lorsque j'utilise maintenant un

double mom1[] ;

mom1 = iCustom(NULL,0, "myIndi",0,i) ;

et qu'un -> mom(mom1,Bars,20,i) ;

-> "mom" - conversation de paramètres non autorisée

Comment dois-je écrire cela correctement ?

Merci beaucoup et au revoir, AT