Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Родил на дельфи DLLку, вызываю из МТ4. Все работает кроме передачи простых параметров по ссылке. В дельфи объявил так:
procedure Test2(var i: integer); stdcall;
begin
if addr(i) = nil then ShowMessage('Чо за батва?!');
end;
затычку для вызова так
#import "DLL1.dll"
void Test2(int& i);
вызываю так:
int init() {
int x = 5;
Test2(x);
return(x);
}
при вызове в стеке должна лежать ссылка на переменную integer, но там лежит null
так как передать int параметр по ссылке?
при передаче массивов, значение массива нормально передается по ссылке
использую
MetaEditor 4.00 build 183
MetaTrader 4.00 build 186
сразу еще вопрос: если передается строка как ссылке, то какого размера будет приемный буфер строки?
сразу еще вопрос:
Если я передаю строку как результат функции, то где должна быть выделена область памяти под строку? Я должен передавать указатель на глобальную переменную в DLL? При этом я могу быть уверен что DLL не будет вызываться из разных потоков одновременно при любом режиме работы метатрейдера?
Заранее спасибо
в начале дня устанавливаем два отложенных ордера
После того как один(любой) сработал - второй удаляется
За пять минут до закрытия бара(допустим дневного) закрыть сработавший (если он не был закрыт по SL или TP)
Если ни один отложенный ордер не соработал то за пять минут до закрытия бара удаляем их обоих
Заранее спасибо
2) Если я передаю строку как результат функции, то где должна быть выделена область памяти под строку? Я должен передавать указатель на глобальную переменную в DLL? При этом я могу быть уверен что DLL не будет вызываться из разных потоков одновременно при любом режиме работы метатрейдера?
Заранее спасибо
в начале дня устанавливаем два отложенных ордера
После того как один(любой) сработал - второй удаляется
За пять минут до закрытия бара(допустим дневного) закрыть сработавший (если он не был закрыт по SL или TP)
Если ни один отложенный ордер не соработал то за пять минут до закрытия бара удаляем их обоих
Заранее спасибо
Так и реализуешь, в нужное время ставишь отложенные ордера (это легко). И начинаешь проверять ордера. Как только появился ордер Бай или Селл, отрабатываешь удаление отложенного ордера (это еще легче). И потом, в нужное время, отрабатывашь закрытие всех ордеров (это совсем просто).
в начале дня устанавливаем два отложенных ордера
После того как один(любой) сработал - второй удаляется
За пять минут до закрытия бара(допустим дневного) закрыть сработавший (если он не был закрыт по SL или TP)
Если ни один отложенный ордер не соработал то за пять минут до закрытия бара удаляем их обоих
Заранее спасибо
Так и реализуешь, в нужное время ставишь отложенные ордера (это легко). И начинаешь проверять ордера. Как только появился ордер Бай или Селл, отрабатываешь удаление отложенного ордера (это еще легче). И потом, в нужное время, отрабатывашь закрытие всех ордеров (это совсем просто).
Я просил работающий код(может кто-то реализовывал)
Все что я делал не работало...Как-то коряво обрабатывается odrerdelete
Еще вопрос иногда цена на данном инструменте замирает(тиков нет) в течении нескольких минут т.е. нет возможности закрыть ордер т.к. тело int start() не выполняется, хотя по другим парам тики поступают нельзя ли как-нибудь передавать значение Curetime от любого инструмента где тики приходят
Проще говоря чтобы значение Curetime практически не зависало
И что делает сей кусок кода?
Удаляет оба еще не сработавших отложенных ордера