Risposta

Ho molti terminali ed EA che lavorano sul mio VPS ma a volte SL+TP non sono impostati sull'ordine, perché?

24 risposte

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Visita il profilo

8 anni fa #114929

Ho molti terminali ed EA che lavorano sul mio VPS ma a volte SL+TP non sono impostati sull'ordine, perché?

 

È a causa del mio VPS che si blocca o c'è qualcosa di sbagliato nel codice mql4?, il mio VPS utilizza regolarmente CPU+MEMORIA a causa dei molti terminali e EA che lavorano,

forse per questo?

 

è molto raro, ma mi è successo già la terza volta...

 

 

è successo anche a qualcuno di voi? Grazie...

0

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Visita il profilo

8 anni fa #136121

No, ricevo l'errore 146 "Il contesto commerciale è occupato", nient'altro..,

 

ieri ho modificato il codice mql4 e ho aggiunto il comando per aspettare se il contesto è occupato, ma ho ancora lo stesso errore, BTW che l'errore si verifica solo sui conti DEMO con il conto live non sto ricevendo alcun errore che cosa mai..,

cosa potrebbe essere?

0

mikeyc

Cliente, bbp_partecipante, comunità, 877 risposte.

Visita il profilo

8 anni fa #136122

Il contesto commerciale occupato è dovuto a un terminale sovraccarico o al broker che impiega molto tempo per elaborare gli ordini.

 

Se il problema si ripresenta anche dopo un riavvio, cercherei un altro broker.

0

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Visita il profilo

8 anni fa #136124

Ho provato anche con gli stessi EA sul server Global Prime Demo, stessa merda..,

ma ho già modificato di nuovo il codice mql4, quindi vediamo cosa succederà in seguito,

Aggiornerò... e se ho risolto il problema posterò la soluzione,

 

grazie per la vostra partecipazione.

0

geektrader

Customer, bbp_participant, community, 522 replies.

Visita il profilo

8 anni fa #136155

Questo è molto semplice: non si devono MAI eseguire più di 8 EA per istanza MT4 se si vuole un'esecuzione affidabile degli ordini (cosa che molto probabilmente si vuole se si fa trading con denaro reale)! Si tratta di una delle tante limitazioni del terminale MT4 (alcuni anni fa c'era solo un thread per istanza MT4!) e non ha nulla a che fare con il vostro broker (@mikeyc: se il broker è sovraccarico non otterrete "trade context is busy" ma "trade timeout", anche se al giorno d'oggi non ho ancora visto uno dei broker seri mostrare questo errore).

Semplicemente perché in ogni terminale MT4 possono essere processate solo 8 operazioni d'ordine contemporaneamente (apertura di un nuovo ordine, modifica di uno esistente, chiusura di uno esistente) e non si può fare nulla al riguardo, dato che il terminale MT4 di merda è progettato in questo modo.

 

Sicuramente ci sono degli "hack" per aggirare questo problema e l'EA potrebbe semplicemente riprovare a modificare l'ordine se prima non è riuscito a causa di un contesto di negoziazione occupato oppure l'EA potrebbe controllare se il contesto di negoziazione è libero o meno e aspettare se non lo è prima di passare il prossimo comando per fare qualcosa con un ordine. Ma queste soluzioni non sono molto sicure né accettabili nel trading live, poiché ritardano sempre le cose in un modo o nell'altro. Se l'EA ritenta dopo un errore, il prezzo potrebbe essersi già spostato troppo in là. Soprattutto durante le notizie, il vostro ordine potrebbe non ricevere mai lo SL necessario perché si è già spostato oltre o al di sopra di esso e non può più essere impostato sul valore desiderato. Lo stesso vale per l'attesa che il contesto commerciale si liberi, anche questo costa molto tempo ed è altamente insicuro per questo motivo.

 

L'unica soluzione se volete fare trading dal vivo: eseguire solo 8 EA per istanza MT4! È così semplice e non c'è modo di aggirare alcun tipo di hack se si vuole un'esecuzione/modifica degli ordini affidabile e veloce per tutto il tempo. Se il vostro VPS è abbastanza veloce, come dite voi, non c'è problema. Personalmente ho 7 terminali MT4 in funzione, ognuno con 8 EA (non tutti sono SQ). Basta copiare la cartella MT4 esistente in una nuova e il gioco è fatto, hai la tua prossima istanza. L'unica cosa da tenere a mente è un'altra limitazione imposta dal terminale MT4 (sì, di nuovo!): è possibile eseguire solo 32 istanze MT4 per macchina. La numero 33 semplicemente non si avvia, anche se si è copiata di nuovo in un'altra directory. MQ ha introdotto questo sistema dopo l'arbitraggio della latenza da parte di BTN Lightning, che stava "fregando" questi poveri broker MT4 su larga scala facendo girare fino a 200 istanze MT4 su mega-server. Ho già provato a superare questa limitazione, ma non è facile dato che la MT4 stessa è racchiusa in una macchina virtuale tramite il metodo di protezione della copia Themida. Quindi, la conclusione è che il massimo di EA che potrete far girare in modo AFFIDABILE senza dover prendere un altro VPS è 32 x 8 = 256 EA.

 

P.S.: Se volete la soluzione inaffidabile (aspettare che il contesto di negoziazione si liberi), usate il mio codice (l'ho testato anche dal vivo e ho eseguito 50 EA in un'istanza MT4 con questo codice senza che nessun ordine abbia mai lanciato un errore di contesto di negoziazione non libero):

int CheckTradeContext()
{

uint WaitLimitTradeContext = 120; //secondi

    if (!IsTesting() &&!IsTradeAllowed() &&!IsStopped())
    {
        int ticks = GetTickCount();
        Print("Il contesto del trade è occupato! Aspettiamo che si liberi...");
        mentre (true)
        {
            RefreshRates();
            Print("In attesa che il contesto commerciale si liberi...");
            se (IsStopped())
            {
                Print("L'esperto è stato interrotto dall'utente!");
                return(-1);
            }
            se (GetTickCount() - ticks > 1000 * WaitLimitTradeContext)
            {
                Print("Il limite massimo di attesa di " + WaitLimitTradeContext + " secondi è stato superato!");
                return(-2);
            }
            if (IsTradeAllowed())
            {
                Print("Il contesto commerciale è diventato libero!");
                return(0);
            }
            Sleep(50);
        }
    }
    //Stampa("Il contesto commerciale è libero!");

    return(1);
}

Poi, prima di ogni invio / modifica / chiusura dell'ordine: if (CheckTradeContext() >= 0) ....


🚀 Unlock Your Edge in Automated Forex Strategy Development 🚀

Historical Forex Data Starting From 1987, 28 Pairs, M1, 99% Error-Free, Lifetime Free Updates

0

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Visita il profilo

8 anni fa #136171

Grazie geektrader,

Tuttavia ho già creato una funzione per questo:

void CheckIfBusy()
{
  if(!IsTesting())
  while(IsTradeContextBusy()){//Print("#ERROR!: Ordine ("+OrderType()+") - Ritardato.");
  Sleep(50);RefreshRates();}
}

ma il tuo è più sofisticato con un timer, ho già modificato tutti i miei EA con questa tua nuova funzione :),

grazie per il tempo dedicato a scrivere questo enorme post,

per quanto riguarda il coso degli 8 thread e il link dell'aggiornamento ufficiale delle meta-citazioni: https://forum.mql4.com/54431

quindi vi ringrazio ancora una volta per aver chiarito la questione e per aver aggiunto ulteriori informazioni sull'argomento!

Quindi, da quello che ho capito, non c'è alcun problema a far funzionare più istanze di MT4 sullo stesso conto di trading, basta impostare i MagicNumbers in modo diverso per tutti gli EA, ho capito bene?..,

E se gli EA sono molto attivi in una certa misura, dovrei dividere il portafoglio non in 8,8,8,8 ma in 4,4,4,4 EA sulla stessa istanza?

Grazie, aspetterò la tua risposta, amico.

0

geektrader

Customer, bbp_participant, community, 522 replies.

Visita il profilo

8 anni fa #136179

Mi fa piacere sapere che sei sulla strada per un contesto di non-busy-trade:) È davvero facile, non devi fare nulla di speciale, basta usare 8 EA per istanza MT4, configurandoli allo stesso modo come se fossero in un unico terminale (numero magico diverso, ecc.). È possibile eseguire un numero illimitato di connessioni al broker sullo stesso conto, senza problemi (sono possibili almeno 32 connessioni/terminali sullo stesso conto, questo è quanto ho testato). Se sono molto attivi non importa, ogni terminale MT4 può fare 8 operazioni di trading in parallelo, non importa quanto siano attivi gli EA, purché non si facciano più di 8 richieste contemporaneamente per terminale, funzionerà benissimo, anche se ogni EA invia un comando per 1ms:)


🚀 Unlock Your Edge in Automated Forex Strategy Development 🚀

Historical Forex Data Starting From 1987, 28 Pairs, M1, 99% Error-Free, Lifetime Free Updates

0

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Visita il profilo

8 anni fa #136180

Mi fa piacere sapere che sei sulla strada per un contesto di non-busy-trade:) È davvero facile, non devi fare nulla di speciale, basta usare 8 EA per istanza MT4, configurandoli allo stesso modo come se fossero in un unico terminale (numero magico diverso, ecc.). È possibile eseguire un numero illimitato di connessioni al broker sullo stesso conto, senza problemi (sono possibili almeno 32 connessioni/terminali sullo stesso conto, questo è quanto ho testato). Se sono molto attivi non importa, ogni terminale MT4 può fare 8 operazioni di trading in parallelo, non importa quanto siano attivi gli EA, purché non si facciano più di 8 richieste contemporaneamente per terminale, funzionerà benissimo, anche se ogni EA invia un comando per 1ms:)

 

Grazie ancora una volta geektrader :),

Ho 29 EA, quindi li ho distribuiti su 5 MT4, 6x6x6x6x5, sono EA attivi e operano quotidianamente, quindi per sicurezza ne ho messi solo 6 per terminale,

 

Grazie amico, questa è un'informazione molto critica, non sapevo di quella cosa delle 8 filettature, pensavo che fosse solo una per terminale.

Buona settimana e tanti pips verdi a voi! B)

0

geektrader

Customer, bbp_participant, community, 522 replies.

Visita il profilo

8 anni fa #136181

Sì, capisco, i miei EA operano ogni 15 minuti (modificando gli ordini pendenti - 8 alla volta ogni volta), va davvero bene se ne usi 8 per terminale, anche se sono "scalper pazzi", dato che ogni EA viene elaborato in serie solo nel linguaggio MQL4, con 8 EA non avrai mai un contesto di trading occupato - non c'è bisogno di sprecare risorse. Potete tranquillamente utilizzarne 8 per terminale.

 

Sì, in passato c'era solo un'operazione per terminale, ma a quel punto c'erano un sacco di terminali in funzione. MT4 fa schifo!

 

Pips verdi anche a te:)


🚀 Unlock Your Edge in Automated Forex Strategy Development 🚀

Historical Forex Data Starting From 1987, 28 Pairs, M1, 99% Error-Free, Lifetime Free Updates

0

Stai visualizzando 8 risposte - dal 16 al 23 (di 23 totali)

1 2