Regole della struttura. Imparare a strutturare i programmi, esplorare le possibilità, gli errori, le soluzioni, ecc. - pagina 6
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
ZS. È un po' piccolo, perché non ne facciamo uno più globale?
Bene, tady prick (in termini generali) come colmare queste lacune tra i primi quattro. È tutto nelle DLL? :)
Nessuna DLL, MCL puro + winepi per la gestione degli eventi .
A questo proposito, dobbiamo trovare il tempo per descrivere tutto magnificamente e fare un ottimo articolo. Posso lanciare un esempio o un'implementazione di pseudo-classi visive per MT4, ma temo che sarà difficile da digerire senza una descrizione dettagliata. L'essenza della creazione di un DOM (Data Object Module) per MT per analogia con JS: sono comunque molto simili. Per il seme - la funzione principale del cuore per così dire:
Hai un'offerta specifica?
C'è, e il compito è vivo, ma ho paura di pronunciarlo qui, posso in modo personale.
Al giorno d'oggi, nessun programmatore normale disegna diagrammi di flusso. Sono tutte sciocchezze teoriche pensate per essere insegnate agli scolari, ma non per lavorare in progetti reali.
Nessuna DLL, puro MCL + Vinapi per l'elaborazione degli eventi.
Riguardo a questo, ho bisogno di trovare il tempo per descrivere tutto bene e fare un grande articolo. Posso lanciare un esempio o un'implementazione di pseudoclassi visiva per MT4, ma ho paura che sarà difficile da digerire senza una descrizione dettagliata. L'essenza è creare DOM (Data Object Module) per MT per analogia con JS - sono davvero simili. Per una prima volta - la funzione principale del cuore, per così dire:
(Sì, con uno swing. ))
DOM - è molto. Dammi almeno un paio di screenshot... O (se disponibile) qualche esempio compilato standalone, per sentirlo nel terminale. Ne hai uno?
(Con un botto. ))
DOM - è molto. Dammi almeno un paio di screenshot... O (se disponibile) qualche esempio compilato standalone, per sentirlo nel terminale. Ne hai uno?
Vogliamo fare un tentativo?
Niente.
1. Il pannello è dritto verso la coda. la strategia è primaria, se non si arano, il pannello è inutile e non serve a niente.
2. L'implementazione della parte di trading dipende dalla strategia, quindi non c'è niente da discutere nel quadro dell'assalto a una strategia ipotetica. L'attuazione della strategia, stranamente, dipende anche dalla strategia :)
3. Fare immediatamente un trigger per disabilitare la strategia contabilizzata nel blocco di trading. E disabilitare l'immissione di nuovi ordini.
4. Pannello. Cos'è un pannello: una routine.
Per quanto riguarda la scrittura del TS, va più o meno così:
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Discussione sul trading ad alta frequenza su MT5
hrenfx, 2013.02.06 14:30
Простой и довольно эффективной логикой написания боевого робота является следующая схема:
- робот делится на две части: тестер и синхронизатор.
- тестер на основании ранней истории и только что пришедшей выдает текущее состоянии торговой стратегии.
- синхронизатор "переносит" текущие тестерные открытые позиции и приказы на реал.
Это чем-то напиминает копирование торговых сигналов с одного счета на другой. Только вместо примитивного копировщика работает грамотный синхронизатор.
К сожалению, правильную логику синхронизатора посмотреть где-либо практически невозможно, поэтому озадачевшемуся придется подумать самому - очень полезно.
Но и такая логика построения боевого-робота далеко не совершенна, т.к. встает дилема первичности курицы и яйца. Поэтому применяются более сложные свои схемы, основанные на опыте автора-алготрейдера.
Все эти действия совершаются только ради одного - адекватной настройки стратегии. Какой бы совершенной не была схема, все равно одинаковые боевые роботы на разных счетах одного и того же ECN/STP брокера покажут расхождения. И помимо поиска рыночных закономерностей, важной задачей для алготрейдера также является уменьшение этих расхождений. Как уже говорилось выше, чем ближе брокер к возможстям HFT, тем меньше расхождения.
Если вникнуть в написанное, должно прийти понимание, что результаты работы стратегии на реале являются также своего рода тестером. И выводы на основании этой торговли также должны быть вероятностными.
Niente.
1. Il pannello è dritto verso la coda. la strategia è primaria, se non si arano, il pannello è inutile e non serve a niente.
2. L'implementazione della parte di trading dipende dalla strategia, quindi non c'è niente da discutere nel quadro di un ipotetico assalto alla strategia. L'attuazione della strategia, stranamente, dipende anche dalla strategia :)
3. Fare immediatamente un trigger per disabilitare la strategia contabilizzata nel blocco di trading. E disabilitare l'immissione di nuovi ordini.
4. Pannello. Che pannello - una routine.
Bene, qui abbiamo subito qualcosa di cui discutere. :))
Non per discutere, diciamo, ma per indicare le possibilità:
1. Pannello dritto alla coda. la strategia è primaria, se non si ara, il pannello è inutile e non serve a niente.
Per ora, sono d'accordo, ma con un avvertimento: il programma dovrebbe essere immediatamente orientato a lavorare in due modalità, quindi la strategia / parte di trading dovrebbe essere prescritto in una sola volta, tenendo conto della presenza / assenza di controllo dal pannello e con / senza visualizzazione delle informazioni sul pannello.
L'intera parte di trading è scritta in una classe (CMarketDriver), che implementa completamente il posizionamento degli ordini, il monitoraggio delle posizioni, le requote e altre cose relative al trading. Per tutti i simboli in una volta sola. La parte della strategia inserisce solo le posizioni di mercato raccomandate per i simboli, cioè riempie un array di strutture in formato {string Instrument; double Position} e richiede la sincronizzazione con il server: MD.Synchronize(PositionArray). Questo è tutto. Per ora commercia solo con ordini di mercato, ma una versione che commercia con limiti impostati all'interno dello spread (per ridurre i costi di scambio) è in arrivo. Per il trading takeprofits/stops non usare, ma MarketDriver può mettere stop protettivi in caso di lunga perdita di connessione al server (i parametri di stop sono specificati una volta nelle impostazioni del driver). A proposito, molto successo, quasi nessun problema soluzione strutturata. Per il test di idee strategiche nel tester - nessun problema con il trading, tutta l'attenzione può essere dedicata alla strategia - tutto il trading è stato a lungo debuggato e incapsulato nel driver trading.
2............., quindi non c'è niente da discutere nel quadro di un ipotetico assalto strategico. L'attuazione della strategia, stranamente, dipende anche dalla strategia :)
Per esempio, ho una nuova idea - commercio sull'intersezione di una coppia di tergicristalli. In questo caso, il problema è ristrutturare il programma in modo che quando lo si sviluppa (per esempio aggiungendo un terzo tergicristallo), non dovrò cambiare la maggior parte del codice. Poi il programma può essere sviluppato verso la multivaluta (per semplicità del progetto, supponiamo che il commercio per simboli sia strettamente indipendente e le interrelazioni non siano considerate). Come organizzare la parte strategica, anticipando tale sviluppo?
3. Impostare immediatamente il trigger per disabilitare la strategia presa in considerazione nel blocco di trading. E disabilitare l'inserimento di nuovi ordini.
Ma non è necessario, dopo tutto non ci aspettiamo molti problemi qui.
4. Pannello. Beh, il pannello è una fatica.
Ma l'organizzazione della comunicazione della strategia con il pannello è un compito abbastanza creativo, specialmente se cerchiamo di sviluppare un modello più o meno universale per tale pannello che può essere facilmente adattato a diversi Expert Advisors e facilmente sviluppato man mano che il progetto cresce/sviluppa.
Non è necessario, non dipende quasi mai da me.
Con me dipende quasi sempre. Soprattutto quando si lavora con ECN. Voglio dire, tutto non è fatto al livello più basso, naturalmente, ma solo attraverso i gusci delle funzioni commerciali standard.
Con me dipende quasi sempre. Soprattutto quando si lavora con ECN. Voglio dire, tutto non è fatto al livello più basso, naturalmente, ma solo attraverso i gusci delle funzioni commerciali standard.
Non so come andrà a finire il mio rapporto con l'ECN (aprirò un conto con RoboForex), ma farò del mio meglio per mantenere questo disaccoppiamento strutturale (strategia/guida del mercato). È così conveniente, che sono persino pronto per alcuni costi di trading moderati (come il profitto perso).
Guardate come appare semplice il ciclo principale dell'EA alla fine:
Controlla la versione semplificata del tester e vedi se ti piace lo schema. Se è così, mettilo a punto in base alle tue esigenze e usalo a tuo vantaggio.