Comment coder ? - page 93

 

thx mais pouvez-vous m'expliquer pourquoi

BuyCondition = BuyValueCurrent1 != EMPTY_VALUE

pourquoi empty_value ?

 

de toute façon ça ne marche pas et je ne comprends pas et ne trouve pas pourquoi...

voici mes variables

BuyValueCurrent = iCustom(NULL,TimeFrame,IndicatorName1,NumBars,0,1); // braintrend1 [/PHP]
BuyValueCurrent2 = iCustom(NULL,TimeFrame,IndicatorName2,NumBars,0,1); // braintrend2

and here is the statement

[PHP] BuyCondition = (BuyValueCurrent != EMPTY_VALUE && BuyValueCurrent2 != EMPTY_VALUE);

il donne des résultats totalement flous même lorsque les indicateurs (Braintrend2stop et BrainTrend1Stop) sont SELL.

 
clarc:
J'ai un EA qui ouvre et gère la position, mais parfois l'indikateur donne le même signal multiple et l'EA ouvre chaque fois que ce signal sort une nouvelle position - mais je ne veux pas une deuxième ou troisième et ainsi de suite et sur la position, je veux seulement la première - est-il possible que l'EA vérifie la position ouverte sur la base du nombre magique et de la paire pour éviter ces entrées multiples ?

Voilà l'idée :

int CountLongs()

{

int count=0 ;

int trade ;

int métiers=OrdersTotal() ;

for(trade=0;trade<trades;trade++) {

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES) ;

if(OrderSymbol()!=Symbol() || OrderMagicNumber() != MagicNumber) continue ;

if(OrderType()==OP_BUY) count++ ;

} //---- pour

return(count) ;

}

int CountShorts()

{

int count=0 ;

int trade ;

int trades=OrdersTotal() ;

for(trade=0;trade<trades;trade++) {

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES) ;

if(OrderSymbol()!=Symbol() || OrderMagicNumber() != MagicNumber) continue ;

if(OrderType()==OP_SELL) count++ ;

} //---- pour

return(count) ;

}

Et dans la fonction start() :

if(CountLongs() == 0 && CountShorts() == 0) {

Votre condition d'entrée ici

}

J'espère que cela vous aidera.

FerruFx

 
payback:
Quoi qu'il en soit, cela ne fonctionne pas et je ne comprends pas pourquoi...

voici mes variables

BuyValueCurrent = iCustom(NULL,TimeFrame,IndicatorName1,NumBars,0,1); // braintrend1 [/PHP]
BuyValueCurrent2 = iCustom(NULL,TimeFrame,IndicatorName2,NumBars,0,1); // braintrend2

and here is the statement

[PHP] BuyCondition = (BuyValueCurrent != EMPTY_VALUE && BuyValueCurrent2 != EMPTY_VALUE);
Il donne des résultats totalement flous même lorsque les indicateurs (Braintrend2stop et BrainTrend1Stop) sont SELL.

Je ne connais pas vos indicateurs Braintrend1 et 2, j'ai juste supposé que lorsqu'une condition d'achat est remplie, ils dessinent une flèche sur le graphique. Dans MT4, la valeur par défaut du tampon est une constante nommée "EMPTY-VALUE", donc s'il n'y a pas de flèche, la valeur renvoyée par iCustom() est cette constante, et s'il y a une flèche, la valeur renvoyée est le prix où la flèche est placée.

Si j'ai bien compris, vous voulez acheter lorsque les deux indicateurs montrent une flèche, n'est-ce pas ?

 

oui, c'est exactement ce que je veux faire

 
payback:
oui, c'est exactement ce que je veux faire

Alors, s'il vous plaît, vérifiez votre syntaxe iCustom().

 

qu'est ce que je dois vérifier ? peut être que j'ai raté quelque chose

double iCustom( string symbol, int timeframe, string name, ..., int mode, int shift)

Je suppose que s'il y a un signal d'achat, il est stocké dans le tampon 0, sinon il est vide et le tampon 1 contient le signal de vente.

 
payback:
qu'est ce que je dois vérifier ? peut-être que j'ai raté quelque chose
double iCustom( string symbol, int timeframe, string name, ..., int mode, int shift)
et bien je suppose que s'il y a un signal d'achat il est stocké dans le tampon 0 sinon il est vide et le tampon 1 contient le signal de vente.

Postez votre indicateur ici, je vais regarder.

 

ok thx !

et s'il vous plaît expliquer

Dossiers :
 
payback:
ok thx ! et s'il vous plaît expliquez

Ouvrez BrainTrend1Stop.mq4.

Au début du fichier, vous trouverez :

extern int NumBars=500;

extern int EnableAlerts=0;

extern int SignalID=0;[/PHP]This means that you have to fill those three parameters as arguments in the iCustom() call, like this:

BuyValueCurrent = iCustom(NULL,0,"BrainTrend1Stop",NumBars,EnableAlerts,SignalID,0,1); // braintrend1

[/PHP]About the buffer's number, you can see this:

#property indicator_color1 Magenta

#property indicator_color2 Aqua[/PHP]So the buffer 0 is Magenta and the buffer 1 is Aqua.

Thus if the Buy arrow's color is Aqua, the buffer's number is 1 and the iCustom call is:[PHP]BuyValueCurrent = iCustom(NULL,0,"BrainTrend1Stop",NumBars,EnableAlerts,SignalID,1,1); // braintrend1
A little lower you have:[PHP] SetIndexEmptyValue(1,0.0);

This means that the default empty value for the buffer 1 is set to 0.0; so when there is no arrow, the value returned by the iCustom() call will be 0.0.

So you should know the presence of the arrow checking its value against 0, like this (if the second indic follows the same behavior):[PHP]BuyCondition = (BuyValueCurrent > 0 && BuyValueCurrent2 > 0);

A propos de la deuxième indication, je pense que vous devriez être capable de faire la même analyse par vous-même.

Raison: