MetaTrader 5 Python User Group - Come usare Python in Metatrader - pagina 37

 
Renat Fatkhullin:

Dalla versione 5.0.15 la libreria python funziona in un nuovo formato che non è compatibile con il vecchio formato e richiede l'ultima beta del terminale.

Pubblicheremo presto documentazione ed esempi aggiornati

È possibile scaricare temporaneamente la vecchia versione della libreria?

 
Dmitri Custurov:

È possibile scaricare temporaneamente una vecchia versione della libreria?

https://pypi.org/project/MetaTrader5/5.0.11/#files

MetaTrader5
MetaTrader5
  • 2020.01.24
  • pypi.org
Download the file for your platform. If you're not sure which to choose, learn more about installing packages. Files for MetaTrader5, version 5.0.11 Filename, size File type Python version Upload date Hashes MetaTrader5-5.0.11-cp36-cp36m-win32.whl (31.7 kB) MetaTrader5-5.0.11-cp36-cp36m-win_amd64.whl (43.3 kB...
 

Non posso resistere ad esprimere un'opinione sulle integrazioni. Sono a favore con entrambe le mani. Python, reti neurali, AI, estensioni del compilatore e così via...

Ma c'è un MA.

Non importa quanto sia figo l'ambiente di sviluppo, dovrebbe essere di massa, giusto? E come può essere di massa se il suo toolkit sono i soliti primitivi? NO - non i soliti primitivi ma i PRIMITIVI GENITORI. PRIMITIVI SUPERCOMPLESSI.

Prendiamo la classe CCanvas: è un insieme di primitive grafiche. Possiamo assemblarne molti? Molto. Ma quanto cervello e quanto lavoro sono necessari per questo? - TANTISSIMO. Un mare di cervelli e di lavoro per creare il COSO. Quanti ne sono capaci? - Solo alcuni.

Di nuovo la domanda principale: come potrebbero gli strumenti dell'ambiente di sviluppo diventare popolari, se APRIORI presuppongono la presenza di abilità di progettazione non comuni in un uomo? La disponibilità di massa, in tal caso, è fuori questione.

Parafraserò brevemente:

Se una persona conosce Python, C++, MQL5, Algotrading e ha straordinarie capacità di progettazione, che differenza fa per lui in quale ambiente professionale creare la sua COSA? Userà il MINIMO delle caratteristiche e produrrà il MASSIMO dei risultati. Altri cercheranno di usare tutto e non creeranno nulla, a causa della soglia di complessità del toolkit.

Quindi su chi e su cosa bisogna concentrarsi?

 

Versione inferiore alla più bassa disponibile 5.0.10

444

A quanto pare dovremo aspettare gli aggiornamenti.

 

Saluti a tutti!

Perché ottengo questo errore anche se ho seguito correttamente gli esempi?

Saluti a tutti!

Perché ottengo questo errore anche se ho seguito correttamente gli esempi?


 
Renat Fatkhullin:
Python è abilitato in visual studio?

A causa dello zoo di python distribuiti indirettamente o automaticamente da diversi sistemi, è facile ottenere librerie installate in un'altra copia di python e poi provare ad eseguire altre copie.

Risolvete i pitoni, per favore. Chi passa a python deve essere preparato a passare il resto della sua vita a combattere con librerie, dipendenze e incompatibilità.

Questo è il destino di un pitonista - costruire un ambiente di librerie e pregare che qualche aggiornamento di libreria non incasini un altro numero sconosciuto di librerie.

Non c'è uno zoo di Python. C'è un ambiente. Ci può essere più di un ambiente. L'utente sceglie quale ambiente utilizzare.

L'ambiente Python dovrebbe essere inizializzato prima di eseguire uno script.

Ho considerato questo nella mia biblioteca . Ecco il codice della funzione di inizializzazione dell'ambiente.

MetaTrader 5 (MQL5) + Python 3 DLL для Forex, CFD и Futures
  • roffild.com
Использование MetaTrader с Python 3 на финансовых фондовых биржах, Forex, CFD и Futures. Из MetaTrader можно получать котировки в Python, но нет полноценной связи между ними. Пост одного из разработчиков. Главная идея и отличие этой обертки от остальных: обмен данными между MQL и Python через заранее созданные функции. Это самый быстрый и...
 

Forse è il momento di rinunciare a MetaEditor? Perché stipare diverse tecnologie nel vostro IDE quando potete ottenerne uno completo già pronto?

Tutti stanno creando un modulo per l'IDE in questi giorni:

codice microsoft visual studio

jetbrains intellij idea

 
Roffild:

Non c'è uno zoo di Python. C'è il concetto di Ambiente. Ci possono essere diversi ambienti su un computer. Sta all'utente scegliere quale ambiente utilizzare.

L'ambiente Python dovrebbe essere inizializzato prima di eseguire uno script.

Ho considerato questo nella mia biblioteca . Ecco il codice della funzione di inizializzazione dell'ambiente.

Possiamo supportare facilmente gli ambienti. Dai un'occhiata alle impostazioni del compilatore nell'editor, per favore.

Intendevo su zoo nel senso che il terminale può selezionare un ambiente (ad esempio il percorso predefinito), e le librerie saranno messe manualmente dall'utente in un altro ambiente.


Domani rilasceremo una nuova beta del terminale e una nuova libreria python. Tutti i vecchi metodi ed esempi sono rotti perché abbiamo riscritto l'api e la libreria da zero.

Il nuovo set di api è ampio e permette di gestire completamente il trading e ha accesso alle posizioni aperte e alla storia.

Ora puoi scrivere robot Metatrader completi direttamente in Python.

 

Nuova versione di MetaTrader 5 per Python 5.0.18 e MetaTrader 5 build 2319 beta:

  • Scarica MT5 beta tramite Aiuto -> Controlla la versione beta
  • libreria python:
    pip install --upgrade metatrader5
    

Poiché tutte le api sono cambiate, i vecchi esempi non funzionano più.

Ecco il nuovo set di funzioni:

initialize(path=None)                              Establish connection with the MetaTrader 5 Terminal
wait()                                             Wait for the MetaTrader 5 Terminal to connect to a broker's server
shutdown()                                         Disconnect from the MetaTrader 5 Terminal

version()                                          Get the MetaTrader 5 Terminal version
terminal_info()                                    Get the parameters of the MetaTrader 5 terminal
account_info()                                     Returns information of current account

copy_ticks_from(symbol, from, count, flags)                Get ticks starting from the specific date
copy_ticks_range(symbol, from, to, flags)                  Get ticks from the specified period
copy_rates_from(symbol, timeframe, from, count)            Get bars starting from the specific date
copy_rates_from_pos(symbol, timeframe, start_pos, count)   Get bars starting from the specified position
copy_rates_range(symbol, timeframe, date_from, date_to)    Get bars from the specified period

positions_total()                                          Returns the number of open positions
positions_get([symbol=\"SYMBOL\"],[ticket=TICKET])         Returns all open positions, can be filtered by symbol or ticket

orders_total()                                             Returns the number of orders
orders_get([symbol=\"SYMBOL\"],[ticket=TICKET])            Returns all orders, can be filtered by symbol or ticket

history_orders_total(from, to)                             Returns the number of orders in selected range from the history
history_orders_get(from, to)                               Returns orders in selected range from the history or filtered by position id, ticket

history_deals_total(from, to)                              Returns the number of deals in selected range from the history
history_deals_get(from, to)                                Returns deals in selected range from the history or filtered by position id, ticket

order_check(request)                                                Checks if there are enough funds to execute the required trade operation
order_send(request)                                                 Sends trade requests to a server
order_calc_margin(action, symbol, volume, price)                    Calculates the margin required for the specified order
order_calc_profit(action, symbol, volume, price_open, price_close)  Calculates the profit for the current account, in the current market conditions, based on the parameters passed

symbol_info(symbol)                                        Returns full information for a specified symbol
symbol_info_tick(symbol)                                   Returns current prices of a specified symbol
symbol_select(symbol,[enable])                             Selects a symbol in the Market Watch window or removes a symbol from the window

Esempio:

import MetaTrader5 as mt5
import time

mt5.initialize()
mt5.wait()

dev = 0.00010;
symbol = "EURUSD"
buy_price = 0

mt5.symbol_select(symbol)

time.sleep(1)
p = mt5.symbol_info_tick(symbol)
prev_price = p.ask

while True:
    p = mt5.symbol_info_tick(symbol)
    print(p.bid,'/',p.ask)
    
    if p.ask > prev_price and buy_price == 0:
            print("Buy ", p.ask)
            r = mt5.Buy(symbol, 0.01)
            if r.retcode == mt5.TRADE_RETCODE_DONE:
                buy_price = p.ask;
    elif buy_price > 0 and p.ask + dev < buy_price:
        print("Buy(close) ", p.bid)
        mt5.Close(symbol)
        buy_price = 0

    prev_price = p.ask
    time.sleep(1)

mt5.shutdown()
 
Renat Fatkhullin:

Nuova versione di MetaTrader 5 per Python 5.0.18 e MetaTrader 5 build 2319 beta:

  • Scarica MT5 beta tramite Aiuto -> Controlla la versione beta
  • libreria python:

Poiché tutte le api sono cambiate, i vecchi esempi non funzionano più.

Tutto sta cambiando dinamicamente.

Non voglio davvero essere coinvolto in questo casino.

Probabilmente vale la pena aspettare l'implementazione diWinML con ONNX. E prima ancora di afferrare la teoria di ML. Fortunatamente, ora un sacco di letteratura disponibile e vari corsi.