Aide au codage - page 54

 

Besoin d'aide avec la fonction Sleep

Bonjour mladen

Mon exigence est que si la transaction précédente atteint le stoploss, l'EA doit se mettre en veille pendant 24 heures. Pourriez-vous m'aider à le coder ?

 
mladen:
annbeea En ce qui concerne la première partie de votre message : oui, cette version se repeint (c'est dû à la façon dont le calcul du T3 est fait et il a une erreur, c'est pourquoi j'ai dit qu'il est préférable d'utiliser l'autre).

Bonjour mladen, en plus d'utiliser l'autre que vous avez mentionné, pourriez-vous recoder cette partie de l'indicateur ci-joint car je préfère son style de croisement, afin qu'il ne se repeigne pas après et avec le code d'alerte correct ?

Merci beaucoup pour votre aide

Dossiers :
 

Marques de trading sur le graphique, comment les effacer

J'ai ces points rouges sur mes graphiques chaque fois qu'il passe un ordre. Comment puis-je les désactiver ou les effacer ? Je ne sais pas ce qui les provoque.

Dossiers :
dots.jpg  71 kb
 

Vous pouvez utiliser une fonction comme celle-ci :

bool lastOrderStopLossHit(int magicNumber, string symbol, datetime& lastTime)

{

double lastClosePrice = -1;

double lastStopLoss = -1;

//

//

// reset the time of the last order

//

//

lastTime = -1;

//

//

// find the last order

//

//

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

{

if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) continue;

if (OrderMagicNumber()!=magicNumber) continue;

if (OrderSymbol() !=symbol) continue;

if (OrderCloseTime()>lastTime)

{

lastTime = OrderCloseTime();

lastClosePrice = OrderClosePrice();

lastStopLoss = OrderStopLoss();

}

}

int digits = MarketInfo(symbol,MODE_DIGITS);

return (lastTime!=-1 && NormalizeDouble(lastClosePrice,digits)==NormalizeDouble(lastStopLoss,digits));

}[/PHP]

and then at the beginning of the start procedure place a code that could look like this :

[PHP] datetime lastClosedTime;

if (lastOrderStopLossHit(1,Symbol(),lastClosedTime) && (lastClosedTime+24*60*60)>TimeCurrent()) return(0);

Si vous souhaitez une pause différente de 1 jour, changez le "24*60*60" à ce que vous souhaitez.

PS : J'ai utilisé "1" comme numéro magique dans l'appel. Remplacez-le par votre vrai numéro magique

uk_kara:
Bonjour mladen Mon exigence est que si la transaction précédente a atteint le stoploss, l'EA doit rester en veille pendant 24 heures. Pouvez-vous m'aider à le coder ?
 

Bonjour mladen,

Pourriez-vous m'aider à modifier le code à l'intérieur, afin qu'il puisse (normaliser) avoir une échelle verticale : minimum à zéro, maximum à 100, point médian à 50 au lieu de zéro maintenant, tout en conservant les mêmes signaux qu'avant ? Merci beaucoup pour votre aide.

Dossiers :
 

annbeea

Vous ne pouvez pas faire cela. La normalisation, quelle qu'elle soit, modifiera les signaux (ils ne peuvent pas rester exactement les mêmes - d'autant plus que vous avez 3 valeurs ici, il y a encore moins de chance de garder les signaux aux mêmes endroits).

annbeea:
Bonjour mladen, pourriez-vous m'aider à modifier le code à l'intérieur, afin qu'il puisse (normaliser) avoir une échelle verticale : minimum à zéro, maximum à 100, point médian à 50 au lieu de zéro maintenant, mais en conservant les mêmes signaux qu'avant ? Merci beaucoup pour votre aide.
 
mladen:
Vous pouvez utiliser une fonction comme celle-ci :

.............................

Si vous souhaitez une pause différente d'un jour, changez le "24*60*60" à ce que vous souhaitez.

PS : J'ai utilisé "1" pour le numéro magique dans l'appel. Remplacez-le par votre vrai numéro magique

Merci Mladen. Je vais vérifier

 
mladen:
annbeea Vous ne pouvez pas faire cela. La normalisation, quelle qu'elle soit, modifiera les signaux (ils ne peuvent pas rester exactement les mêmes - d'autant plus que si vous avez 3 valeurs, il y a encore moins de chances que les signaux restent aux mêmes endroits).

salut mladen

Peut-être que j'ai mal utilisé ou mal compris le mot "normaliser", est-il possible de mettre à l'échelle le test d'essai osc comme l'échelle communément utilisée, min 0, max 100, mid 50 ?

En outre, est-il possible de laisser mon test d'essai rsi précédent se modifier pour ne pas se repeindre ? Puis-je savoir si c'est le t3 ou les composants rsi qui se repeignent ou les deux ? Merci beaucoup pour votre aide.

 

annbeea

Nous parlons de la même chose : convertir des valeurs pour avoir un minimum et un maximum va toujours "déformer" les valeurs originales. On peut appeler cela normalisation ou standardisation ou ce que l'on veut mais le prix à payer est une perte de corrélation des valeurs originales. Et quand elles sont "déformées", les signaux se produisent à des endroits complètement différents.

En ce qui concerne l'indicateur rsi trial : la partie t3 se repeint. Cela est dû à la façon dont les étapes précédentes du calcul de t3 sont traitées. La première fois qu'il est calculé (lorsque vous le placez sur le graphique, changez de cadre temporel ou de symbole, ...) il calculera OK. Mais au prochain tick, les variables e1 à e6 vont avoir des valeurs de la barre actuelle (zéro-ième) lorsque vous calculez au prochain tick et elles devraient avoir au moins les valeurs de la 1ère barre (selon la variable "limite"). La façon dont le calcul du tick suivant hérite des valeurs de l'étape précédente est une erreur qui causera une erreur de plus en plus grande à chaque nouveau tick, et c'est pourquoi je vous ai recommandé d'utiliser cet autre indicateur comme base, car dans celui-ci ces problèmes sont résolus.

annbeea:
salut mladen

peut-être ai-je mal utilisé ou mal compris le mot "normaliser", est-il possible de mettre à l'échelle le test d'essai de l'osc comme l'échelle habituelle, min 0, max 100, mid 50 ?

A propos, est-il possible de laisser mon test d'essai rsi précédent se modifier pour ne pas se repeindre ? Puis-je savoir si c'est le t3 ou les composants rsi qui se repeignent ou les deux ? Merci beaucoup pour votre aide.
 
uk_kara:
Merci Mladen. Je vais le vérifier

Cela fonctionne comme un charme, comme toujours. Merci Mladen, vous êtes une star.