Поля volume и volume_real равны 0 для всех тиков (я выбрал COPY_TICKS_ALL). Это связано с историей моего брокера (объем, полученный из copy_rates_range, соответствует объему на графике Metatrader)? Также, в чем разница между этими двумя полями?
С другой стороны, я безуспешно искал значение четырех различных флагов, которые появляются в истории. Есть ли место, где я могу найти такое значение?
Поля volume и volume_real равны 0 для всех тиков (я выбрал COPY_TICKS_ALL). Это связано с историей моего брокера (объем, полученный из copy_rates_range, соответствует объему на графике Metatrader)?
Почитайте, пожалуйста, справочник по MqlTick . Эти поля не являются тиковым объемом
Структура для возврата текущих цен (MqlTick)
Это структура для хранения последних цен на символ. Она предназначена для быстрого получения наиболее востребованной информации о текущих ценах.
struct MqlTick { datetime time; // Времяпоследнего обновления цен doublebid; // Текущая цена покупкицена doubleask; // Текущая цена Ask doublelast; // Цена последней сделки (Last) ulongvolume; // Объем для текущей цены Last longtime_msc; // Время последнего обновления цены вмиллисекундах uint flags; // Флаги тика doublevolume_real; // Объем для текущей цены Last с большей точностью };
Переменная типа MqlTick позволяет получить значения Ask, Bid, Last и Volume в рамках одного вызова функции SymbolInfoTick().
Параметры каждого тика заполняются независимо от того, есть ли изменения по сравнению с предыдущим тиком. Таким образом, можно узнать корректную цену для любого момента в прошлом без необходимости искать предыдущие значения в истории тиков. Например, даже если во время прихода тика меняется только цена Bid, в структуре остаются и другие параметры, включая предыдущую цену Ask, объем и т. д.
Вы можете проанализировать флаги тиков, чтобы выяснить, какие именно данные были изменены:
TICK_FLAG_BID - тик изменил цену Bid
TICK_FLAG_ASK - тик изменил цену Ask
TICK_FLAG_LAST - тик изменил цену последней сделки
TICK_FLAG_VOLUME - тик изменил объем
TICK_FLAG_BUY - тик является результатом сделки на покупку
TICK_FLAG_SELL - тик является результатом сделки на продажу
This is a structure for storing the latest prices of the symbol. It is designed for fast retrieval of the most requested information about current prices. The parameters of each tick are filled in regardless of whether there are changes compared to the previous tick. Thus, it is possible to find out a...
Я заканчиваю изучать metatrader python doc. Это действительно полезно!
Я могу исполнять рыночные ордера и управлять ими (изменять sl/tp и закрывать их).
Также я могу выставлять отложенные ордера (buy/sell limit и buy/sell stop). Однако я не знаю, как их найти (ни одна из доступных в документации функций: positions_get, history_deals_get или history_order_get, не содержит таких ордеров).
Возможно ли получить их с помощью функции mt5? Или это пока невозможно?
Это было бы полезно, например, для того, чтобы быстро удалить все отложенные ордера...
По номеру ордера я могу его изменить/удалить:
#Modify pending order
request = {
"action": mt5.TRADE_ACTION_MODIFY,
"order": position_id,
"price": 1.09000,
"sl": 1.08000,
"tp": 1.10000
}
result = mt5.order_send(request)
if result.retcode != mt5.TRADE_RETCODE_DONE:
print("Position {} close failed, retcode={}".format(position_id, result.retcode))
else:
print(result)
#Delete pending order
request = {
"action": mt5.TRADE_ACTION_REMOVE,
"order": position_id,
}
result = mt5.order_send(request)
if result.retcode != mt5.TRADE_RETCODE_DONE:
print("Position {} close failed, retcode={}".format(position_id, result.retcode))
else:
print(result)
Я заканчиваю изучать metatrader python doc. Это действительно полезно!
Я могу исполнять рыночные ордера и управлять ими (изменять sl/tp и закрывать их).
Также я могу выставлять отложенные ордера (buy/sell limit и buy/sell stop). Однако я не знаю, как их найти (ни одна из доступных в документации функций: positions_get, history_deals_get или history_order_get, не содержит таких ордеров).
Возможно ли получить их с помощью функции mt5? Или это пока невозможно?
Это было бы полезно, например, для того, чтобы быстро удалить все отложенные ордера...
С помощью номера ордера я могу изменить/удалить его:
Спасибо!
Вы должны использовать получение заказов. Вот пример с использованием pymt5adapter
import pymt5adapter as mta
from pymt5adapter.order import Order
from pymt5adapter.symbol import Symbol
def main():
symbol = Symbol('EPM20')
r = Order.as_buy_limit(symbol=symbol, price=symbol.ask - 1.0, volume=1.0).send()
print(r)
for order in mta.orders_get(symbol=symbol):
print(order)
r = Order.as_delete_pending(order).send()
print(r)
if __name__ == '__main__':
with mta.connected():
main()
В python я хочу проверять рыночные часы на основе одного индикатора и в этом отношении я использовал ' copyrates_range ', но иногда получение данных от одного символа занимает больше времени, и я не хочу ждать и хочу игнорировать этот символ, что я могу сделать?
# create 'datetime' objects in UTC time zone to avoid the implementation of a local time zone offset # get bars from USDJPY M5 within the interval of 2020.01.10 00:00 - 2020.01.11 13:00 in UTC time zone time open high low close tick_volume spread real_volume...
В python я хочу проверять рыночные часы на основе одного индикатора и в этом отношении я использовал ' copyrates_range ', но иногда получение данных от одного символа занимает больше времени, и я не хочу ждать и хочу игнорировать этот символ, что я могу сделать?
спасибо
Вы не можете сделать многого, потому что терминал блокируется, когда он загружает данные о курсе с торгового сервера. Даже если вы используете async, многопоточность, многопроцессорность, вы все равно столкнетесь с проблемой заблокированного терминала при последующих вызовах. Можно породить несколько процессов, подключенных к нескольким терминалам, и использовать один рабочий для обработки приоритетных быстрых задач, а другой - для обработки очереди долго выполняющихся блокирующих запросов.
Где журнал изменений?
1. Исправлена проблема с автоматическим удалением объектов numpy
2. Исправлена обработка ошибок скриптов покупки/продажи/закрытия (__init__.py)1. Исправлена проблема автоматического удаления объектов numpy
2. Исправлена обработка ошибок скриптов покупки/продажи/закрытия (__init__.py)Спасибо!
Один вопрос по выводу copy_ticks_range:
Поля volume и volume_real равны 0 для всех тиков (я выбрал COPY_TICKS_ALL). Это связано с историей моего брокера (объем, полученный из copy_rates_range, соответствует объему на графике Metatrader)? Также, в чем разница между этими двумя полями?
С другой стороны, я безуспешно искал значение четырех различных флагов, которые появляются в истории. Есть ли место, где я могу найти такое значение?
Спасибо!
Один вопрос по выводу copy_ticks_range:
Поля volume и volume_real равны 0 для всех тиков (я выбрал COPY_TICKS_ALL). Это связано с историей моего брокера (объем, полученный из copy_rates_range, соответствует объему на графике Metatrader)?
Почитайте, пожалуйста, справочник по MqlTick . Эти поля не являются тиковым объемом
Структура для возврата текущих цен (MqlTick)
Это структура для хранения последних цен на символ. Она предназначена для быстрого получения наиболее востребованной информации о текущих ценах.
struct MqlTick
{
datetime time; // Времяпоследнего обновления цен
doublebid; // Текущая цена покупкицена
doubleask; // Текущая цена Ask
doublelast; // Цена последней сделки (Last)
ulongvolume; // Объем для текущей цены Last
longtime_msc; // Время последнего обновления цены вмиллисекундах
uint flags; // Флаги тика
doublevolume_real; // Объем для текущей цены Last с большей точностью
};
Переменная типа MqlTick позволяет получить значения Ask, Bid, Last и Volume в рамках одного вызова функции SymbolInfoTick().
Параметры каждого тика заполняются независимо от того, есть ли изменения по сравнению с предыдущим тиком. Таким образом, можно узнать корректную цену для любого момента в прошлом без необходимости искать предыдущие значения в истории тиков. Например, даже если во время прихода тика меняется только цена Bid, в структуре остаются и другие параметры, включая предыдущую цену Ask, объем и т. д.
Вы можете проанализировать флаги тиков, чтобы выяснить, какие именно данные были изменены:
Прочитайте, пожалуйста, справочник по MqlTick . Эти поля не являются тиками.
См. также перечисление TICK_FLAG.Спасибо, Рашид, я посмотрю.
Я заканчиваю изучать metatrader python doc. Это действительно полезно!
Я могу исполнять рыночные ордера и управлять ими (изменять sl/tp и закрывать их).
Также я могу выставлять отложенные ордера (buy/sell limit и buy/sell stop). Однако я не знаю, как их найти (ни одна из доступных в документации функций: positions_get, history_deals_get или history_order_get, не содержит таких ордеров).
Возможно ли получить их с помощью функции mt5? Или это пока невозможно?
Это было бы полезно, например, для того, чтобы быстро удалить все отложенные ордера...
По номеру ордера я могу его изменить/удалить:
Спасибо!
Спасибо, Рашид, я посмотрю.
Я заканчиваю изучать metatrader python doc. Это действительно полезно!
Я могу исполнять рыночные ордера и управлять ими (изменять sl/tp и закрывать их).
Также я могу выставлять отложенные ордера (buy/sell limit и buy/sell stop). Однако я не знаю, как их найти (ни одна из доступных в документации функций: positions_get, history_deals_get или history_order_get, не содержит таких ордеров).
Возможно ли получить их с помощью функции mt5? Или это пока невозможно?
Это было бы полезно, например, для того, чтобы быстро удалить все отложенные ордера...
С помощью номера ордера я могу изменить/удалить его:
Спасибо!
Вы должны использовать получение заказов. Вот пример с использованием pymt5adapter
Спасибо, Николи Шен!
привет
В python я хочу проверять рыночные часы на основе одного индикатора и в этом отношении я использовал ' copyrates_range ', но иногда получение данных от одного символа занимает больше времени, и я не хочу ждать и хочу игнорировать этот символ, что я могу сделать?
спасибо
привет
В python я хочу проверять рыночные часы на основе одного индикатора и в этом отношении я использовал ' copyrates_range ', но иногда получение данных от одного символа занимает больше времени, и я не хочу ждать и хочу игнорировать этот символ, что я могу сделать?
спасибо
Вы не можете сделать многого, потому что терминал блокируется, когда он загружает данные о курсе с торгового сервера. Даже если вы используете async, многопоточность, многопроцессорность, вы все равно столкнетесь с проблемой заблокированного терминала при последующих вызовах. Можно породить несколько процессов, подключенных к нескольким терминалам, и использовать один рабочий для обработки приоритетных быстрых задач, а другой - для обработки очереди долго выполняющихся блокирующих запросов.
Форум о трейдинге, автоматизированных торговых системах и тестировании торговых стратегий
MetaTrader 5 Python User Group - как использовать Python в Metatrader
Ренат Фатхуллин, 07/20/2014 01:19
Программу на питоне можно запускать на графиках как обычные скрипты. Они могут получать данные и торговать.
Но не в тестере.