[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 162

 
Vinin:


Ok, porterò un po' di logica

Il ciclo viene eseguito indipendentemente dalla condizione if(NewBar())


Non ho bisogno che dipenda da NewBAR(). Questa funzione è necessaria per evitare di piazzare ordini in pile. Per favore, ditemi perché il mio codice (nella sua ultima variante) funziona meglio.

funziona, ma non appena faccio lo stesso per SELLSTOP, i trade smettono di aprirsi del tutto?

 

Cari signori, sono un novellino!

Ho iniziato a scrivere il mio primo EA...... e non riesco a finirlo.

Al momento lo sto testando nello strategy tester.

È molto semplice.

All'apertura della candela a 10 ore, piazzo un ordine pendente a una distanza di 60 pip dal prezzo di apertura di questa candela a 10 ore.

Ho avuto un po' di successo con questo.

Ma devo cancellare l'ordine pendente, se non si è trasformato in un'ora dal momento in cui è stato piazzato

in un ordine di mercato.

Ecco il mio codice.

int start()
{
double Price=Ask+60*Point;
double SL=Price-30*Point;
double TP=Price + 15*Point;
if(OrdersTotal()==0 && Hour()==10 && Minute()== 00 )
OrderSend("EURUSD",OP_BUYSTOP,0.1,Prezzo,0,SL,TP, "fjdu",123,TimeCurrent( ) + 3600);

}

Questo codice si compila con successo; il tester non mostra alcun errore.

Ma il parametro di scadenza non funziona, cioè gli ordini pendenti non convertiti a mercato entro 1 ora non vengono cancellati.

Ho cambiato il valore 3600 in 3600000.... ma non succede niente.

Vi sarei molto grato se poteste dirmi qual è il mio errore.

 
solnce600:
il parametro di scadenza non funziona

Molto probabilmente, il broker non lo supporta. Per essere sicuri, si può fare così:

int i,ot = OrdersTotal();

for(i=ot-1;i>=0;i--)
{
   if(!OrderSelect()) continue;
   if(OrderMagicNumber()!=123) continue;
   
   if(OrderType()==OP_BUYSTOP && TimeCurrent()-OrderOpenTime()>3600)
   {
      OrderDelete(OrderTicket());
   }
}
 
solnce600:

Cari signori, sono un novellino!

Ho iniziato a scrivere il mio primo EA...... e non riesco a finirlo.

Al momento lo sto testando nello strategy tester.

È molto semplice.

All'apertura di una candela di 10 ore, piazzo un ordine pendente a una distanza di 60 pip dal prezzo di apertura di questa candela di 10 ore.

Ho avuto un po' di successo con questo.

Ma devo cancellare l'ordine pendente, se non si è trasformato in un'ora dal momento in cui è stato piazzato

in un ordine di mercato.

Ecco il mio codice.

int start()
{
double Price=Ask+60*Point;
doppio SL=Prezzo-30*Punto;
doppio TP=Prezzo + 15*Punto;
if(OrdersTotal()==0 && Hour()==10 && Minute()== 00 )
OrderSend("EURUSD",OP_BUYSTOP,0.1,Price,0,SL,TP, "fjdu",123,TimeCurrent( ) + 3600);

}

Questo codice viene compilato e testato con successo.

Ma il parametro di scadenza non funziona, cioè gli ordini pendenti non convertiti a mercato entro 1 ora non vengono cancellati.

Ho cambiato il valore 3600 in 3600000.... ma non succede niente.

Vi sarei molto grato se poteste dirmi qual è il mio errore.

Cosa vi impedisce di fare la condizione di cancellare la stessa sull'ora e sul minuto? Il DC potrebbe non soddisfare la tua scadenza.
 
borilunad:
E cosa vi impedisce di fare una condizione per cancellare alla stessa ora e minuto? La società di intermediazione potrebbe non rispettare la vostra data di scadenza.


alsu:

Molto probabilmente, il broker non lo supporta. Per essere sicuri, si può fare questo:



Ho un terminale Alpari e sul mio conto demo ho impostato manualmente il pendolo e messo la scadenza a 1 ora. Tutto era a posto.

Ho letto che se il broker non supporta questo parametro, ci sarebbe un errore.... ma non c'è nessun errore.

I test sono in esecuzione ... ma l'ordine non viene cancellato.

 
borilunad:
E cosa vi impedisce di fare la condizione di cancellare dalla stessa ora e minuto? Il DC potrebbe non soddisfare la tua scadenza.

E per l'ora e il minuto?

Grazie.

 
solnce600:

Che ne dite di un'ora e un minuto?

Grazie.



Cosa si deve sostituire al parametro della scadenza?

 
solnce600:

E per un'ora e un minuto, com'è?

Grazie.

È lo stesso che hai aperto, solo un'ora dopo, alle 11. Ecco cosa hai! Non è così che faccio io, ma non cambia il punto.
 
borilunad:
Lo stesso che hai aperto tu, solo un'ora dopo, alle 11. Lo faccio in modo diverso, ma non cambia il punto.

Scusa se sono stupido, ma non ho capito se devo cambiare qualcosa in questo parametro o no.

Se è così, vi sarei grato se poteste inserire il parametro di scadenza nel mio codice come necessario, e incollare l'intera linea nel testo della vostra risposta.

Grazie.

 
solnce600:

Scusa se sono stupido, ma non ho capito se devo cambiare qualcosa in questo parametro o no.

Se è così, vi sarei grato se poteste inserire il parametro di scadenza nel mio codice come necessario, e incollare l'intera linea nel testo della vostra risposta.

Grazie.



Posso suggerire la seguente variante:

if(Hour()==11 && OrdersTotal()>0)

{

if(OrderSelect(0,SELECT_BY_POS)==true)

{

se(OrderType()==OP_BUYSTOP)

{

OrderDelete(OrderTicket());

}

}

}

E non si usa il parametro di scadenza. Lo svantaggio è che quando si fa trading, il computer deve essere in funzione con internet collegato e il terminale acceso per poter chiudere la posizione.

Motivazione: