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

 
Rashid Umarov:

Controlla se il tuo tipo di conto è netting o hedging. Per il netting, il biglietto di una posizione già esistente non cambierà, e non ha senso cercare una posizione dopo l'azione per numero d'ordine.

Sì, tutto chiaro, guardato sì, in caso di apertura di una posizione su un biglietto di compensazione, corrisponde all'apertura della posizione. Il punto è chiaro.

 
Almaz:
codice di errore 1, questo è successo mt5.RES_S_OK, la prossima build scriverà [1, 'Success']. I codici con valori negativi sono errori mt5.RES_E_xxx.

Sì, grazie - il punto è chiaro sul perché la linea bianca era lì.

 
Ciao, c'è qualche aggiornamento sul post #517 sull'ottenere un aggiornamento dal terminale riguardo alla newbar?
 
fbrand:
Ciao, c'è qualche aggiornamento sul post #517 sull'ottenere un aggiornamento dal terminale riguardo alla newbar?

Finora ho dovuto pedalare con il controllo del tempo:

if mt5.symbol_info_tick(symbol).time % (60 * timefr) == 0:
...

Non molto conveniente. Ma come opzione temporanea va bene.

 
Vladimir Perervenko:

Finora ho dovuto pedalare con il controllo del tempo:

Non molto conveniente. Ma come opzione temporanea va bene.

Non previsto. Controlla le nuove barre su un timer o in un ciclo.

 
Rashid Umarov :

Non previsto. Controlla le nuove barre su un timer o in un ciclo.


Se usate secondo Vladimir, non otterremo allora il volume esatto, ma solo il volume di quel tick al sondaggio?


E se poi usi le nuove barre in EA per chiamare lo script Python, e lo script punta a più di un simbolo, tutte le nuove barre per tutti i simboli nel terminale vengono eseguite allo stesso tempo, o devo creare uno script Python e un consigliere per ogni simbolo?


Grazie

ps: scusate, ho dovuto passare all'inglese perché il traduttore ha incasinato le parole
Обработчик события "новый бар"
Обработчик события "новый бар"
  • www.mql5.com
Для создателей индикаторов и экспертов всегда был актуален вопрос написания экономичного кода с точки зрения времени выполнения. Можно подойти к решению этой задачи с разных сторон. Из этой обширной темы в данной статье будет затронут, казалось бы уже решенный вопрос: проверка появления нового бара. Это достаточно популярный способ ограничения...
 

Usandohistory_orders_get().

Nella documentazione, esplicitamente copia-incolla :)(https://www.mql5.com/ru/docs/integration/python_metatrader5/mt5historyordersget_py)

E c'è una stranezza nell'uso:

    from_date = datetime(2020,1,1)
    to_date = datetime.now()
    if mt5.initialize(acc['path'], login=login, server=acc['server'], password=acc['pass']):
        orders = mt5.history_orders_get(from_date, to_date)    
        if len(orders) > 0:
            orders_frame = pd.DataFrame(orders)
            print(orders_frame.head())

Risultato:

 python.exe .\history-deal-mt-1.py
         0           1              2           3              4  5  6  7  8  9      10       11  12  13    14   15       16      17      18       19   20      21             22 23
0  4308935  1583603265  1583603265527  1583603267  1583603267535  0  0  0  0  4  234000  4308935   0   3  0.01  0.0     0.00     0.0     0.0  9128.00  0.0  BTCUSD  python script
1  4308936  1583603511  1583603511561  1583603511  1583603511561  0  1  0  1  4  234000  4308935   0   5  0.01  0.0  9128.01     0.0     0.0  9128.01  0.0  BTCUSD  [tp 9128.010]
2  4308937  1583603550  1583603550455  1583603552  1583603552460  0  1  0  0  4       0  4308937   0   0  0.01  0.0     0.00     0.0     0.0  9127.50  0.0  BTCUSD
3  4308938  1583603969  1583603969250  1583603971  1583603971253  0  0  0  0  4  234000  4308938   0   3  0.01  0.0     0.00  9135.5  9142.5  9139.00  0.0  BTCUSD  python script
4  4308939  1583603974  1583603974183  1583603974  1583603974188  0  1  0  1  4  234000  4308938   0   4  0.01  0.0  9135.50     0.0     0.0  9135.50  0.0  BTCUSD  [sl 9135.500]

Totale, i dati vengono visualizzati, ma dove, cosa - si può solo indovinare.

Gente, pls - aggiungete qualcosa come _fields o as_dict() o __dict__ a TradeOrder (e simili).

    Point = collections.namedtuple('Point', ['x', 'y', 'val'])    
    print(Point._fields)
python.exe .\history-deal-mt-1.py
('x', 'y', 'val')

Davvero, non è conveniente ora.

 
Дмитрий Прокопьев:

Usandohistory_orders_get().

Nella documentazione, esplicitamente copia-incolla :)(https://www.mql5.com/ru/docs/integration/python_metatrader5/mt5historyordersget_py)

Aggiorna la guida o vai al link

 
Rashid Umarov:

Non ci sono piani. Controlla le nuove barre su un timer o in un ciclo.

Puoi essere più specifico sul timer?

 
Дмитрий Прокопьев:

Gente, pls - aggiungete qualcosa come _fields o as_dict() o __dict__ a TradeOrder (e simili).

Davvero, non è conveniente ora.

In 5.0.27 lo è già, tutte le strutture di sequenza (analogo delle tuple nominate per le API C) hanno aggiunto il metodo _asdict()

sym = mt5.symbol_info("EURUSD")._asdict()
for i in sym:
   print(i, '=', sym[i])