Come codificare? - pagina 93

 

Grazie, ma potete spiegarmi perché

BuyCondition = BuyValueCurrent1 != EMPTY_VALUE

perché empty_value?

 

comunque non funziona e non capisco perché...

ecco le mie variabili

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);

dà risultati totalmente confusi anche quando l'indicatore (Braintrend2stop e BrainTrend1Stop) sono SELL

 
clarc:
Ho un EA che apre e gestisce la posizione, ma a volte dà all'indicatore lo stesso segnale multiplo e l'EA apre ogni volta che questo segnale esce una nuova posizione - ma non voglio una seconda o terza posizione e così via, voglio solo la prima - è possibile che l'EA controlli la posizione aperta in base al numero magico e alla coppia per evitare tali entrate multiple?

Ecco l'idea:

int CountLongs()

{

int count=0;

int trade;

int trades=OrdiniTotali();

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

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

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

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

} //---- per

return(count);

}

int CountShorts()

{

int count=0;

int trade;

int trades=OrdiniTotali();

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

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

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

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

} //---- per

return(count);

}

E nella funzione start()

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

La tua condizione di entrata qui

}

Spero che questo aiuti.

FerruFx

 
payback:
Comunque non funziona e non capisco perché...

Ecco le mie variabili

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);
dà risultati totalmente confusi anche quando l'indicatore (Braintrend2stop e BrainTrend1Stop) sono SELL

Non conosco i vostri indic Braintrend1 e 2, ho solo supposto che quando una condizione di acquisto è soddisfatta, disegnano una freccia sul grafico. In MT4, il valore predefinito del buffer è una costante chiamata "EMPTY-VALUE", quindi se non c'è nessuna freccia il valore restituito da iCustom() è questa costante, e se c'è una freccia il valore restituito è il prezzo dove la freccia è messa.

Da quanto ho capito, tu vuoi comprare quando entrambi gli indici mostrano una freccia, vero?

 

sì, è esattamente quello che voglio fare

 
payback:
Sì, è esattamente quello che voglio fare

Quindi, per favore, controllate la sintassi di iCustom().

 

Cosa devo controllare? Forse mi manca qualcosa

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

bene per quello che suppongo se c'è un segnale di acquisto è memorizzato nel buffer 0 altrimenti è vuoto e il buffer 1 ha il segnale di vendita

 
payback:
Cosa devo controllare? Forse mi manca qualcosa
double iCustom( string symbol, int timeframe, string name, ..., int mode, int shift)
bene per quello che suppongo che se c'è un segnale di acquisto è memorizzato nel buffer 0 altrimenti è vuoto e il buffer 1 ha il segnale di vendita

Posta qui il tuo indicativo, lo guarderò.

 

ok thx!

e per favore spiega

 
payback:
ok thx! e per favore spiega

Aprire BrainTrend1Stop.mq4.

All'inizio del file puoi trovare :

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);

Riguardo al secondo indicatore, penso che dovresti essere in grado di fare la stessa analisi da solo.