Trading con Python

 

Sto chiedendo a qualcuno di suggerire una semplice (consapevolmente perdente, non è questo il punto) strategia di trading.

Se il messaggio è sano, cioè, sarà più o meno chiaramente esposto ciò che deve essere fatto, implementare qui, in questo thread, commercio su questa strategia, in Python.

Guardando avanti )

 

Inizierò con un pezzo di codice, che può tornare utile (ho intenzione di lavorare con timeframe M5, eseguire calcoli e prendere una decisione una volta ogni 5 minuti):

importa datetime come dt


class date_time(dt.datetime):
   
    '''
    Класс описывает отсчёт даты и времени.
    Представляет собой расширение класса datetime библиотеки datetime. 
    '''
   
    @property
    def M5_view(self):
        minute = (self.minute//5)*5
        if minute < 10:
            _minute = '0'+str(minute)
        else:
            _minute = str(minute)
        return self.strftime('%Y%m%d%H')+_minute
   
    @property
    def nice_view(self):
        return self.strftime('%Y.%m.%d %H:%M:%S')
   
    def __str__(self):
        return self.M5_view
   
    def __repr__(self):
        return self.__str__()


Grazie a questa classe, sarà conveniente registrare ciò che sta accadendo.

Per esempio, scrivi qualcosa come questo

dt_stamp_read = ...
print('\n'+date_time.now().nice_view, '- начал работу, планирую прочитать файлы с ценами в {}'.format(dt_stamp_read.nice_view))

e ottenere un output come:

2021.12.11 22:41:23 - начал работу, планирую прочитать файлы с ценами в 2021.12.11 22:45:30
 

Anche tu ne avrai bisogno:

class Bar:
    
    '''
    Класс описывает бар, то есть структуру данных,
    удобную для описания изменения цен финансовых инструментов на интервалах времени.  
    '''
    
    def __init__(self, instrument, time_frame, time_close, price_open, price_low, price_high, price_close, pips_value):
        self.instrument = instrument
        self.time_frame = time_frame   
        self.time_close = time_close
        self.time_open = self.time_close - dt.timedelta(minutes=self.time_frame)
        self.price_open = price_open
        self.price_low = price_low
        self.price_high = price_high
        self.price_close = price_close
        self.w = pips_value
    
    def __str__(self):
        str1 = '(Bar: instrument={} time_frame={} time_open={} time_close={}\n'
        str2 = 'open={} low={} high={} close={} pips_value={})'
        return (str1+str2).format(self.instrument, self.time_frame, self.time_open.M5_view, self.time_close.M5_view,
                                  self.price_open, self.price_low, self.price_high, self.price_close, self.w)
    
    def __repr__(self):
        return self.__str__()

Il carattere qui non è monospaziato, quindi visivamente la formattazione è andata un po' fuori, ma non è questo il punto

 
E quale sarebbe il vantaggio rispetto a un'implementazione MQL?
 
Mikhael1983:


Si prega di inserire il codice correttamente: prima premere Codice, poi inserire il codice nella finestra pop-up.

 
Mi chiedo come sia il piano per testare il sistema di trading su python?
 
Aleksey Nikolayev #:
Mi chiedo come sia il piano per testare un sistema di trading in Python?

Cerca articoli usando la parolaPython.

 
Mikhael1983:

Sto chiedendo a qualcuno di suggerire una semplice (consapevolmente perdente, non è questo il punto) strategia di trading.

Se il messaggio è sano, cioè, sarà più o meno chiaramente esposto ciò che deve essere fatto, implementare qui, in questo thread, commercio su questa strategia, in Python.

Sto aspettando)

Riscrivi il MACD Expert Advisor standard che viene fornito con MT5. Sarà utile controllare in tutte le fasi.

Chiederò più specificamente sul modo previsto di test-ottimizzazione. È un tester scritto in proprio o un tester di terzi basato su Python? Integrazione con MQL5 attraverso file, socket, ecc.

 

Il trading con python è buono...

Ma python è buono per analizzare i dati, ma non per il trading.

Se si considera l'opzione MACD, su python:

- è facile caricare le citazioni;

- I dati MACD possono essere calcolati facilmente;

Poi su ogni nuova barra prendi una condizione, per esempio: valore MACD e linea di segnale, ripidità della linea lenta e veloce, movimento del prezzo lontano dalla linea lenta...

Eseguire la condizione attraverso la storia e mostrare le statistiche più/meno della formazione specificata per un certo periodo. Tutto il resto (aprire/chiudere/prendere trade) dovrebbe essere fatto in MQL.

Non c'è bisogno di inventare un tester - ne abbiamo uno già pronto.

In Python le quotazioni e gli indicatori sono memorizzati su SQLite. Connessione MQL-Python attraverso socket, file o database (socket è meglio).

Tutto...

 

Python - solo per l'analisi dei dati con la ricca capacità di visualizzare i risultati dell'analisi come grafici 2d(3d).

copy_rates_from non è sufficiente per un'analisi completa dei dati. Se fosse possibile estrarre i dati degli indicatori (compresi gli indicatori personalizzati), l'anello di analisi sarebbe chiuso.

E il trading via python, IMHO è una mossa di PR di MQL5.

 
Mikhael1983:

Implementerò questa strategia qui in questo thread in Python.

Hai dimenticato di aggiungere "aspetta tranquillamente il profitto")