[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 477
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
demlin:
Еще вопрос: какой функцией можно вытащить стоимость одного пункта инструмента?
https://docs.mql4.com/ru/constants/marketinfo
MarketInfo(Symbol(), MODE_TICKVALUE);
Per favore, ditemi quale codice dovrebbe essere scritto nell'EA per fare in modo che l'EA scambi solo una volta all'ora
Per esempio, l'EA si è attivato, un ordine è aperto (non mi interessa oltre), vorrei che l'ordine non si aprisse sulla barra corrente su un timeframe orario
tutto si assomiglia:
int hh;
int CurrentHour;
CurrentHour=TimeHour(TimeCurrent());
se (CurrentHour!=hh)
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point);
hh=TimeHour(TimeCurrent());
}
ma ho innumerevoli ordini aperti
Ciao a tutti!
Per favore, ditemi cosa significa questo:
Ordine di acquisto ...... fallito [timeout del trade]
Sono specificamente interessato a che tipo di timeout è.
https://www.mql5.com/ru/forum/112612
Questa è una risposta del server scaduta --- se l'affare si è aperto o no. E non c'è garanzia che il commercio non si sia aperto.
Quindi, devo controllare se l'ordine è aperto in un minuto e poi continuare il trading.
rlx:
deve essere impostato prima di start() e init()
int hh = 0;
int init()
{
return(0);
}
int start()
{
//-------------------------------------------------
int countorder;
countorder=OrdersTotal();
if (countorder==0)
{
Alert ("nessun ordine aperto");
}else
{
Alert ("hanno ordini aperti");
}
int hh;
int CurrentHour;
CurrentHour=TimeHour(TimeCurrent());
if ((CurrentHour!=h)&&(countorder==0))
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point);
hh=TimeHour(TimeCurrent());
}
//-------------------------------------------------
return(0);
}
int deinit()
{
return(0);
}
Ho fatto come hai detto, nessun effetto, ho aggiunto il conteggio degli ordini aperti, ora apre gli ordini subito dopo la chiusura
L'ho aggirato tramite OrderCloseTime() - ora sembra funzionare
int countorder;
countorder=OrdersTotal();
if (countorder==0)
{
Alert ("no open orders");
}else
{
Alert ("have open orders");
}
int hh;
int CurrentHour;
int LastOrderCloseTime;
CurrentHour=TimeHour(TimeCurrent());
OrderSelect(HistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);
hh=TimeHour(OrderCloseTime());
se ((CurrentHour!=hh)&&(countorder==0))
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point);
}
https://www.mql5.com/ru/forum/112612
Questo è il periodo di attesa per il server per rispondere --- se un trade è stato aperto o no. E non c'è garanzia che l'affare non si sia aperto.
Pertanto, come raccomandato dagli sviluppatori, controllate dopo un minuto se un ordine è stato aperto e solo allora procedete.
Tuttavia, non voglio essere una spina nel fianco.
Spiegatemi come si apre un ordine se OrderTotal() è zero.
Grazie.
Qui sotto c'è la figura con le parentesi che limitano il blocco di codice che viene eseguito sotto la condizione
Le operazioni OrderSend() non sono interessate da questa condizione.
come ottenere un numero di bar, nel "futuro" :)
iBarShift() funziona bene per ottenere il numero di barra dalla storia, ma come otterreste il numero di barra per questo codice se spostate la linea a destra - oltre la barra zero?
come ottenere un numero di bar, nel "futuro" :)
iBarShift() funziona bene per ottenere il numero di barra dalla storia, ma come posso ottenere il numero di barra per questo codice se sposto la linea a destra - oltre la barra zero?
Si può ottenere un offset relativo a Time[0]
Si può ottenere un offset relativo a Time[0]
Grazie! Ora è tutto a posto!