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);
}
想法:你可以像往常一样总是使用相同的神奇数字,使其与其他所有使用神奇数字的交易兼容,但也可以通过在注释中包含一个对每对交易都是唯一的数字,将其与注释字符串相结合。然后,你可以通过简单地寻找具有相同魔法和 注释的交易来找到每对交易中的另一个交易。
我怎样才能通过评论和魔法号码找到一个订单?
我有15个触发器
我不想要一个标准,比如说TP 200 SL 300
每个货币对 都有不同的TP和SL,这取决于触发器的统计数据
如果有更高概率的触发器出现,我想识别它并采取行动
触发器1欧元/美元100概率:94%,美元/日元300概率:74%欧元/日元200概率:100%。
如果触发器1交易了其中一个货币对欧元/美元,那么在该触发器下就不能再交易该货币对。
我仍然希望为触发器2触发器3和(触发器1只是不同的货币对)进行交易。
y 不是
你不需要为买入和卖出单独的魔法,你可以用OrderType()轻松地过滤它们。
谢谢你的帮助
你不需要为买入和卖出单独的魔法,你可以用OrderType()轻松地过滤它们。
我使用一个魔法数字的范围,所以我可以使用不同的SL方法进行交易。
例如:MAGIC_NUMBER_BASE = 1234500
然后使用0-99的 "偏移量 "来按SL类型分组我的交易。然后,我使用代码如
if(OrderMagicNumber() < MY_MAGIC_LO || OrderMagicNumber() > MY_MAGIC_HI)
来寻找我的交易(实际上这段代码是为了排除我的交易!)。
乔恩这个函数发出唯一的数字
谢谢,我终于可以重温这个话题了,正在尝试这个。我不明白这个样本。为什么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]
票券阵列[2][1]
交易3
票券阵列[3] [0]
票券阵列 [3] [1]
...以此类推