[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 462

 
Roman.:

在周末外出之前的星期五,这可能是正常的...你仍然有一个上帝认可的百分比。

一切都应该写在你的交易协议中...

我没有看你的脚本,但举例来说,Alpari在新闻上扩大了价差(周末之前)。



因此,我将用所有可能的关于我的经纪公司和我的账户的数据编写一个EA。在任何行动中,警报都会立即出现。

而且我找不到我的经纪公司允许我下的订单 的限制数量,为什么我应该简单地下1000个挂单,一旦发现限制就自动删除?

 
rosomah:


1.我准备写一个顾问,在那里我将输入所有可能的关于经纪公司和账户的数据。在任何行动中,警报都会立即出现。

我无法在我的经纪公司中找到我将能下的订单的极限数量,为什么我应该简单地收取1000个挂单,然后在找到极限时自动删除它们?

1)警报不会有帮助。你必须把这些环境参数输入到负责执行交易标准的代码部分,如果任何一个参数超过了它的最大允许值(你设定的),那么你就必须做出适当的决定(例如,拒绝交易......-执行交易操作)。

2.不,你不能这样做,IMHO - 阅读规则和交易条件。如果没有,那就打电话给技术支持,并打电话给当地的厨师,询问所有关于你的交易账户类型的此类问题。

 

你好。

我已经在这个代码上工作了一整天--它给出了错误131。代码应该穿过所有的市场订单,在同一周期的每个转折点,重新读取所选订单的符号的未结订单量。如果一个符号的买入和卖出头寸的数量不一样,就会为剩余的数量开出一个锁定订单。

     int i;
     int ii;
     string SMB="";
     double Price=0;
     double PriceAsk=0;
     double PriceBid=0;
     double SchBuyLotsSMB=0;
     double SchSellLotsSMB=0;
     double MarketLotSMB=0;
     for (i=OrdersTotal()-1;i>=0;i--)
      {
       if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
         Alert ("Ошибка ",GetLastError()," выбора ордера!");
         Print ("Ошибка ",GetLastError()," выбора ордера!");
        }
       else
        {
         SMB=OrderSymbol();
         PriceAsk=MarketInfo(SMB,MODE_ASK);
         PriceBid=MarketInfo(SMB,MODE_BID);
         for (ii=OrdersTotal()-1;ii>=0;ii--)
          {
           if (!OrderSelect(ii, SELECT_BY_POS, MODE_TRADES))
            {
             Alert ("Ошибка ",GetLastError()," выбора ордера!");
             Print ("Ошибка ",GetLastError()," выбора ордера!");
            }
           else
            {
             if(OrderSymbol()==SMB)
              {
               if(OrderType()==OP_BUY)
                {
                 SchBuyLotsSMB=SchBuyLotsSMB+OrderLots();
                }
               if(OrderType()==OP_SELL)
                {
                 SchSellLotsSMB=SchSellLotsSMB+OrderLots();
                }
              }
            }
          }
         MarketLotSMB=SchBuyLotsSMB-SchSellLotsSMB;
         if (MarketLotSMB<0)
          {
           MarketLotSMB=MathAbs(MarketLotSMB);
           Price=PriceAsk;
           OPENORDER ("Buy",SMB,MarketLotSMB,Price);
          }
         else
          {
           if (MarketLotSMB>0)
           Price=PriceBid;
           OPENORDER ("Sell",SMB,MarketLotSMB,Price);
          }            
        }
       SMB="";
       Price=0;
       PriceAsk=0;
       PriceBid=0;
       SchBuyLotsSMB=0;
       SchSellLotsSMB=0;
       MarketLotSMB=0;        
      }

请帮助我找到原因。131 - 我读到,这与卷的查找错误有关。但我没有看到它。

提前感谢您的回答。

 
TarasBY:
你在订单循环中使用了一个奇怪的循环,但这是作者的权利,然后在第二个循环之前将总手数(SchBuyLotsSMB和SchSellLotsSMB)清零。
所以我正在将它们归零。
 
nemo811:

你好。

我在这个代码上工作了一整天--它给出了错误131。代码应该穿过所有的市场订单,在同一周期的每个转折点,重新读取所选订单的符号的未结订单量。如果一个符号的买入和卖出头寸的数量不一样,就会为剩余的数量开出一个锁定订单。

请帮助我找到原因。131 - 我读到,这与卷的查找错误有关。但我没有看到它。

提前感谢您的回答。


你在哪里出现了滑坡?也许这就是原因!
 
顺便说一下,如果订单是为一个符号打开的,并且EA本身是在这个符号上运行的,那么代码就能正常工作。如果2个或更多货币对的订单是开放的,或者如果EA在一个没有订单的符号上运行,会出现错误。
 
borilunad:

你在哪里出现了滑坡?也许这就是原因!

什么意思?

Sleep (1000);

?

我已经试过了--它不起作用。

 
nemo811:
这就是我重置它们的方法。
我并没有马上注意到它。或者(我想做的是强制性的),使传递给token函数的lot值规范化。
 
TarasBY:
没有马上注意到它。作为一种选择(我一定会这么做),使传递给token函数的lot值规范化。
有这样一个想法。我现在就去试试。谢谢你。
 
nemo811:

什么意思?

?

我已经试过了--它不起作用。


滑点,开盘价 后,至少有30个5!