Будем считать, что частичного исполнения нет. Однако, во время работы скрипта кто-то может случайно нажать на крестик в таблице позиций, закрыв одну/несколько из них. Однако, в конце выполнения скрипта все же должно быть ровно 100 позиций.
MT4-вариант безумно прост. Поэтому и написал в этой теме.
Может быть элементарно реквот или потеря связи в процессе, 100 ордерсендов далеко не всегда дадут 100 сделок.
Синхронизатор только будет гарантировать, что PositionsTotal и OrdersTotal значения не врут. Именно из-за того, что они краковременно врут, и получаются задвоения.
В принципе, синхронизатор - это одна строка. И если не лезть в его устройство, то применение простое.
Однако, даже с синхронизатором все крайне не тривиально. Можно использовать такое условие:
while (OrdersTotal() + PositionsTotal < 100)
Однако, с этим условием будет полный облом, если кто-то сделает следующее.
fxsaber:
Будем считать, что частичного исполнения нет. Однако, во время работы скрипта кто-то может случайно нажать на крестик в таблице позиций, закрыв одну/несколько из них. Однако, в конце выполнения скрипта все же должно быть ровно 100 позиций.
Т.е. элементарная задача, что решается в две строки в MT4, легко не решится в MT5. Поэтому MT4-style+Синхронизатор и рулит в MT5. Из-за этого не совсем понимаю, как иначе в MT5 пишутся советники, коих так много в том же Маркете.
Синхронизатор только будет гарантировать, что PositionsTotal и OrdersTotal значения не врут. Именно из-за того, что они краковременно врут, и получаются задвоения.
В принципе, синхронизатор - это одна строка. И если не лезть в его устройство, то применение простое.
Однако, даже с синхронизатором все крайне не тривиально. Можно использовать такое условие:
Однако, с этим условием будет полный облом, если кто-то сделает следующее.
Т.е. элементарная задача, что решается в две строки в MT4, легко не решится в MT5. Поэтому MT4-style+Синхронизатор и рулит в MT5. Из-за этого не совсем понимаю, как иначе в MT5 пишутся советники, коих так много в том же Маркете.
В МТ5 все решается так же, как и в МТ4 и часто гораздо проще, ибо язык и АПИ гораздо богаче. Точнее, языки почти одинаковы, тут Метаквоты сделали огромную работу для совместимости, а вот АПИ довольно разные. Ренат (директор Метаквотес) в свое время заявлял на форумах, что МТ4 мертвый и его развивать не будут. Но видно, коммерческие интересы оказались важнее, и все же обновления выходят. Но в основном это исправления ошибок и новые фичи из МКЛ 5. Так что разработчики молодцы, снимаю шляпу, которой у меня нет.))
А в целом мне непонятны стоны некоторых товарищей, как сложно перейти на МКЛ5. Да нет там никаких сложностей, ну другое АПИ, так есть подробные исходники, я предпочитаю изучать по ним. У кого не хватает пока знаний, добро пожаловать в хелп, написано кратко, но четко. В любом случае пятерка быстрее четверки минимум в 10 раз, а в режиме оптимизации вообще использует все разрешенные вами ядра проца и при современной видеокарте бьет четверку в сотни раз. Так что не надо писать грустных песен. ))
вы не учли частичное исполнение, а когда учтете надо будет учесть еще и задвоение
и так тоже не правильно? - хотя я не пойму, кто что хочет от этой функции - но она выполняет свою задачу на все 100!!!
//+------------------------------------------------------------------+//| maxLimits.mq5 |//| Copyright 2021, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2021, MetaQuotes Ltd."#property link"https://www.mql5.com"#property version"1.00"#property script_show_inputs#include <Trade\Trade.mqh>
//---
CTrade m_trade; // trading object//---sinputuint maxLimits = 3; // Кол-во Позиции Открыть в одну сторонуsinputdouble InpLots = 0.01; // Lots//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---conststring symbol=NULL;
double price=0.0;
constdouble sl=0.0;
constdouble tp=0.0;
conststring comment="";
//--- check symbolstring symbol_name=(symbol==NULL) ? Symbol() : symbol;
//--- check priceif(price==0.0)
price=SymbolInfoDouble(symbol_name,SYMBOL_ASK);
//---for(uint i=0; i<maxLimits; i++)
{
//--- open positionif(m_trade.PositionOpen(Symbol(),ORDER_TYPE_BUY,InpLots,price,sl,tp))
printf("Position by %s to be opened",Symbol());
else
{
printf("Error opening BUY position by %s : '%s'",Symbol(),m_trade.ResultComment());
printf("Open parameters : price=%f,SL=%f,TP=%f",price,sl,tp);
}
}
}
//+------------------------------------------------------------------+
//---for(uint i=0; i<maxLimits; i++)
{
//--- open positionif(m_trade.Buy(InpLots,symbol_name,price,sl,tp,comment))
//if(m_trade.PositionOpen(Symbol(),ORDER_TYPE_BUY,InpLots,price,sl,tp))printf("Position by %s to be opened",Symbol());
else
{
printf("Error opening BUY position by %s : '%s'",Symbol(),m_trade.ResultComment());
printf("Open parameters : price=%f,SL=%f,TP=%f",price,sl,tp);
}
}
Будем считать, что частичного исполнения нет. Однако, во время работы скрипта кто-то может случайно нажать на крестик в таблице позиций, закрыв одну/несколько из них. Однако, в конце выполнения скрипта все же должно быть ровно 100 позиций.
MT4-вариант безумно прост. Поэтому и написал в этой теме.
То-есть для MQL5 вы ставите такие условия, что кто-то может пошалить, а для MQL4 нет? А если я подключусь к счёту с другого компа и поставлю пару отложек… что откроет MQL4???
Вы хотите без каких либо проверок начудить? Вы агитируете за вседозволенность в программировании, или просто пытаетесь побольше охаять MQL5 в чьих-то корыстных интересах?
Напишите всё то-же самое на mql4 с проверками и защитой от дурака.
То-есть для MQL5 вы ставите такие условия, что кто-то может пошалить, а для MQL4 нет? А если я подключусь к счёту с другого компа и поставлю пару отложек… что откроет MQL4???
Условия MT4 и MT5 одинаковые.
Вы хотите без каких либо проверок начудить? Вы агитируете за вседозволенность в программировании, или просто пытаетесь побольше охаять MQL5 в чьих-то корыстных интересах?
Напишите всё то-же самое на mql4 с проверками и защитой от дурака.
Все делаю только на MT5. Просто не стоит нести чушь, что MT5 не сложнее MT4. Он ГОРАЗДО сложнее! Только на этой неделе появилось решение задвоения позиций, и то не факт, что рабочее на 100%.
Столько лет все знали о задвоении, приходя к... Sleep. Потому что ОЧЕНЬ сложно. О многих особенностях торгового API, что поднимались на форуме, разработчики не в курсе, либо не давали своих комментариев.
Никто не хает MT5. Показал примерами некоторые проблемы при решении элементарных задач.
Нет.
если грошей хватит - то гарантировано
Нужно на MT5 написать скрипт, который на пустом счете открывает 100 позиций.
На MT4 решил таким образом.
У кого какие варианты решения на MT5?
если грошей хватит - то гарантировано
вы не учли частичное исполнение, а когда учтете надо будет учесть еще и задвоение
Частичное исполнение возможно?
Будем считать, что частичного исполнения нет. Однако, во время работы скрипта кто-то может случайно нажать на крестик в таблице позиций, закрыв одну/несколько из них. Однако, в конце выполнения скрипта все же должно быть ровно 100 позиций.
MT4-вариант безумно прост. Поэтому и написал в этой теме.
У кого какие варианты решения на MT5?
Без синхронизатора - никак.
Может быть элементарно реквот или потеря связи в процессе, 100 ордерсендов далеко не всегда дадут 100 сделок.
Без синхронизатора - никак.
Может быть элементарно реквот или потеря связи в процессе, 100 ордерсендов далеко не всегда дадут 100 сделок.
Синхронизатор только будет гарантировать, что PositionsTotal и OrdersTotal значения не врут. Именно из-за того, что они краковременно врут, и получаются задвоения.
В принципе, синхронизатор - это одна строка. И если не лезть в его устройство, то применение простое.
Однако, даже с синхронизатором все крайне не тривиально. Можно использовать такое условие:
Однако, с этим условием будет полный облом, если кто-то сделает следующее.
Будем считать, что частичного исполнения нет. Однако, во время работы скрипта кто-то может случайно нажать на крестик в таблице позиций, закрыв одну/несколько из них. Однако, в конце выполнения скрипта все же должно быть ровно 100 позиций.
Т.е. элементарная задача, что решается в две строки в MT4, легко не решится в MT5. Поэтому MT4-style+Синхронизатор и рулит в MT5. Из-за этого не совсем понимаю, как иначе в MT5 пишутся советники, коих так много в том же Маркете.
Синхронизатор только будет гарантировать, что PositionsTotal и OrdersTotal значения не врут. Именно из-за того, что они краковременно врут, и получаются задвоения.
В принципе, синхронизатор - это одна строка. И если не лезть в его устройство, то применение простое.
Однако, даже с синхронизатором все крайне не тривиально. Можно использовать такое условие:
Однако, с этим условием будет полный облом, если кто-то сделает следующее.
Т.е. элементарная задача, что решается в две строки в MT4, легко не решится в MT5. Поэтому MT4-style+Синхронизатор и рулит в MT5. Из-за этого не совсем понимаю, как иначе в MT5 пишутся советники, коих так много в том же Маркете.
В МТ5 все решается так же, как и в МТ4 и часто гораздо проще, ибо язык и АПИ гораздо богаче. Точнее, языки почти одинаковы, тут Метаквоты сделали огромную работу для совместимости, а вот АПИ довольно разные. Ренат (директор Метаквотес) в свое время заявлял на форумах, что МТ4 мертвый и его развивать не будут. Но видно, коммерческие интересы оказались важнее, и все же обновления выходят. Но в основном это исправления ошибок и новые фичи из МКЛ 5. Так что разработчики молодцы, снимаю шляпу, которой у меня нет.))
А в целом мне непонятны стоны некоторых товарищей, как сложно перейти на МКЛ5. Да нет там никаких сложностей, ну другое АПИ, так есть подробные исходники, я предпочитаю изучать по ним. У кого не хватает пока знаний, добро пожаловать в хелп, написано кратко, но четко. В любом случае пятерка быстрее четверки минимум в 10 раз, а в режиме оптимизации вообще использует все разрешенные вами ядра проца и при современной видеокарте бьет четверку в сотни раз. Так что не надо писать грустных песен. ))
вы не учли частичное исполнение, а когда учтете надо будет учесть еще и задвоение
и так тоже не правильно? - хотя я не пойму, кто что хочет от этой функции - но она выполняет свою задачу на все 100!!!
Будем считать, что частичного исполнения нет. Однако, во время работы скрипта кто-то может случайно нажать на крестик в таблице позиций, закрыв одну/несколько из них. Однако, в конце выполнения скрипта все же должно быть ровно 100 позиций.
MT4-вариант безумно прост. Поэтому и написал в этой теме.
То-есть для MQL5 вы ставите такие условия, что кто-то может пошалить, а для MQL4 нет? А если я подключусь к счёту с другого компа и поставлю пару отложек… что откроет MQL4???
Вы хотите без каких либо проверок начудить? Вы агитируете за вседозволенность в программировании, или просто пытаетесь побольше охаять MQL5 в чьих-то корыстных интересах?
Напишите всё то-же самое на mql4 с проверками и защитой от дурака.
То-есть для MQL5 вы ставите такие условия, что кто-то может пошалить, а для MQL4 нет? А если я подключусь к счёту с другого компа и поставлю пару отложек… что откроет MQL4???
Условия MT4 и MT5 одинаковые.
Вы хотите без каких либо проверок начудить? Вы агитируете за вседозволенность в программировании, или просто пытаетесь побольше охаять MQL5 в чьих-то корыстных интересах?
Напишите всё то-же самое на mql4 с проверками и защитой от дурака.
Все делаю только на MT5. Просто не стоит нести чушь, что MT5 не сложнее MT4. Он ГОРАЗДО сложнее! Только на этой неделе появилось решение задвоения позиций, и то не факт, что рабочее на 100%.
Столько лет все знали о задвоении, приходя к... Sleep. Потому что ОЧЕНЬ сложно. О многих особенностях торгового API, что поднимались на форуме, разработчики не в курсе, либо не давали своих комментариев.
Никто не хает MT5. Показал примерами некоторые проблемы при решении элементарных задач.