Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1132
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
Da qualche parte nella guida, gli sviluppatori hanno detto che nessun ordinamento è garantito.
C'è sempre un'ordinazione sul biglietto. Il biglietto di un ordine successivo non sarà mai più piccolo di quello di un ordine precedente (per tempo di apertura).
E se cerchiamo tra gli ordini pendenti, allora solo in ordine - l'ordine con numero 0 - è l'ordine più vecchio, e l'ordine con numero OrdersTotal()-1 sarà l'ordine più recente (di nuovo, per tempo aperto), senza tener conto del tipo.
Nella storia degli ordini chiusi, dipende ancora dall'ordinamento nella scheda storia della finestra del terminale.
Ho dovuto cercarlo. Non l'ho trovato in MQL5 Reference, ma l'ho trovato in OrderSelect Reference per MQL4:
"Quando si usa il parametro SELECT_BY_POS, le informazioni sono restituite nell'ordine in cui sono state ricevute dal server commerciale. Non è garantito lo smistamento dell'elenco degli ordini ricevuti".
In realtà, controllo sistematicamente se le liste che uso hanno l'ordinamento per numero di biglietto. Non ci sono stati casi di assenza. Ma non si può nemmeno discutere con il riferimento, non c'è discussione. È giusto che sia così...
Ho dovuto cercarlo. Non l'ho trovato in MQL5 Reference, ma l'ho trovato in OrderSelect Reference per MQL4:
"Quando si usa il parametro SELECT_BY_POS, le informazioni sono restituite nell'ordine in cui sono state ricevute dal server commerciale. Non è garantito lo smistamento dell'elenco degli ordini ricevuti".
In realtà, controllo sistematicamente se le liste che uso hanno l'ordinamento per numero di biglietto. Non ci sono stati casi di assenza. Ma non si può nemmeno discutere con il riferimento, non c'è discussione. È giusto che sia così...
Cosa vuol dire "nessun ordinamento"? Ordina per biglietto - ci sarà sempre un ordine e non c'è contraddizione con la documentazione, si parla di ordinare per numero di biglietto, non per biglietto, sono cose diverse.
Esegui questo codice e leggi il log
void OnTick()
{
//--
if(flag)
{
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
Print(i," = ",OrderOpenTime());
}
}
flag=false;
}
//-
}
Un altro problema che ho incontrato! Non giudicare, ho studiato la lingua per 2-3 settimane, forse sono solo stupida!
Il compito dell'Expert Advisor è quello di notificare al trader via e-mail ogni 4 ore, se il margine libero sul conto ha aggiunto un certo valore.
Nell'oggetto del messaggio devi scrivere il nome del broker e la coppia scambiata, e nel corpo del messaggio "Pericolo! Il drawdown è oltre il limite. Prendete le misure necessarie".
Il compilatore non funziona bene, non sono bravo in inglese e non riesco a capire qual è l'errore!
double Sag;
void OnTick()
{
Sag = NormalizeDouble(100-100*(AccountInfoDouble(ACCOUNT_FREEMARGIN)/AccountInfoDouble(ACCOUNT_BALANCE)), 1); //находим процент просадки и округляем до 1 знака
if(Sag > MessageMail && iVolume(NULL,PERIOD_H4,0)<3) //если просадка больше заданного и начата новая свеча на 4ч таймфрейме
{
Alert(Symbol(), ": Просадка = ", Sag, " % ", " > ", MessageMail, " % "); //вывести предупреждение в терминале
//Сюда нужно вставить команду SendMail для отправки сообщения, а что и как не понятно
// пробовал bool SendMail( AccountInfoString(ACCOUNT_COMPANY)|Symbol, "Опасность! Просадка привысила допустимое значение. Примите необходимые меры")
//что то не выходит
}
}
PS: Forse in generale c'è una soluzione più semplice per questo tipo di problema, ma finora la vedo solo così)
Un altro problema che ho incontrato! Non giudicare, ho studiato la lingua per 2-3 settimane, forse sono solo stupida!
Il compito dell'Expert Advisor è quello di notificare al trader via e-mail ogni 4 ore, se il margine libero sul conto ha aggiunto un certo valore.
Nell'oggetto del messaggio devi scrivere il nome del broker e la coppia scambiata, e nel corpo del messaggio "Pericolo! Il drawdown è oltre il limite. Prendete le misure necessarie".
Il compilatore si lamenta, non sono bravo in inglese e non riesco a capire qual è l'errore!
double Sag;
void OnTick()
{
Sag = NormalizeDouble(100-100*(AccountInfoDouble(ACCOUNT_FREEMARGIN)/AccountInfoDouble(ACCOUNT_BALANCE)), 1); //находим процент просадки и округляем до 1 знака
if(Sag > MessageMail && iVolume(NULL,PERIOD_H4,0)<3) //если просадка больше заданного и начата новая свеча на 4ч таймфрейме
{
Alert(Symbol(), ": Просадка = ", Sag, " % ", " > ", MessageMail, " % "); //вывести предупреждение в терминале
//Сюда нужно вставить команду SendMail для отправки сообщения, а что и как не понятно
// пробовал bool SendMail( AccountInfoString(ACCOUNT_COMPANY)|Symbol, "Опасность! Просадка привысила допустимое значение. Примите необходимые меры")
//что то не выходит
}
}
PS: Forse in generale c'è una soluzione più semplice per un tale problema, ma finora la vedo solo così)
Non so di cosa si tratti.
Quali sono gli errori del compilatore
prıvet.podjalujte pojalusta pozwala perché su demo schete ne mogu otkrıt zdelkı