Come codificare? - pagina 120

 
denis68:
matrixebiz cosa intendi per rimuovere queste due righe; e come faccio, non riesco ad entrare nel codice dell'indicatore AC che ho provato,

Apri Accelerator.mq4 in MetaEditor (è nella tua cartella Indicatori) e metti // davanti a quelle due linee, poi salva con un nuovo nome AcceleratorMod.mq4 e clicca su compile.

File:
 
hiachiever:
No, non è corretto.

Nel ciclo for si parte da 6 e si decrementa fino a 1. Questo significa che nel ciclo finale l'esecuzione del ciclo for effettua il controllo "if (i == 1) qqeacross = True;". Il risultato finale è che l'output sarà vero se qqeacross si è verificato.

L'unico problema che questo può presentare è se qqeacross è stato impostato a true in un looop precedente. Per superare questo problema dovreste avere qqeacross = false; prima del ciclo for. In questo modo puoi assicurarti che se qqeacross = true, allora è stato impostato dal ciclo appena completato.

Grazie,

hiachiever

Quindi anche se dice "if (i == 1) qqeacross = True;" e poi i=4 (a causa del conto alla rovescia), qqeacross sarà ancora = True?

 

Grazie hiachiever!

hiachiever:
Il modo per farlo è creare una vriabile in ambito globale (cioè prima di init)

ad esempio

int BarCount;

int init ()

Poi nel tuo codice di stop loss usa il seguente:

se (BarCount<Bars)

{

SL=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,StopLossBars,0));

StopLossBars++;

BarCount=Bars;

}

Questo incrementerà StopLossBars di 1 ad ogni nuova barra.

L'unica altra aggiunta al tuo codice sarebbe quella di resettare 'StopLossBars' al suo valore di default originale quando viene aperta una nuova operazione.

Grazie,

Hiachiever

Grazie, hiachiever, sei stato molto gentile ad aiutarmi anche se vorrei chiederti un altro piccolo favore.

Penso di aver capito come funziona il tuo pezzo di codice e sono sicuro di poterlo copiare nel mio EA . Però non sono sicuro di come resettare le StopLossBars al loro default. Questo è il codice alla fine dell'EA per andare lungo o corto:

void goLong()

{

int ticket = OrderSend(Symbol(),OP_BUY,GetLots(100),Ask,maxSlippage,0,0,"Long",MagicNumber,0,Green);

if (screenshots) WindowScreenShot(Symbol()+Period()+"_"+Hour()+Minute()+"_.gif",1024,768);

if (showAlerts) Alert(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Long");

Print(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Long");

}

void goShort()

{

int ticket = OrderSend(Symbol(),OP_SELL,GetLots(100),Bid,maxSlippage,0,0,"Short",MagicNumber,0,Red);

if (screenshots) WindowScreenShot(Symbol()+Period()+"_"+Hour()+Minute()+"_.gif",1024,768);

if (showAlerts) Alert(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Short");

Print(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Short");

}

double stopLoss(int ordertype)

Potresti essere così gentile da aiutarmi con del codice per resettare le StopLossBars per favore?

Grazie ancora.

 

matrixebiz ho fatto che ora non posso compilare il mio ea quando ho aggiunto le seguenti linee al mio ea

double ac1 = iCustom(NULL, 0, "AcceleratorMod", 1, 1);

double ac2 = iCustom(NULL, 0, "AcceleratorMod", 2, 1);

double ac11 = iCustom(NULL, 0, "AcceleratorMod", 1, 2);

double ac22 = iCustom(NULL, 0, "AcceleratorMod", 2, 2);

bool acbuy = ac2==0 && ac11==0; // Il rosso cambia in Lime

bool acsell = ac1==0 && ac22==0; // Lime cambia in Red

ottengo 12 errori: Variabile AC non definita:

e vorrei ringraziarvi per l'aiuto

 

Suppongo che StopLossBars sia una variabile globale che viene impostata tramite gli input dell'utente, giusto?

Beh, quello che farei è qualcosa del genere.

Fai in modo che la variabile di input dell'utente sia qualcosa come gStopLossBars, poi nella tua funzione init assegnala alla tua variabile locale come...

StopLossBars = gStopLossBars;

Poi usate semplicemente la stessa assegnazione nelle vostre funzioni di acquisto e vendita per resettare StopLossBars.

Ha senso?

Spero che sia d'aiuto.

Lux

 

Ac+ao+psar

Ciao a tutti,

Qualcuno può combinare AC+AO+PSAR per diventare un nuovo indicatore con allarme/email? Per favore PM me. Grazie a voi

 
luxinterior:
Suppongo che StopLossBars sia una variabile globale che viene impostata tramite gli input dell'utente, giusto?

Beh, quello che farei è qualcosa del genere.

Fai in modo che la variabile di input dell'utente sia qualcosa come gStopLossBars, poi nella tua funzione init assegnala alla tua variabile locale come...

StopLossBars = gStopLossBars;

Poi usate semplicemente la stessa assegnazione nelle vostre funzioni di acquisto e vendita per resettare StopLossBars.

Ha senso?

Spero sia d'aiuto.

Lux

Ha perfettamente senso. Grazie mille.

 

Come posso rilevare quando inizia la nuova candela?

per favore qualcuno mi dia qualche consiglio come posso creare un EA che faccia un ordine pendente quando la nuova barra inizia (TF giornaliero)?

grazie

 
:: ciao! controlla il codice all'interno di questo indicatore... (solo per la tua apertura, non è un EA)
tcl:
per favore qualcuno mi dà un consiglio su come posso creare un EA che faccia un ordine pendente all'inizio della nuova barra (TF giornaliero)? grazie
 

Qualcuno può impedire che questo si ripeta e si ripeta?

void BEM ()

{

int pips;

for (int k=0; k<OrdersTotal ();k++)

{

OrderSelect(k, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY && OrderSymbol()== Symbol () && OrderMagicNumber()== Magic)

{

pips = (Bid - OrderOpenPrice())/Point;

if ((pips >= BE) && (OrderStopLoss() < OrderOpenPrice())

{

OrderModify (OrderTicket (), OrderOpenPrice (),OrderOpenPrice ()+ 12*Point, OrderTakeProfit (), 0, LightBlue);

}

}

if(OrderType()==OP_SELL && OrderSymbol()== Symbol () && OrderMagicNumber()== Magic)

{

pips = (OrderOpenPrice() - Ask)/Point;

se ((pips >= BE) && (OrderStopLoss() > OrderOpenPrice())

{

OrderModify (OrderTicket (), OrderOpenPrice (),OrderOpenPrice ()- 12*Point, OrderTakeProfit (), 0, Pink);

}

}

}

}