7bit: идея: вы можете использовать всегда одно и то же магическое число, как обычно, чтобы сделать его совместимым со всем остальным, что использует магические числа, но также объединить его со строкой комментария, включив в комментарий число, уникальное для каждой пары сделок. Тогда вы сможете найти другую сделку из каждой пары сделок, просто ища сделку с таким же магическим числом и комментарием.
Как найти заказ по комментарию и магическому номеру?
У меня есть 15 триггеров
Я не хочу стандартный, скажем, TP 200 SL 300
у каждой валютной пары будет свой TP и SL в зависимости от статистики триггера.
если появляется триггер с более высокой вероятностью, я хочу определить его и принять меры
7bit: вам не нужна отдельная магия для покупки и продажи, вы можете легко отфильтровать их с помощью OrderType()
и вы можете отфильтровать валютные пары с помощью OrderSymbol()
for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
OrderSelect(pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber() == Magic.Number // my magic number
&& OrderSymbol() == Symbol() ){ // and period and symbol
//+------------------------------------------------------------------+//| Function..: SequenceNumber |//| Purpose...: Generate a sequential number. |//| Returns...: dSeqNum - next sequence number. |//| Notes.....: MT4 keeps the value of the global variable at the |//| client terminal for 4 weeks since the last access. | //| Use SequenceNumber() to generate a unique identity |//| for each order (and passed via parameter <magic> |//| number, or converted to a string and passed via the |//| parameter <comment> to the OrderSend() function) as |//| the trade servers of some brokers do modify the |//| ticket number of a pending order when it changes to |//| a market order. |//| The same sequence number could, for example, be used |//| to identify the two positions of a straddle order. |//| ******************************************************//| * If the expert has to close partial lots, then MT4 *//| * retains in the new order the contents of the *//| * OrderMagicNumber() but loses OrderComment(). *//| ******************************************************//| Sample....: string sNumber=DoubleToStr(SequenceNumber(),0); |//| if(OrderSend("EURUSD",OP_BUY,1,Ask,3,Ask-25*Point, |//| Ask+25*Point,sNumber,16384,0,Green) > 0)|//| OrderSend("EURUSD",OP_BUY,1,Ask,3,Ask-25*Point, |//| Ask+65*Point,sNumber,16384,0,Green); |//+------------------------------------------------------------------+double SequenceNumber() {
double dSeqNum=1, d;
string sName="SequenceNumber";
while(GlobalVariableCheck("Semaphore")) d+=0;
GlobalVariableSet("Semaphore",1);
if(GlobalVariableCheck(sName)) dSeqNum=GlobalVariableGet(sName)+1;
GlobalVariableSet(sName,dSeqNum);
GlobalVariableDel("Semaphore");
return(dSeqNum);
}
Спасибо, я наконец-то вернулся к этой теме и пробую это. Я не понимаю образец. Почему OrderSend > 0, а затем выполняется еще один OrderSend? Пожалуйста, помогите!
Я понял, что номер последовательности будет увеличиваться с каждым ордером и что я могу присвоить его комментарию или магическому числу, что замечательно. Самое интересное, что они остаются в системе даже после того, как я перезапускаю MT4.
Однако, как мне их потом идентифицировать и сравнить?
Как размещается каждый набор ордеров:
string sNumber=DoubleToStr(SequenceNumber(),0);
int ticket=OrderSend(Symbol(),OP_BUY,LotSize,MarketInfo(Symbol 1,MODE_ASK),3,0,0,sNumber,12345,0,Green)
& ticket=OrderSend(Symbol(),OP_SELL,LotSize,MarketInfo(Symbol 2,MODE_ASK),3,0,0,sNumber,12345,0,Red);
т.е. я торгую парой, ордер 1 и 2, затем ордер 3 и 4, и так далее.....
Ордер 1 - Последовательность #1
Ордер 2 - Последовательность #2
Заказ 3 - Последовательность #3
Заказ 4 - Последовательность #4
Заказ 5 - Последовательность #5
Порядок 6 - Последовательность №6
Теперь у них есть уникальный порядковый номер, который увеличивается,
Как мне выбрать их и сравнить?
Я хотел бы выбрать и сравнить
Заказ 1 и 2, затем Заказ 3 и 4, затем Заказ 5 и 6, и так далее ...
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
идея: вы можете использовать всегда одно и то же магическое число, как обычно, чтобы сделать его совместимым со всем остальным, что использует магические числа, но также объединить его со строкой комментария, включив в комментарий число, уникальное для каждой пары сделок. Тогда вы сможете найти другую сделку из каждой пары сделок, просто ища сделку с таким же магическим числом и комментарием.
Как найти заказ по комментарию и магическому номеру?
У меня есть 15 триггеров
Я не хочу стандартный, скажем, TP 200 SL 300
у каждой валютной пары будет свой TP и SL в зависимости от статистики триггера.
если появляется триггер с более высокой вероятностью, я хочу определить его и принять меры
триггер1 eur/usd 100 вероятность: 94%, usd/jpy 300 вероятность: 74% eur/jpy 200 вероятность.100%
если триггер 1 сработал на одной из пар eur/usd, то больше не нужно торговать на этой паре для этого триггера.
я все еще хочу торговать для триггера 2, триггера 3 и (триггер 1, только другая пара)
не
вам не нужна отдельная магия для покупки и продажи, вы можете легко отфильтровать их с помощью OrderType()
спасибо за помощь
вам не нужна отдельная магия для покупки и продажи, вы можете легко отфильтровать их с помощью OrderType()
Я использую диапазон магических чисел, чтобы можно было использовать различные методы SL для сделок.
например, MAGIC_NUMBER_BASE = 1234500
Затем я использую "смещение" от 0 до 99, чтобы сгруппировать сделки по типу SL. Затем я использую код типа
if(OrderMagicNumber() < MY_MAGIC_LO || OrderMagicNumber() > MY_MAGIC_HI)для поиска моих сделок (на самом деле этот код предназначен для ИСКЛЮЧЕНИЯ моих сделок!)
Jon эта функция выдает уникальные числа
Спасибо, я наконец-то вернулся к этой теме и пробую это. Я не понимаю образец. Почему OrderSend > 0, а затем выполняется еще один OrderSend? Пожалуйста, помогите!
Я понял, что номер последовательности будет увеличиваться с каждым ордером и что я могу присвоить его комментарию или магическому числу, что замечательно. Самое интересное, что они остаются в системе даже после того, как я перезапускаю MT4.
Однако, как мне их потом идентифицировать и сравнить?
Как размещается каждый набор ордеров:
т.е. я торгую парой, ордер 1 и 2, затем ордер 3 и 4, и так далее.....
Ордер 1 - Последовательность #1
Ордер 2 - Последовательность #2
Заказ 3 - Последовательность #3
Заказ 4 - Последовательность #4
Заказ 5 - Последовательность #5
Порядок 6 - Последовательность №6
Теперь у них есть уникальный порядковый номер, который увеличивается,
Как мне выбрать их и сравнить?
Я хотел бы выбрать и сравнить
Заказ 1 и 2, затем Заказ 3 и 4, затем Заказ 5 и 6, и так далее ...
Заранее спасибо!
... Продолжение ответа выше
А может быть, я мог бы контролировать, когда порядковый номер будет увеличиваться?
Т.е. после каждого набора заказов? Например, после 2 заказов.
Чтобы при выборе и сравнении я мог выбирать только заказы с одинаковым порядковым номером.
Как это закодировать?
Спасибо!
Сохраните тезисы в массиве[][]
пример.
Торговля 1
TicketArray [1] [0] = Ticket0;
TicketArray [1] [1] = Ticket1;
Торговля 2
TicketArray [2] [0]
TicketArray [2] [1]
Торговля 3
TicketArray [3] [0]
TicketArray [3] [1]
... И так далее