Come codificare? - pagina 22

 

Puoi sempre scrivere int crossTime = Time[0] quando hai avuto un cross, e poi usare la funzione iBarShift usando la variabile crossTime per controllare quante barre sono passate.

 

Ciao Kalenzo,

Kalenzo:
Puoi sempre scrivere int crossTime = Time[0] quando hai avuto un cross, e poi usare la funzione iBarShift usando la variabile crossTime per controllare quante barre sono passate.

Come scriveresti questo codice per includere solo le "Bear Bars" nel conteggio?

Capisco l'ibarshift ma questo includerebbe tutte le barre dal cross. Avresti ancora bisogno di usare un sistema di conteggio come ho fatto io per contare le "Bear Bars" e credo che questo sia il mio problema.

Ho originariamente testato il mio codice con questo codice .... Che ha funzionato bene.... ma non si è tradotto nel codice di cui sopra che sarebbe stato effettivamente elencato nel mio EA

int start()

{

//----

double f=iMA(NULL,0,3,0,MODE_SMA,PRICE_CLOSE,0);

double s=iMA(NULL,0,7,0,MODE_SMA,PRICE_CLOSE,0);

double fp=iMA(NULL,0,3,0,MODE_SMA,PRICE_CLOSE,1);

double sp=iMA(NULL,0,7,0,MODE_SMA,PRICE_CLOSE,1);

static bool CrossedUP,CrossedDn;

static int Count=0;

if(f>s && fp<=sp)

{

CrossedUP=true;

CrossedDn=false;

Alert(Symbol()," Crossed UP");

Count=0;

}

else

if(f=sp)

{

CrossedUP=false;

CrossedDn=true;

Alert(Symbol()," Crossed Down");

Count=0;

}

if(NewBar()==true && f>s || f<s) Count++;

Comment("Crossed UP: ",CrossedUP," Crossed Down: ",CrossedDn," Bars since Cross: ",Count);

//----

return(0);

}

Qualsiasi altro pensiero sarebbe apprezzato.

Grazie,

SaxMan

 

Scusa Omelette,

Anche questo non funziona

Grazie,

SaxMan

omelette:
Ciao, prova questo.
bool LongClose()

{

if(MAFastC=MASlowP)

{

CrossedUp=false;

CrossedDn=true;

BarCount=0;

}

else

if(MAFastC>MASlowC && MAFastP<=MASlowP)

{

CrossedUp=true;

CrossedDn=false;

BarCount=0;

Alert("Crossed Down");

}

if(CrossedDn==true && NewBar()==true && Candle3mP=="Bear")

BarCount++;

if(BarCount>=2 && Candle3mC=="Bear")

{

Alert("Close Long Position");

return(true);

}

else return(false);
 

limite di tempo con codice EA

Non riesco a mettere un limite di tempo sul mio EA

La linea di codice è la seguente:

OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point, "timetest",16384,0,Green)

Ho provato a cambiare lo ZERO in un 1 o in un 12 e non riesco a fermare il trade ... vorrei far scadere il trade in 12 ore come posso fare?

Sto usando un backtesting per essere sicuro che funzioni... la funzione expire funziona con questo, giusto?

 

Prova questo....

{

string expire_date = "2007.10.22

datetime expirevar = StrToTime(expire_date);

if ( CurTime() >= expirevar )

{

Alert ("Versione scaduta");

return(0);

}

// codice

return(0);

}

Dave

 
islandrock:
Non riesco a mettere un limite di tempo sul mio EA

La linea di codice è la seguente:

OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point, "timetest",16384,0,Green)

Ho provato a cambiare lo ZERO in un 1 o in un 12 e non riesco a fermare il trade ... vorrei che il trade scadesse tra 12 ore come posso fare?

Sto usando un backtesting per essere sicuro che funzioni... la funzione expire funziona con questo, giusto?

controllare il canale degli errori;

L'applicazione del tempo di scadenza dell'ordine pendente può essere disabilitata in alcuni server di trading. In questo caso, quando viene specificato un valore diverso da zero nel parametro expiration, viene generato l'errore 147 (ERR_TRADE_EXPIRATION_DENIED).

il parametro è una variabile 'datetime', non credo che il 12 rientri in quella dichiarazione di variabile.

 
islandrock:
Non riesco a mettere un limite di tempo sul mio EA

La linea di codice è la seguente:

OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point, "timetest",16384,0,Green)

Ho provato a cambiare lo ZERO in un 1 o in un 12 e non riesco a fermare il trade ... vorrei far scadere il trade in 12 ore come posso fare?

Sto usando un backtesting per essere sicuro che funzioni... la funzione expire funziona con quello, giusto?

Ciao, i timeout di scadenza funzionano bene con MT, l'unica avvertenza è che alcuni broker non li permettono - FXDD è uno di questi. Il tempo di scadenza deve essere in formato datetime per funzionare - cioè.

datetime ExpirationTime = StrToTime(TimeYear(Time[0]) + "." + TimeMonth(Time[0])+ "." + TimeDay(Time[0])+" "+23+":"+55); OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point,"timetest",16384,ExpirationTime,Green);
 

Ho provato questo.

extern int TradeLifeHour=12;

extern int TradeLifeMin=00;

datetime expirationtime; (non so cosa va qui)

poi all'interno di start()

expirationtime = CurTime()+TradeLifeHour*60*60+TradeLifeMin*60;

e usare expirationtime nell'area 0.

Ho l'ultimo codice ma non so come configurarlo per far scadere il trade in 12 ore

 
xxDavidxSxx:
Prova questo....

{

string expire_date = "2007.10.22

datetime expirevar = StrToTime(expire_date);

if ( CurTime() >= expirevar )

{

Alert ("Versione scaduta");

return(0);

}

// codice

return(0);

}

Dave

Ho appena usato il codice che ti ho dato. Ho cambiato la data in 2006 e l'ho schiaffato in un posto a caso dentro Bipoler su un conto FXDD con soldi veri, e ha funzionato come una meraviglia.

O forse è troppo semplice? Non so

Dave

 

??

quel codice non fa scadere ogni trade che il mio EA apre a 12 ore dal momento dell'apertura...