Вы совсем не мыслите логически. Как изменение магического числа поможет вам больше, чем знание OrderOpenTime()? Это то же самое.
Потому что мне нужно сделать несколько частичных закрытий с одним ордером... Если я сделаю одно OrderClose() и сравню с OrderOpenTime(), а затем сделаю еще одно OrderClose() с тем же ордером, но снова сравню с помощью OrderOpenTime(), это не сработает, потому что в истории будет существовать закрытый ордер, и он не закроет вторую функцию OrderClose()...
Теперь, если бы я мог OrderClose(), используя Magicnumber 1234, а затем, после завершения OrderClose(), я мог бы изменить магический номер ордера на 12345, поэтому первая функция, которая вызвала MagicNumber 1234, больше не будет применяться к оставшемуся ордеру, так как оставшемуся ордеру теперь присвоен магический номер 12345. Теперь с этим MagicNumber 12345 я мог бы использовать его в другой функции OrderClose() (если она применима) и повторять процесс до тех пор, пока то, что у меня есть, не будет работать и выполняться так, как я хочу.
До тех пор функция OrderOpenTime() может сработать только один раз...
Я просто подумал, и поправьте меня, если я ошибаюсь, но что если я использую OrderOpenTime() И OrderCloseTime()?
Если я сравню текущий OrderOpenTime() с исторически закрытыми позициями на том же Symbol() и не найду совпадений, то CloseOrder() будет запущен. Теперь, если вызывается вторая функция CloseOrder() (цена выше, чем у первой CloserOrder(), и я хочу закрыть еще несколько лотов по тому же ордеру), я могу сравнить OrderOpenTime() и OrderCloseTime(). Если OrderOpenTime(OpenPosition) == OrderOpenTime(History) && OrderCloseTime(history) > OrderOpenTime(OpenPosition) THEN OrderClose() вторая функция...?
Вы никогда не говорили ничего о многократном частичном закрытии, вы сказали, что просто хотите наполовину закрыть ордер, но в любом случае вы слишком много думаете об этом и полностью упускаете очевидное.
Почему OrderOpenTime() работает только один раз?
static datetime partclosedonce;
static datetime partclosedtwice;
если ордер соответствует критериям закрытия части 1 уровня и opentime не совпадает с partclosedonce, частично закрываем его, добавляем временную метку к partclosedonce.
если заказ удовлетворяет критериям закрытия 1 и его opentime совпадает с partclosedonce, он уже был закрыт один раз, поэтому пока не закрывайте его снова.
если заказ соответствует критериям закрытия части 2 и не совпадает с partclosedtwice, частично закройте его и добавьте метку времени в переменную partclosedtwice.
Также вам не следует ничего делать с OrdersHistory. Если вы проводите длительный бэктест, у вас могут быть сотни, даже тысячи ордеров в истории, и ваш советник будет сравнивать ваш открытый ордер со всеми ними на каждом тике. Это очень медленно, и ваши бэктесты будут становиться все медленнее и медленнее, так как чем дольше они выполняются, тем больше становится история.
Также вам не следует ничего делать с OrdersHistory. Если вы проводите длительный бэктест, у вас могут быть сотни, даже тысячи ордеров в истории, и ваш советник будет сравнивать ваш открытый ордер со всеми ними на каждом тике. Это очень медленно, и ваши бэктесты будут становиться все медленнее и медленнее, так как чем дольше они выполняются, тем больше становится история.
Я только что показал вам, как это сделать!!! Если есть более простой способ сделать это, чем этот, я хотел бы знать, что это такое. Делайте это с историей, если хотите, я просто высказал свое мнение по поводу этого способа.
Я только что показал вам, как это сделать!!! Если есть более простой способ сделать это, чем этот, я хотел бы знать, что это такое. Делайте это с историей, если хотите, я просто высказал свое мнение по поводу этого способа.
О, я вижу, что static datetime хранит дату и время OrderClose(), чтобы я мог сравнить его с начальным временем открытия текущего ордера, в отличие от просмотра чего-либо, связанного с историей?
Static Datetime - это довольно новое для меня понятие, поэтому я буду работать над этим завтра и посмотрю, что получится! Надеюсь, тогда я разберусь с этой раздражающей частью моего кода :)
Вы никогда не говорили ничего о многократном частичном закрытии, вы сказали, что просто хотите наполовину закрыть ордер, но в любом случае вы слишком много думаете об этом и полностью упускаете очевидное.
Почему OrderOpenTime() работает только один раз?
static datetime partclosedonce;
static datetime partclosedtwice;
если ордер соответствует критериям закрытия части 1 уровня и opentime не совпадает с partclosedonce, частично закрываем его, добавляем временную метку к partclosedonce.
если заказ удовлетворяет критериям закрытия 1 и его opentime совпадает с partclosedonce, он уже был закрыт один раз, поэтому пока не закрывайте его снова.
если заказ соответствует критериям закрытия части 2 и не совпадает с partclosedtwice, частично закройте его и добавьте метку времени в переменную partclosedtwice.
Удар! Это работает просто замечательно - намного проще, чем я себе представлял! Только начал смотреть на это, через 5 минут у меня все работает :) Большое спасибо за помощь! Теперь я включу мои многочисленные функции OrderClose() и посмотрю, смогу ли я заставить их работать. Как только я сделаю это, я собираюсь создать еще одну тему, чтобы вернуть помощь, которую я получил от других здесь! Я думаю, что это определенно то, что может пригодиться другим в одном кратком сообщении.
Я еще не выбрался из леса, но статический дататайм отлично работает с этим orderclose(). Я не вижу причин, почему бы ему не работать и с другими :)
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Вы совсем не мыслите логически. Как изменение магического числа поможет вам больше, чем знание OrderOpenTime()? Это то же самое.
Потому что мне нужно сделать несколько частичных закрытий с одним ордером... Если я сделаю одно OrderClose() и сравню с OrderOpenTime(), а затем сделаю еще одно OrderClose() с тем же ордером, но снова сравню с помощью OrderOpenTime(), это не сработает, потому что в истории будет существовать закрытый ордер, и он не закроет вторую функцию OrderClose()...
Теперь, если бы я мог OrderClose(), используя Magicnumber 1234, а затем, после завершения OrderClose(), я мог бы изменить магический номер ордера на 12345, поэтому первая функция, которая вызвала MagicNumber 1234, больше не будет применяться к оставшемуся ордеру, так как оставшемуся ордеру теперь присвоен магический номер 12345. Теперь с этим MagicNumber 12345 я мог бы использовать его в другой функции OrderClose() (если она применима) и повторять процесс до тех пор, пока то, что у меня есть, не будет работать и выполняться так, как я хочу.
До тех пор функция OrderOpenTime() может сработать только один раз...
Если я сравню текущий OrderOpenTime() с исторически закрытыми позициями на том же Symbol() и не найду совпадений, то CloseOrder() будет запущен. Теперь, если вызывается вторая функция CloseOrder() (цена выше, чем у первой CloserOrder(), и я хочу закрыть еще несколько лотов по тому же ордеру), я могу сравнить OrderOpenTime() и OrderCloseTime(). Если OrderOpenTime(OpenPosition) == OrderOpenTime(History) && OrderCloseTime(history) > OrderOpenTime(OpenPosition) THEN OrderClose() вторая функция...?
Вы никогда не говорили ничего о многократном частичном закрытии, вы сказали, что просто хотите наполовину закрыть ордер, но в любом случае вы слишком много думаете об этом и полностью упускаете очевидное.
Почему OrderOpenTime() работает только один раз?
static datetime partclosedonce;
static datetime partclosedtwice;
если ордер соответствует критериям закрытия части 1 уровня и opentime не совпадает с partclosedonce, частично закрываем его, добавляем временную метку к partclosedonce.
если заказ удовлетворяет критериям закрытия 1 и его opentime совпадает с partclosedonce, он уже был закрыт один раз, поэтому пока не закрывайте его снова.
если заказ соответствует критериям закрытия части 2 и не совпадает с partclosedtwice, частично закройте его и добавьте метку времени в переменную partclosedtwice.
Также вам не следует ничего делать с OrdersHistory. Если вы проводите длительный бэктест, у вас могут быть сотни, даже тысячи ордеров в истории, и ваш советник будет сравнивать ваш открытый ордер со всеми ними на каждом тике. Это очень медленно, и ваши бэктесты будут становиться все медленнее и медленнее, так как чем дольше они выполняются, тем больше становится история.
Также вам не следует ничего делать с OrdersHistory. Если вы проводите длительный бэктест, у вас могут быть сотни, даже тысячи ордеров в истории, и ваш советник будет сравнивать ваш открытый ордер со всеми ними на каждом тике. Это очень медленно, и ваши бэктесты будут становиться все медленнее и медленнее, так как чем дольше они выполняются, тем больше становится история.
Как еще я могу это сделать...?
Я только что показал вам, как это сделать!!! Если есть более простой способ сделать это, чем этот, я хотел бы знать, что это такое. Делайте это с историей, если хотите, я просто высказал свое мнение по поводу этого способа.
Я только что показал вам, как это сделать!!! Если есть более простой способ сделать это, чем этот, я хотел бы знать, что это такое. Делайте это с историей, если хотите, я просто высказал свое мнение по поводу этого способа.
О, я вижу, что static datetime хранит дату и время OrderClose(), чтобы я мог сравнить его с начальным временем открытия текущего ордера, в отличие от просмотра чего-либо, связанного с историей?
да
Static Datetime - это довольно новое для меня понятие, поэтому я буду работать над этим завтра и посмотрю, что получится! Надеюсь, тогда я разберусь с этой раздражающей частью моего кода :)
Вы никогда не говорили ничего о многократном частичном закрытии, вы сказали, что просто хотите наполовину закрыть ордер, но в любом случае вы слишком много думаете об этом и полностью упускаете очевидное.
Почему OrderOpenTime() работает только один раз?
static datetime partclosedonce;
static datetime partclosedtwice;
если ордер соответствует критериям закрытия части 1 уровня и opentime не совпадает с partclosedonce, частично закрываем его, добавляем временную метку к partclosedonce.
если заказ удовлетворяет критериям закрытия 1 и его opentime совпадает с partclosedonce, он уже был закрыт один раз, поэтому пока не закрывайте его снова.
если заказ соответствует критериям закрытия части 2 и не совпадает с partclosedtwice, частично закройте его и добавьте метку времени в переменную partclosedtwice.
Удар! Это работает просто замечательно - намного проще, чем я себе представлял! Только начал смотреть на это, через 5 минут у меня все работает :) Большое спасибо за помощь! Теперь я включу мои многочисленные функции OrderClose() и посмотрю, смогу ли я заставить их работать. Как только я сделаю это, я собираюсь создать еще одну тему, чтобы вернуть помощь, которую я получил от других здесь! Я думаю, что это определенно то, что может пригодиться другим в одном кратком сообщении.
Я еще не выбрался из леса, но статический дататайм отлично работает с этим orderclose(). Я не вижу причин, почему бы ему не работать и с другими :)