Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я что-то не понимаю...
Я могу делать отправку ордеров целый день...
Но у меня большие проблемы с выполнением OrderClose...
Не могли бы вы привести пример на эту тему.
Я действительно не думаю, что это моя DLL обертка .NET.
Привет, yewnix!
Вы можете взглянуть на <Program Files>\TradeZone\TZMT4API\Developer\Short_Sample_MQL4.zip
Этот простой код mql, закрывает все открытые ордера, как только вы включите <orderproxy.mqh>.
int hAccount = TZ_LogIn(Login, Password, Server, "", "", "", "");
int Total = TZ_OrdersTotal();
for(i=0;i<Total;i++)
{
TZ_OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
TZ_OrderClose(TZ_OrderTicket(), TZ_OrderLots(), TZ_OrderClosePrice(), 3);
}
С наилучшими пожеланиями.
Здравствуйте, yewnix!
Вы можете взглянуть на C:\Arquivos de programas\TradeZone\TZMT4API\Developer\Short_Sample_MQL4.zip
Этот простой код mql, закрывает все открытые ордера, как только вы включите <orderproxy.mqh>.
int hAccount = TZ_LogIn(Login, Password, Server, "", "", "", "");
int Total = TZ_OrdersTotal();
for(i=0;i<Total;i++)
{
TZ_OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
TZ_OrderClose(TZ_OrderTicket(), TZ_OrderLots(), TZ_OrderClosePrice(), 3);
}
С наилучшими пожеланиями.
Я пытаюсь сделать это на C#.
Я взял ваши функции и написал dll обертку для .NET
т.е:
double askprice = MT4ApiNet.MarketInfo_MT4(h, "GBPUSD", (int)MT4ApiNet.MarketInfoType.MODE_ASK)
MT4ApiNet.OrderSend_MT4(h, "GBPUSD", (int)MT4ApiNet.OrderType.OP_BUY, 1, askprice, 3, (askprice - 0.0050), (askprice + 0.0050), "My Program", 100, 0);
Это работает идеально. Этот ордер отлично отображается.
Теперь... Если я получу ордер# из MetaTrader (используя 1234 в качестве ордера# для примера)
MT4ApiNet.OrderClose_MT4(h, 1234, 1, MT4ApiNet.OrderClosePrice_MT4(h,1234), 20);
Это не отменяет ордер...
Даже если я пройдусь по ордерам и сделаю MT4ApiNet.OrderGet_MT4, это все равно не сработает.
К ВАШЕМУ СВЕДЕНИЮ.
После выполнения OrderClose, если я получаю последнюю ошибку...
MessageBox.Show(MT4ApiNet.ErrorDescription_MT4(MT4ApiNet.GetLastError_MT4(h)));
Это возвращает общую ошибку
Можете ли вы хотя бы просто показать правильный OrderClose в delphi?
Даже в delphi мой код зависает
Привет, Джусо,
<Program Files>\TradeZone\TZMT4API\Developer\MetaTrader4 API.txt содержит то, что вы хотите.
С наилучшими пожеланиями.
Здравствуйте, TradeZone
Спасибо за быстрый ответ. Последний раз я активно занимался разработкой на c++ 8 лет назад и к тому времени нужно было иметь *.h и *.lib dll, чтобы иметь возможность использовать api естественным образом. Если у вас есть *.h файл, но нет *.lib, вы все еще можете сделать это, разрешая адрес функции динамически, хотя процесс более утомительный. Итак, я могу сам создать файл *.h, хотя *.lib все еще отсутствует. Возможно, существует простой способ создания lib из самой dll, о котором я не знаю.
Берегите себя
Juso
TradeZone,
Не могли бы вы выложить рабочий пример команды OrderClose_MT4, отправляемой из приложения Delphi.
Как было сказано ранее, я не могу заставить это работать.
Спасибо!
Поскольку я не получил ответа на этот вопрос, я начал копаться в том, как на самом деле работает ваша DLL.
Довольно хорошая идея.
Загрузите 10 графиков, каждый из которых прикреплен к разным советникам.
Эти советники запускаются и создают файлы в директории experts/files.
DLL считывает эти файлы обратно, чтобы отобразить данные в вашем запрограммированном приложении.
Советник проверяет существование файлов (созданных вызовами DLL) и, если они существуют, обрабатывает транзакции, затем создает другие файлы, чтобы вернуть ответные данные, а затем удаляет файл, созданный DLL, чтобы мы знали, что транзакция либо завершена, либо провалилась.
Если я не ошибаюсь, ваш Handle, возвращаемый командой Login_MT4, является просто индексом к случайно сгенерированному имени каталога. Таким образом, вы знаете, каким процессом terminal.exe управлять и куда поместить сгенерированные файлы.
Я могу ошибаться во всем этом, я просто хочу исправить проблему с OrderClose, с которой я столкнулся...
Однако вместо того, чтобы создавать файлы снова и снова... Я бы настоятельно рекомендовал использовать Memory Mapping(Create / Open Memory Map based on Pair Name_Handle).
Кстати, хорошая работа... только не могли бы вы рассказать мне о OrderClose, чтобы мне не пришлось кодировать свои собственные советники и интерфейс Memory Map DLL.Вот и все, ребята, мой анализ этого API.
Будьте здоровы!
Ребята,
У меня есть подобная интеграция, хорошо работающая и протестированная (не этот код). Она сделана через эксперта, и раскрывает функциональность через C++/ Managed C++ в модуль .NET. Она позволяет плавно управлять сделками, сообщает об ошибках, предоставляет котировки в реальном времени и т.д. Связь осуществляется через TCP, поэтому она быстрая и надежная.
Он будет выложен полностью бесплатно с открытым исходным кодом как часть новой торговой платформы с открытым исходным кодом (на базе .NET, он может использовать MT4 для получения данных или выполнения ордеров). Вы можете использовать платформу или просто небольшую часть интеграции - все зависит от вас.
Если вы заинтересованы, поднимите руки, и я расскажу вам больше деталей :).
Запуск платформы планируется через несколько дней (примерно 15.10).
Peer2k,
Отлично, да, я думал об использовании TCP вместо Memory Mapping.
Если вы хотите прислать ссылку на код, я бы не отказался посмотреть на него.
Впрочем, это зависит от вас :)
Будь здоров!
yewnix@gmail.com