如何创建一个神奇的数字阵列? - 页 3

 
我想为买单和卖单 设置一个单独的号码,这可能吗?
 
7bit:
想法:你可以像往常一样总是使用相同的神奇数字,使其与其他所有使用神奇数字的交易兼容,但也可以通过在注释中包含一个对每对交易都是唯一的数字,将其与注释字符串相结合。然后,你可以通过简单地寻找具有相同魔法 注释的交易来找到每对交易中的另一个交易。

我怎样才能通过评论和魔法号码找到一个订单?

我有15个触发器

我不想要一个标准,比如说TP 200 SL 300

每个货币对 都有不同的TP和SL,这取决于触发器的统计数据

如果有更高概率的触发器出现,我想识别它并采取行动

触发器1欧元/美元100概率:94%,美元/日元300概率:74%欧元/日元200概率:100%。

如果触发器1交易了其中一个货币对欧元/美元,那么在该触发器下就不能再交易该货币对。

我仍然希望为触发器2触发器3和(触发器1只是不同的货币对)进行交易。

 

y 不是

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:

乔恩这个函数发出唯一的数字

//+------------------------------------------------------------------+
//| 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]
票券阵列[2][1]

交易3
票券阵列[3] [0]
票券阵列 [3] [1]

...以此类推