Chiedete! - pagina 148

 

Qualcuno può aiutarmi a capire meglio come modificare il codice per permettere all'EA di eseguire ordini simultanei in diverse istanze (in altre parole sto testando lo stesso EA, su diverse coppie contemporaneamente, e sto usando diversi numeri magici per ogni istanza).

Il codice originale include questo:

int total=OrdersTotal();

if(totale<1)

E penso che sia qui il problema. Se aumento il numero, semplicemente esegue diversi ordini sulla stessa barra (M15) per la stessa coppia. Se lascio if(total<1), allora non permette ordini simultanei su coppie diverse.

Posso cambiare qualcosa sul tick o sulla barra per permettere un solo ordine alla volta per coppia, ma diversi ordini per tutte le coppie che hanno EA (con diverso numero magico) collegato?

Grazie a chiunque possa aiutare o offrire input!

Chili

 

Confuso su più dichiarazioni if

/////////////////////START TRADING ON SUNDAY/////////////////////////

StartDay=7; StartHour=1; StartMinute=55;

{

if(TimeDayOfWeek(TimeCurrent())==StartDay)

{

if(TimeHour(TimeCurrent())==StartHour)

{

if(TimeMinute(TimeCurrent())==StartMinute)

{

}

}

}

}

Sto cercando di far sì che il mio EA si attivi quando i ruoli del settimo giorno (Day 7), i ruoli dell'ora 1 e i ruoli dei 55 minuti. Cosa sto facendo di sbagliato? Oggi ho avviato il computer e l'EA ha iniziato a scambiare subito (prima dell'ora 1). Per favore aiutatemi.

Grazie!

Dave

 
JForex78:
Ciao,

Voglio sapere come posso tracciare un incrocio di una MA del timeframe inferiore su un grafico del timeframe superiore.

Ad esempio, voglio tracciare una freccia sul grafico H1 quando le MA5 e MA10 di M15 si incrociano.

Per favore fatemi sapere.

Grazie,

JForex.

Una MA su qualsiasi grafico è solo una versione superiore/inferiore di una MA su un timeframe superiore/inferiore. Per esempio, se metti una 60MA su un grafico a 5 minuti ma vuoi vedere come appare su un grafico a ore, devi solo moltiplicare 60 per 12 (intervalli di 5 minuti in un'ora). Quindi una 720 MA su un grafico orario è la stessa di una 60 MA su un grafico a 5 minuti.

Ha senso?

Lux

 
1Dave7:
/////////////////////START TRADING ON SUNDAY/////////////////////////

StartDay=7; StartHour=1; StartMinute=55;

{

if(TimeDayOfWeek(TimeCurrent())==StartDay)

{

se(TimeHour(TimeCurrent())==StartHour)

{

if(TimeMinute(TimeCurrent())==StartMinute)

{

}

}

}

}

Sto cercando di far sì che il mio EA si attivi quando i ruoli del settimo giorno (Day 7), i ruoli dell'ora 1 e i ruoli dei 55 minuti. Cosa sto facendo di sbagliato? Oggi ho avviato il computer e l'EA ha iniziato a scambiare subito (prima dell'ora 1). Per favore aiutatemi.

Grazie!

Dave

Dai un'altra occhiata al file di aiuto.

Restituisce l'attuale giorno della settimana su base zero (0-Domenica,1,2,3,4,5,6) dell'ultimo orario noto del server.

Lux

 
Chilibowl:
Qualcuno può aiutarmi a capire meglio come modificare il codice per permettere all'EA di eseguire ordini simultanei in diverse istanze (in altre parole sto testando lo stesso EA, su diverse coppie contemporaneamente, e sto usando diversi numeri magici per ogni istanza).

Il codice originale include questo:

int total=OrdersTotal();

if(totale<1)

E penso che sia qui il problema. Se aumento il numero, semplicemente esegue diversi ordini sulla stessa barra (M15) per la stessa coppia. Se lascio if(total<1), allora non permette ordini simultanei su coppie diverse.

Posso cambiare qualcosa sul tick o sulla barra per permettere un solo ordine alla volta per coppia, ma diversi ordini per tutte le coppie che hanno EA (con diverso numero magico) collegato?

Grazie a chiunque possa aiutare o offrire input!

Chili

OrdersTotal è una funzione integrata che non considera il numero magico. Devi scrivere una tua funzione che utilizzi OrdersTotal ma che filtri per numero magico e probabilmente anche per simbolo. Ci sono molti esempi qui e altrove.

Buona fortuna.

Lux

 
luxinterior:
Dai un'altra occhiata al file di aiuto. Lux

Ho cambiato lo StartDay a 0, e ho cambiato lo StartHour all'ora GMT corrente del mio broker, e ho cambiato lo StartMinute a 5 minuti prima dei minuti GMT - funziona ancora bene quando l'ora GMT corrisponde alla mia ora di inizio. Ho guardato i file di aiuto e non mostrano un'istruzione multiple if. Le dichiarazioni multiple if mi confondono sempre. Cosa diavolo sto facendo di sbagliato? Voglio che il programma non faccia trading fino all'ora di inizio appropriata di domenica, e fare un commento "Non-Trading Time" fino all'ora = l'ora di inizio di domenica.

Molto confuso!

?????

 
luxinterior:
OrdersTotal è una funzione integrata che non considera il numero magico. Devi scrivere la tua funzione che utilizza OrdersTotal ma filtra per numero magico e probabilmente anche per simbolo. Ci sono molti esempi qui e altrove.

Buona fortuna.

Lux

Qui ce n'è uno che ho fatto e che ho usato abbastanza:

int OTBM(int intMagic)//OrdersTotalByMagic

{

int intCount=0;

int intPOS=0;

bool boolTerm=false;

while(boolTerm==false)

{

if(OrderSelect(intPOS,SELECT_BY_POS))

{

if(OrderMagicNumber()==intMagic) intCount++;

intPOS++;

}

else

boolTerm=true;

}

return(intCount);

}

[/PHP]

And if you want to close only a certain order by magic number:

int CBM(int intMagic)//CloseByMagic

{

int intOffset=0;

int Count = OTBM(intMagic);

while(OTBM(intMagic)>0 && Count > 0)

{

OrderSelect(intOffset,SELECT_BY_POS);

if(OrderMagicNumber()==intMagic)

{

if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),999,Red);

else if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),999,Orange);

Count--;

}

else {

intOffset++;

}

}

return(0);

}

Order Profit By Magic:

[PHP]double OPBM(int intMagic)//OrderProfitByMagic

{

double dblProfit=0;

int intPOS=0;

bool boolTerm=false;

while(boolTerm==false)

{

if(OrderSelect(intPOS,SELECT_BY_POS))

{

if(OrderMagicNumber()==intMagic) dblProfit=dblProfit+OrderProfit();

intPOS++;

}

else

boolTerm=true;

}

return(dblProfit);

}

Spero che aiuti.

 
luxinterior:
Una MA su qualsiasi grafico è solo una versione superiore/inferiore di una MA su un timeframe superiore/inferiore. Per esempio, se metti una 60MA su un grafico a 5 minuti, ma vuoi vedere come appare su un grafico a ore, devi solo moltiplicare 60 per 12 (intervalli di 5 minuti in un'ora). Quindi una 720 MA su un grafico orario è la stessa di una 60 MA su un grafico a 5 minuti.

Ha senso?

Lux

Ha assolutamente senso. Come vedrai un M5 10MA su un grafico H1?

10/12=0.84. Puoi mettere una MA di 0,84 su un grafico H1? No.

Funziona nell'altro modo però - H1 10MA = M5 120MA.

Quindi la mia domanda è: come faccio a vedere un incrocio di 5MA su un timeframe superiore come H4.

Grazie.

 
 

Loop for in MQL4

Mentre leggevo il corso MQL4 di Coders' Guru mi sono imbattuto in questa parte sul ciclo 'for' nella lezione 5 che mi ha confuso. Dice che ci può essere una sola espressione di test. Ma gli esempi mostrati contengono 2 espressioni di test.

int i;

int j;

for(i=0,j=0;i<15,i<;i++,j++)

Stampa(i);

int i;

for(i=15;i>0,i<;i--)

Stampa(i);

Qualcuno potrebbe gentilmente illuminarmi?

Grazie.