
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
c'è solo un contesto di trading per tutti gli EA. la soluzione corretta è quella di costruire il proprio sistema di semafori sulle variabili globali.
Ho eseguito 4 EAs su 4 minuti. in 10 minuti l'errore 139 si è verificato 7 volte
c'è solo un contesto di trading per tutti gli EA. la soluzione corretta è quella di costruire il proprio sistema di semafori su variabili globali.
Ho eseguito 4 EAs su 4 min. in 10 min. 7 volte errore 139
Potreste dirmi, almeno in termini generali, quale dovrebbe essere questo sistema di semafori?
1. In particolare, come dovrebbe essere fatto uno scambio per non interferire con gli altri.
2. Scivolamenti, controlli, timeout (che sono stati promessi essere assenti in MT multithreaded, ma andiamo)
E infine. Non prenderlo come un rimprovero. Hai un libro di testo. In esso l'esperto è dato. Mostrami quei semafori lì.
Ecco il mio esperto. Semplice come i pantaloni per un rublo e venti. Cambia una posizione ogni ora. Se ti importa davvero dei trader e dei profitti dei broker (non so la gente, ma io voglio prima ottenere un EA stabile e funzionante, e poi passare dalla demo alla reale), allora per favore, sull'esempio di questo mio EA, mostrami come dovrei farlo bene.
Sinceramente,
Quark
P.S. La questione dell'origine degli errori 2, 6, 138 e 4109, che a volte appaiono, rimane aperta.
Ho letto il thread sulla lingua inglese. Già... Questi ragazzi devono imparare urgentemente il russo.
Non è simile, è lo stesso problema. È vero, non hanno ancora gli errori 2, 6, 138 e 4109. Parlavano solo di 139.
Non vedo il senso di IsTradeAllowed, ad essere onesti. Slava stesso ha spiegato come dieci Expert Advisors sono autorizzati ad usare questa funzione e poi improvvisamente iniziano a fare trading e tutti tranne il primo rimangono delusi.
Sarebbe molto meglio mettere in coda le richieste dove si accumulano, vivono per un po' di tempo e vengono eseguite o cancellate. Ma tutto questo è un sogno.
Piuttosto, dovremmo creare una variabile globale nTrading, per esempio, e memorizzare lì il nome dell'Expert Advisor. E cosa dovrebbero fare gli altri EA? Torna a MT3 con i suoi ordini pendenti O ci sono altre idee?
A proposito, possiamo fare a meno della variabile globale, qualcosa come
dove Buy() e Sell() restituiscono OP_BUY / OP_SELL in caso di fallimento e -1 in caso di successo.
Gli svantaggi sono ovvi - il broker riceverà dieci ordini da aprire (chiudere) invece di uno. Se è automatico, tutto va bene. Se è un umano - si offenderà. Peggio ancora, se l'automa e l'uomo agiscono secondo una logica diversa. Per esempio, un automa non ha una coda (come ci ha spiegato Slava, un filo, e gli ordini competono invece di formare una coda), e un umano sì. Poi il trader inizia a fare trading sul reale, e non capirà nemmeno perché, perché gli è stato assicurato (a me - al seminario-presentazione in Alpari) che non c'è differenza tra demo e reale.
La seconda opzione - ad ogni esperto e valuta viene assegnato il proprio Mn, in modo che la combinazione Expert Advisor + valuta sia unica. Poi scriviamo il codice in modo tale che l'EA con IM1 negozierà nel primo secondo, con IM7 - nel settimo secondo, ecc. dopo l'apertura della barra. Questo darà al sistema un secondo per scambiare.
Domanda a Slava - è sufficiente un secondo per evitare il problema?
Gli svantaggi sono ovvi, gli scalper - pipser ve ne parleranno :)
Cari sviluppatori (e tutti quanti). Grazie per i chiarimenti. Ci sono ancora alcune domande senza risposta in questo e nei post precedenti. In attesa di una risposta.
Quark
se fare una funzione per impostare il valore di una variabile globale a condizione che questa variabile abbia un certo valore, in modo che non ci sia un costrutto
allora sarà affidabile al 100%
qualcosa come
No. Gli arresti vengono eseguiti sul server.
E riguardo alla coda - ho avuto un'idea per fare un EA che esegue gli ordini scritti in un file. E tutti gli altri esperti scrivono semplicemente gli ordini in questo file.
Ma non è molto facile per me (nel senso di implementazione competente)... Ma è possibile provare. Per sforzo comune =))
Questo è il passaggio che non ho capito:
if(GlobalVariableGet(SemaphoreName)==0.0)
{
GlobalVariableSet(SemaphoreName,1.0);
bSemaphored=true;
break;
}
Ora la logica di questo caso. Scusa se ti tormento, ma...
Se ho capito bene, siamo seduti in un ciclo while finché non riusciamo a impostare il semaforo. Giusto? Poi scambiamo, sapendo che nessuno scambia tranne noi. Poi restituiamo il semaforo al suo stato originale.
Domanda: come funziona while(!IsStopped())? ? Pensavo fosse un controllo per Permettere il Live Trading.
Domanda: questi while e sleep non causeranno dei lag nel sistema?
Domanda: Sleep e semaforo saranno processati correttamente in modalità test?
Ancora un po' di logica. Tra l'impostazione e la rimozione del semaforo abbiamo due (massimo) possibilità di gestire gli ordini. Prima Buy() o Sell() e poi, sotto, CloseOrder(). Queste due "attività" non saranno in concorrenza tra loro, anche se all'interno dell'EA, come se ci fossero due Expert Advisors? O il processo è garantito essere lineare e non raggiungerà CloseOrder() fino al ritorno di Buy()?
Grazie in anticipo.
Quark
No. Gli stop sono gestiti sul server. e nel nostro caso c'è concorrenza per il flusso di trading esperto del cliente
Mi sono espresso male. Se OrderSend(OP_BUYSTOP... anche circondarlo con del codice che imposta e rimuove i semafori? Domanda sciocca. Certo, dovresti.
Rielaborato le funzioni commerciali (inserito nella mia libreria) e collegato ad un altro euram - m15. Meijic, naturalmente, è stato cambiato.
Ti dirò cosa ho più tardi in serata ;)