Как создать массив магических чисел? - страница 3

 
Я хотел бы иметь отдельный номер для ордеров на покупку и ордеров на продажу, возможно ли это?
 
7bit:
идея: вы можете использовать всегда одно и то же магическое число, как обычно, чтобы сделать его совместимым со всем остальным, что использует магические числа, но также объединить его со строкой комментария, включив в комментарий число, уникальное для каждой пары сделок. Тогда вы сможете найти другую сделку из каждой пары сделок, просто ища сделку с таким же магическим числом и комментарием.

Как найти заказ по комментарию и магическому номеру?

У меня есть 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, только другая пара)

 

не

int MagicNoBuy  = 12345;
int MagicNoSell = 67890;

OrderSend(Symbol(),OP_BUY,1,Ask,......,MagicNoBuy ,.,..);
OrderSend(Symbol(),OP_SELL,1,Bid,......,MagicNoSell,.,..);
 
вам не нужна отдельная магия для покупки и продажи, вы можете легко отфильтровать их с помощью OrderType()
 
7bit:
вам не нужна отдельная магия для покупки и продажи, вы можете легко отфильтровать их с помощью OrderType()


спасибо за помощь

 
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
 

Я использую диапазон магических чисел, чтобы можно было использовать различные методы SL для сделок.

например, MAGIC_NUMBER_BASE = 1234500

Затем я использую "смещение" от 0 до 99, чтобы сгруппировать сделки по типу SL. Затем я использую код типа

      if(OrderMagicNumber() < MY_MAGIC_LO || OrderMagicNumber() > MY_MAGIC_HI)

для поиска моих сделок (на самом деле этот код предназначен для ИСКЛЮЧЕНИЯ моих сделок!)

 
sxTed:

Jon эта функция выдает уникальные числа

//+------------------------------------------------------------------+
//| 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, и так далее ...


Заранее спасибо!

 

... Продолжение ответа выше


А может быть, я мог бы контролировать, когда порядковый номер будет увеличиваться?

Т.е. после каждого набора заказов? Например, после 2 заказов.

Чтобы при выборе и сравнении я мог выбирать только заказы с одинаковым порядковым номером.

Как это закодировать?


Спасибо!

 
Почему бы не использовать уникальный номер билета, который вы получаете при использовании функции ordersend()?

Сохраните тезисы в массиве[][]


пример.


Торговля 1
TicketArray [1] [0] = Ticket0;
TicketArray [1] [1] = Ticket1;

Торговля 2
TicketArray [2] [0]
TicketArray [2] [1]

Торговля 3
TicketArray [3] [0]
TicketArray [3] [1]

... И так далее

Причина обращения: