Quelque chose comme ça, si je te comprends bien
input int=candles; .... { //--- for(int i=0;i<candles-1;i++) { if(RSI2[i] > RSI_Filter_Limit) { .... } }
Bonjour Alexey,
merci beaucoup pour la solution, je savais que ca serait simple pour quelqu'un de compétent !
Malheureusement je viens à peine de voir, par hasard, ta réponse. Je pensais que personne ne m'avait répondu.
Je ne sais pour quelle raison, le site ne m'a pas envoyé de notification lorsque tu m'avais répondu.
Je viens de tester ta solution, c'est génial : ça allège beaucoup mon code :)
Merci encore !
Patrick
Bonjour Alexey,
merci beaucoup pour la solution, je savais que ca serait simple pour quelqu'un de compétent !
Malheureusement je viens à peine de voir, par hasard, ta réponse. Je pensais que personne ne m'avait répondu.
Je ne sais pour quelle raison, le site ne m'a pas envoyé de notification lorsque tu m'avais répondu.
Je viens de tester ta solution, c'est génial : ça allège beaucoup mon code :)
Merci encore !
Patrick
Je vous en prie!
Vous pouvez configurer la notification mobile à l'aide de MetaQuotes ID - https://www.mql5.com/fr/articles/476

- www.mql5.com
Je vous en prie!
Vous pouvez configurer la notification mobile à l'aide de MetaQuotes ID - https://www.mql5.com/fr/articles/476
Merci aussi pour ce conseil, je viens de faire la modification. Je verrai à ta prochaine réponse si cela marche ;)
Alexey j'en profite pour te demander encore un coup de main : je bloque sur ce problème depuis plusieurs heures...
Comment transformer " Duration " en int ?
datetime LastOpenLongTime()
{
datetime result = 0;
for(int i = PositionsTotal()-1; i >= 0; i--)
{
if(PositionGetTicket(i) <= 0) continue;
if(PositionGetInteger(POSITION_TYPE) > 1) continue;
if(PositionGetString(POSITION_SYMBOL) == Symbol() && PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY && PositionGetInteger(POSITION_MAGIC) == MagicNumber)
{
result = (datetime)PositionGetInteger(POSITION_TIME);
break;
}
}
return(result);
}
ulong Duration= (TimeCurrent()-LastOpenLongTime())/PeriodSeconds();
En fait, je veux que Duration soit un int qui m'indique le nombre de bars depuis l'ouverture...
J'espère que tu pourras m'aider dans ce problème aussi.
Merci d'avance en tout cas pour ton temps !
Patrick
Merci aussi pour ce conseil, je viens de faire la modification. Je verrai à ta prochaine réponse si cela marche ;)
Alexey j'en profite pour te demander encore un coup de main : je bloque sur ce problème depuis plusieurs heures...
Devrait être quelque chose comme ça (beaucoup de changements :)
//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ input int MagicNumber=0; void OnStart() { //--- calculate the number of bars from position open time ulong Duration=(TimeCurrent()-LastOpenLongTime())/PeriodSeconds(); Print(Duration); } //+------------------------------------------------------------------+ //| Check last position open time | //+------------------------------------------------------------------+ datetime LastOpenLongTime() { datetime result=0; //--- iterate throug all open positions for(int i=0; i<PositionsTotal(); i++) { //--- select a position for further working string symbol=PositionGetSymbol(i); //--- check positions parameters if(symbol == _Symbol && PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY && PositionGetInteger(POSITION_MAGIC) == MagicNumber) { //--- get position open time datetime new_time=(datetime)PositionGetInteger(POSITION_TIME); //--- check if this is the newest position if(new_time>result) result=new_time; } } return(result); } //+------------------------------------------------------------------+
Merci Alexey,
mais dans ton code "Duration" est toujours un ulong et pas un int ! Ou bien j'ai mal compris ?
Il n'est pas nécessaire de le changer en int. Il affiche déjà le nombre de bougies que vous vouliez. Vous pouvez exécuter le script sur un graphique et vérifier :)
Il n'est pas nécessaire de le changer en int. Il affiche déjà le nombre de bougies que vous vouliez. Vous pouvez exécuter le script sur un graphique et vérifier :)
En effet, cela fonctionne, j'ai vu.
Par contre, je voulais utiliser cette variable dans une boucle for comme vous me l'avez appris ;)
for(int i=0;i<candles-1;i++)
Mais je n'avais même pas essayé de changer
for(ulong i=0;i<candles-1;i++)
int en ulong.
Ca a l'air de fonctionner je vais faire des essais !
Merci beaucoup en tout cas ! Quel plaisir de se sentir moins seul face aux problématiques du codage.
Bonne journée Alexey :)

- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Hello,
Can you please help me to find a solution (which will be, I'm sure, easy for you : but not for me) to code a possibility with an input parameter, to choice on how much candles I will work back. A loop, something so ?
For example, I have this for an buy order :
if(
RSI2[0] > RSI_Filter_Limit
&& RSI2[0] < (100-RSI_Filter_Limit)
&& RSI2[1] > RSI_Filter_Limit
&& RSI2[1] < (100-RSI_Filter_Limit)
&& RSI2[2] > RSI_Filter_Limit
&& RSI2[2] < (100-RSI_Filter_Limit)
&& RSI2[3] > RSI_Filter_Limit
&& RSI2[3] < (100-RSI_Filter_Limit)
&& RSI2[4] > RSI_Filter_Limit
&& RSI2[4] < (100-RSI_Filter_Limit)
&& RSI2[5] > RSI_Filter_Limit
&& RSI2[5] < (100-RSI_Filter_Limit))
So, I want to choice, with an input on how much candles I test this same condition back.
For example, the same condition RSI > Filter and RSI <100-Filer, but until shift 10 or more...
I hope my problem is well explained.
Thank you so much for your help :)