每个货币对的EA - 每个货币对只开一次的代码是什么? - 页 4

 
onewithzachy:
你错得离谱。你的代码永远不会被执行!!!。使用RaptorUK的。

好的 :)

我只是被这个问题搞糊涂了。

"当j = 0时结束"

谢谢!

 
grey.unit:

所以它应该是这样的。

因为这是你写的。

还是我错了?

你错了 . . . 看看这个:for

在我的代码中,表达式2是j >= 0 ,意思是 ... ... while ( j >=0 ) 所以循环执行的时候j是0或更大,即从OrdersTotal() - 10,包括0

如果你使用j = 0 (也许必须写成j == 0),这意味着while(j == 0),循环只在j为0 时执行。

 
啊,好的,现在我明白了
 
RaptorUK:

不,这样做 ... ...

第一个订单的位置是0,所以如果你有5个 订单,位置是0,1,2,3,4 ... ...所以最后一个是OrdersTotal()-1 ... ...所以要倒数,你从OrdersTotal()-1开始,以0结束。

这是否意味着OrdersTotal()-1是没有订单,那么0是第一笔订单,1是两笔订单,以此类推到4,等于5笔订单。

谁能告诉我,我的理解是-1等于没有订单,这是否正确?

谢谢

 
barnacle7:

这是否意味着OrdersTotal() -1是没有订单,那么0是第1个订单,1是2个订单,以此类推到4,等于5个订单。

OrdersTotal()是未结订单的数量。 是的,如果你总共有5个订单,它们的编号为0到4。
 

我也需要关于同样问题的帮助。我是一个编码新手,我一直在尝试输入我在这里看到的代码,但它根本不工作,你能帮助我吗?Orderselect是用来

替换OrdersTotal 并控制每个EA的交易数量,但现在其他的EA却不能进行交易。

void OnTick()

{
       double movingAverageSS = iMA(NULL,60,LowerMAS,0,MODE_SMA,PRICE_CLOSE,0);    
       double lastmovingAverageSS = iMA(NULL,60,LowerMAS,0,MODE_SMA,PRICE_CLOSE,1);     
       double movingAverageSB = iMA(NULL,60,LowerMAB,0,MODE_SMA,PRICE_CLOSE,0);       
       double lastmovingAverageSB = iMA(NULL,60,LowerMAB,0,MODE_SMA,PRICE_CLOSE,1);          
       double movingAverageFS = iMA(NULL,60,UpperMAS,0,MODE_SMA,PRICE_CLOSE,0);    
       double lastmovingAverageFS = iMA(NULL,60,UpperMAS,0,MODE_SMA,PRICE_CLOSE,1);   
       double movingAverageFB = iMA(NULL,60,UpperMAB,0,MODE_SMA,PRICE_CLOSE,0);    
       double lastmovingAverageFB = iMA(NULL,60,UpperMAB,0,MODE_SMA,PRICE_CLOSE,1);    
       int b;int bM;int s;int sM;    
       bool res = (OrderSelect(b,SELECT_BY_POS));    
       bool resM = (OrderSelect(bM,SELECT_BY_POS));    
       bool ses = (OrderSelect(s,SELECT_BY_POS));    
       bool sesM = (OrderSelect(sM,SELECT_BY_POS));    
       
       if((lastmovingAverageFB<lastmovingAverageSB) && (movingAverageFB > movingAverageSB) && res == false  && resM == false )      
         {
         b = OrderSend (Symbol(),OP_BUY,lotSize,Ask,4,Ask - SLPB*_Point, Ask + TPB1*_Point,NULL,1,0,Green);       
         bM = OrderSend (Symbol(),OP_BUY,lotSize,Ask,4,Ask - SLPB*_Point, Ask + TPB2*_Point,NULL,2,0,Green);       
         }       
         else if((lastmovingAverageFS>lastmovingAverageSS)&&(movingAverageFS<movingAverageSS) && ses == false && sesM == false)     
         {  
         s = OrderSend (Symbol(),OP_SELL,lotSize,Bid,4,Ask + SLPS*_Point,Ask - TPS1*_Point,NULL,3,0,Red);       
        sM = OrderSend (Symbol(),OP_SELL,lotSize,Bid,4,Ask + SLPS*_Point,Ask - TPS2*_Point,NULL,4,0,Red);   
}


 
&& res == false

如果它选择了一个订单,Orderselect将返回true。

也许你可以使用一个神奇的数字与符号名相结合。

以下是文章中的一个例子,你可以学习一下: https://www.mql5.com/en/articles/1359

MagicNumber: "Magic" Identifier of the Order
MagicNumber: "Magic" Identifier of the Order
  • www.mql5.com
In МТ3, management of open positions was rather time-taking. Traders had at their disposal a rather limited tool set to work with the list of open and closed positions. The problem of distinguishing between "own" and "someone else's" positions was solved in rather complicated ways. In МТ4, the situation has cardinally changed. Now, trader can...
 
  1.        int b;int bM;int s;int sM;    
           bool res = (OrderSelect(b,SELECT_BY_POS));    
           bool resM = (OrderSelect(bM,SELECT_BY_POS));    
           bool ses = (OrderSelect(s,SELECT_BY_POS));    
           bool sesM = (OrderSelect(sM,SELECT_BY_POS));    

    b 为无值,OrderSelect失败。s 为无值,OrderSelect失败。

  2. 选择多个订单的意义是什么?结果是最后一个成功的选择。

  3.          b = OrderSend (Symbol(),OP_BUY,lotSize,Ask,4,Ask - SLPB*_Point, Ask + TPB1*_Point,NULL,1,0,Green);       
             bM = OrderSend (Symbol(),OP_BUY,lotSize,Ask,4,Ask - SLPB*_Point, Ask + TPB2*_Point,NULL,2,0,Green);       
    
    b和bM是本地变量。票号在你返回时就会丢失。

  4. 为什么你想按位置选择,却想存储票号?如果你通过有效的票号来选择,并不意味着订单是开放的。

  5. 你以卖价 买入,以买价 卖出。

    1. Bid/OrderClosePrice 达到时,你的买入订单的TP/SL(或卖出止损/卖出限价)被触发。使用Ask±n,会使你的SL变短,TP变长,因为有价差。你不希望在任何一个方向使用指定的金额吗?

    2. 您的卖出订单的止损/止赢(或买入止损/买入限价)将在买入价/收盘价 达到时被触发。要在特定的买入价 触发,请添加平均价差。
      MODE_SPREAD (Paul) - MQL4编程论坛 - Page 3 #25

    3. 图表只显示买入 价格。打开问价线,看看价差有多大(工具→选项(control+O)→图表→显示问价线。)
      大多数有可变点差的经纪商在一天结束时(美东时间下午5点)±30分钟内会大幅扩大。我的GBPJPY(OANDA)显示平均点差=26点,但平均最大点差=134。