Come codificare? - pagina 210

 

Molte grazie!!! cockeyedcowboy, è stato davvero fantastico!

Ora il messaggio di errore è sparito!

Ma il 2° indicatore non viene disegnato e non so perché

Buffer_Ma=iMAOnArray(Buffer_Mom,0,Periode_MA_Momentum,0,MODE_SMA,i);

 

Avete un problema con il secondo buffer perché non ha dati per i calcoli.

Prova a calcolare TUTTI gli elementi in Buffer_Mom, poi in Buffer_Ma.

Esempio:

void start()

{

int counted_bars=IndicatorCounted();

int limit=Bars-counted_bars;

if(counted_bars>0) limit++;

for(int i=0; i<limit; i++)

{

Buffer_Mom=iMomentum(NULL,Timeframe_Momentum,Periode_Momentum,PRICE_CLOSE,i);

}

for( i=0; i<limit; i++)

{

Buffer_Ma=iMAOnArray(Buffer_Mom,0,Periode_MA_Momentum,0,MODE_SMA,i);

}

return(0);

}

Buona fortuna.

 

Trovare l'OHLC di una barra specifica

Qualcuno può dirmi come faccio a trovare il prezzo di chiusura di una barra specifica usando il codice MQL? Posso fare riferimento a una barra in base alla sua ora?

Cioè: closing_price_of_bar = Close("04:59:00 AM") ... se solo fosse così facile!

Grazie, grazie...

 

Salve gente!

ok ho un altro grande problema...

come codificare questa condizione:

entrare long o short solo la prima volta

(quindi se ho molti segnali long che seguono l'ea entra solo la prima volta)

pagherò chiunque possa aiutarmi su questo

Questo è il mio semplice codice per la condizione di acquisto:

//Buy

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}
 
Sadly:
Qualcuno può dirmi come faccio a trovare il prezzo di chiusura di una specifica barra usando il codice MQL? Posso fare riferimento a una barra in base alla sua ora?

cioè: closing_price_of_bar = Close("04:59:00 AM") ... se solo fosse così facile!

Grazie a tutti

Provate questo:

closing_price_of_bar = iClose(Symbol(),PERIOD_M1,iBarShift(Symbol(),PERIOD_M1,StrToTime("04:59"));

 

Comprare o vendere

Ciao a tutti,

Ho il Buy EA e il Sell EA che sono sempre aperti in più di una posizione. Vorrei ricevere un aiuto su come cambiare o modificare il codice che permette solo 1(una) posizione di acquisto e 1(una) posizione di vendita e in 1(un) conto.

Lo SL e il TP useranno il Price Target, cioè se il prezzo di acquisto ha raggiunto il Price Target, si chiuderà la posizione. Lo stesso vale per il prezzo di vendita.

Apprezzo l'aiuto degli esperti di codice di questo forum.

Grazie.

=s21=

File:
opensell.mq4  2 kb
 

Comprare e vendere

Oooops...

Ecco l'EA di acquisto.

File:
openbuy.mq4  2 kb
 

Ciao, se hai bisogno di avere un solo ordine aperto, puoi semplicemente aggiungere la prossima condizione: If (OrdersTotal()==0).

Quindi le tue regole per gli ordini BUY saranno qualcosa del genere:

if (Order == SIGNAL_BUY && (OrdersTotal==0) && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))

[/CODE]

So you will not get second-third-... orders opened until you current order open.

dr.house7:
hy folks !

ok i have another big problem...

how to code this condition :

enter long or short only first time

(so if i have many following long signal ea enter only at first time)

i'll pay everyone could help me on this

this is my simple code for buy condition:

[CODE]

//Buy

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}
 
Roger09:
Provate questo: closing_price_of_bar = iClose(Symbol(),PERIOD_M1,iBarShift(Symbol(),PERIOD_M1,StrToTime("04:59"));

Fab! Ho dovuto aggiungere 1 parentesi di chiusura in più per evitare che l'interprete si lamentasse di un errore, ma ha funzionato benissimo.

Grazie, Roger09

 
Avalanche2k:
Ciao, se hai bisogno di avere un solo ordine aperto, puoi semplicemente aggiungere la prossima condizione: If (OrdersTotal()==0).

Quindi le vostre regole per gli ordini BUY saranno qualcosa del genere:

if (Order == SIGNAL_BUY && (OrdersTotal==0) && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))

Così non otterrai il secondo-terzo-... ordine aperto fino all'apertura dell'ordine corrente.

grazie Avalanche,

ma non è una soluzione per me, perché ho un TP, non aspetto fino a condizione opposta

Altre idee? PM me ti pagherò