Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Спасибо cyberflohr за ваш ответ. У меня есть еще один вопрос.
Есть предопределенные методы, определенные в SampleEA, который поставляется с вашим примером. Эти методы связаны с MT4 через mt4j.dll. Если я хочу добавить свой собственный метод в SampleEA.java и хочу, чтобы он вызывался в MT4, что я должен сделать? Изменить mt4j.dll?
к сожалению, запись в System.out / System.err не выведет сообщения в терминал MT. вы должны записывать сообщения в файл (используя java.io) или использовать java logging framework, например log4j или slf4j.
В ближайшие несколько дней я подготовлю более сложный пример, который проведет несколько сделок.
с уважением,
cyberflohr
Вы можете добавить свои собственные методы set/get в свой класс, например, void setBuyPrice(double price), double getPrice(), но добавление методов с переменным списком параметров невозможно.
PS: Я могу добавить поддержку методов noargs, если вы хотите, то есть вы сначала вызываете свои методы setter, чтобы подготовить объект экземпляра с данными, а затем вызываете метод noargs, чтобы начать обработку - все, что вы хотите.
Поддержка методов noargs (void someMethod()) была бы очень удобна. Так как это улучшило бы разделение передачи данных и контроля операций, выполняемых над ними.
С уважением,
Привет, киберфлор,
Отличный инструмент. У меня есть один вопрос:
Как я могу перегенерировать mt4j.dll, если я хочу выставить свой собственный публичный java api для вызова из MT4?
Спасибо,
Алот!
С уважением,
Тамас
Привет CyberFlohr, большое спасибо за этот MT4 Java Bridge. Я заинтересован в том, чтобы иметь некоторые черты содержания реализации MT4J.dll, я хотел бы иметь отправную точку для разработки моей собственной DLL, потому что я хотел бы добавить некоторые технические функции, доступные в API.
Спасибо,
Иисус
Здравствуйте, Киберфлор,
Я выполнил вашу инструкцию по установке mt4jv0.2 и не получил никаких сообщений об ошибках в платформе MT4. Однако в SampleEA.java я обнаружил, что есть метод, который, похоже, запускается при инициализации советника в соответствии с описанием в MT4BasicClient.java
код в SampleEA.java:
@Override
public void init() {
System.out.println("init()");
}
описание в MT4BasicClient.java:Beats by Dr. Dre Solo
/**
* Вызывается клиентом MT4 во время фазы инициализации.
*/
Из этого кода я думаю, что должно быть что-то выведено при инициализации, но я не видел, чтобы в платформе MT4 выводилось сообщение "init()". Правильно ли я понимаю код?
Кроме того, не могли бы вы дать еще одну демонстрацию для размещения ордера?
Спасибо большое, я очень ценю ваш код. :D
Кто-нибудь проводил жесткое тестирование при передаче двойных значений?
Я пробовал несколько вариантов передачи двойного значения и получения его обратно, но безрезультатно. Отправка в среду Java проходит успешно (поскольку я отладил полученное значение на стороне java), но получение того же значения обратно в среду MT не удается.
При печати полученного значения выдается результат, как показано ниже:
2012.05.03 22:57:32 ATT - Java EURUSD,M5: Double rec : -1.#IND
Кто-нибудь сталкивался с подобным? Похоже, что dll, которая выполняет фактическую передачу, неправильно обрабатывает обратную передачу двойных типов.
Заранее спасибо.
Кто-нибудь проводил жесткое тестирование при передаче двойных значений?
Я пробовал несколько вариантов передачи двойного значения и получения его обратно, но безрезультатно. Отправка в среду Java проходит успешно (поскольку я отладил полученное значение на стороне java), но получение того же значения обратно в среду MT не удается.
При печати полученного значения выдается результат, как показано ниже:
2012.05.03 22:57:32 ATT - Java EURUSD,M5: Double rec : -1.#IND
Кто-нибудь сталкивался с подобным? Похоже, что dll, которая выполняет фактическую передачу, неправильно обрабатывает обратную передачу двойных типов.
Заранее спасибо.
Я проверил образец mt4jSAmple.mq4 с двойными значениями, и он работает.
setDoubleProperty(jCtx, "DoublePropertySample", DoubleProperty);
if (DoubleProperty != getDoubleProperty(jCtx, "DoublePropertySample")) {
Alert("Двойка была установлена неправильно: " + getDoubleProperty(jCtx, "DoublePropertySample"));
}
Возможно, дело в самом значении float, что такое значение float?
Здравствуйте, Киберфлор,
Я выполнил вашу инструкцию по установке mt4jv0.2 и не получил никаких сообщений об ошибках в платформе MT4. Однако в SampleEA.java я обнаружил, что есть метод, который, похоже, запускается при инициализации советника в соответствии с описанием в MT4BasicClient.java
код в SampleEA.java:
@Override
public void init() {
System.out.println("init()");
}
описание в MT4BasicClient.java:Beats by Dr. Dre Solo
/**
* Вызывается клиентом MT4 во время фазы инициализации.
*/
Из этого кода я думаю, что должно быть что-то выведено при инициализации, но я не видел, чтобы в платформе MT4 выводилось сообщение "init()". Правильно ли я понимаю код?
Кроме того, не могли бы вы дать еще одну демонстрацию для размещения ордера?
Спасибо большое, я очень ценю ваш код. :D
Чтобы перенаправить сообщения, записанные в System.out в файл, просто добавьте следующий код статического инициализатора в класс MT4BasicClient.java:
static {
try {
System.setOut(new PrintStream(new FileOutputStream("c:\\\temp\\\mt4j.log",true)));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
Как я уже писал в предыдущем сообщении, не существует способа перенаправить сообщения, записанные в System.out/err обратно в платформу MT4. Пожалуйста, используйте фреймворк логирования (log4j, slfj) для записи ваших сообщений в файл.
Чтобы перенаправить сообщения, записанные в System.out, в файл, просто добавьте следующий код статического инициализатора в класс MT4BasicClient.java:
static {
try {
System.setOut(new PrintStream(new FileOutputStream("c:\\\temp\\\mt4j.log",true)));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
Еще один пример для перенаправления ниже:
String out_filename = String.format("%s%s.log", "experts/logs/",this.getClass().getSimpleName());
String err_filename = String.format("%s%s_error.log", "experts/logs/",this.getClass().getSimpleName());
System.setOut(new PrintStream(out_filename));
System.setErr(new PrintStream(err_filename));
Который будет красиво регистрировать все ваши консольные данные и данные об ошибках.