新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1356

 
Lerchik:

所以你的意思是,在Ask开一个市价单等于开一个买入限价单。

这里有些地方不对。假设买入价等于1.4500。因此,当我们从市场上打开一个买入订单时,它将站在买入价上,而买入价是,比方说,10点。

然后,该订单将在1.4510站稳。

现在BuyLimit订单等于1.4500。而价格比Ask上的Ask价格低10个点就会开出订单。不是按出价而是按要价。

它一点也不适合在一起。它们是不同的东西,不能这样比较。

也许,我错了?

所有的买单都是以Ask开盘,以Bid平仓,卖单则 反之。

如果你懒得看,就开一个模拟账户,进行练习。

 
Сергей Таболин:

你为什么不从阅读文档开始呢?

以下是文件中的内容。

待定订单

挂单是经纪公司发出的在未来某个日期以特定条件买入或卖出金融工具的指令。有以下几种类型的挂单。

  • 买入限价- 在等于或低于订单中指定的卖出价的交易请求当前的价格水平高于订单中的价值。通常这种类型的订单是在期望证券价格在下降到某一水平时开始增长的情况下下达的。

但我不明白这里写的是什么,如何运作。

也就是说,价格将下降到bylimit以下,Askom将打开一个订单。但同时,订单将以相同的价格或更高的价格打开?

任何地方都没有这方面的内容。只有规则。这里没有人愿意解释原因。

因此,我正在努力实现一些目标。

 
Lerchik:

以下是文件中的内容。

待定订单

挂单是经纪公司发出的在未来特定条件下购买或出售金融工具的指令。有以下几种类型的挂单。

  • 买入限价- 在等于或低于订单中指定的卖出价的交易请求当前的价格水平高于订单中的价值。通常这种类型的订单是在期望工具价格在下降到某一水平时开始增长。

但我不明白这里写的是什么,如何运作。

也就是说,价格将下降到bylimit以下,Askom将打开一个订单。但同时,订单将以相同的价格或更高的价格打开?

任何地方都没有这方面的内容。只有规则。这里没有人愿意解释原因。

因此,我想取得一些成就。

买入限价可以只设置在卖出价以下。SellLimit只能被设置为高于Bid价格。

买入止损只能设置在卖出价之上。SellStop只能设置在Bid价格以下。

当相应的价格达到相应的订单时,它将被激活并创建相应的头寸。

 
Lerchik:

以下是文件中的内容。

待定订单

挂单是经纪公司发出的在未来特定条件下购买或出售金融工具的指令。有以下几种类型的挂单。

  • 买入限价- 在等于或低于订单中指定的卖出价的交易请求当前的价格水平高于订单中的价值。通常这种类型的订单是在期望工具价格在下降到某一水平时开始增长。

但我不明白这里写的是什么,如何运作。

也就是说,价格将下降到bylimit以下,Askom将打开一个订单。但同时,订单将以相同的价格或更高的价格打开?

任何地方都没有这方面的内容。只有规则。这里没有人愿意解释原因。

因此,我正在伸手寻找一些东西。

开设一个模拟账户并进行尝试。

买入限价 设置 当前卖出价之下 ,并将在卖出价更低时 打开。

买入止损设置在当前卖出价 之上 ,将卖出价上升 时打开。

当前 卖出价 买入开盘

 
MakarFX:

开设一个模拟账户并进行练习。

买入限价 设置 当前卖出价以下 ,并在卖出价下跌 时打开。

买入止损设置在当前卖出价 之上 ,将卖出价上升 时打开。

当前 卖出价 买入开盘

这是件大事。

继续前进...

好的,买入价已经低于卖出价,卖出价打开订单。但是,订单价格是保持与订单中设定的相同,还是会有所不同?

 
Lerchik:

这是件大事。

继续前进...

好的,买入价已经跌破了订单的价格,Ascom已经开出了订单。但是,订单价格是保持与订单中设定的相同,还是会有所不同?

1 卖出价应该下降到 "赔率 "价格。

2 价格保持不变

 
MakarFX:

1 上升的价格应该下降到停顿的价格。

2 价格保持不变

非常感谢您的澄清。

我在想为什么它没有按照我想要的方式工作。

 

大家下午好。

就我对前一个问题的答案的理解,我只需要处理错误,这可能是在打开订单时发生的,这是第一件事。第二,我需要保护EA在出现错误的情况下不至于每一次勾选 都让服务器崩溃。

第一个 问题,请告诉我如何进行错误处理?

第二个 问题--如何保护自己免受服务器的冲击?

现在我的交易是这样开启的

   /*УСЛОВИЕ 1*/
   if(flag_screen1==en_vbIkl_screen1 &&flag_screen2==en_vbIkl_screen2)
   { // НАЧАЛО УСЛОВИЕ 1
   if(ao_buy!=EMPTY_VALUE && count_orders_market_buy ==0)
   {
    if(OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_market_buy)) Print("Buy Open"); // ОТКРЫВАЕМ БАЙ ОРДЕР
   }
   } // КОНЕЦ УСЛОВИЕ1

// И ОТЛОЖКИ ВОТ ТАК

   /*УСЛОВИЕ 1*/
   if(flag_screen1==en_vbIkl_screen1 &&flag_screen2==en_vbIkl_screen2)
   { // НАЧАЛО УСЛОВИЕ 1
   
   if(ao_buy!=EMPTY_VALUE && count_orders_stop_buy ==0&& max_Price>Bid)
   { //НАЧАЛО ПРОВЕРКИ УСЛОВИЯ 1 НА ОТКРЫТИЕ
   
   Print("БАЙ СТОП AO УСЛОВИЕ 1");
        if( OrderSend(Symbol(),OP_BUYSTOP,lot,max_Price,slippages,max_Price-sl,max_Price+tp ,comment_ao_otloj_buy,Magik_number,TimeCurrent()+order_life_time))Print("BUY_STOP OPEN"); // ОТКРЫВАЕМ ОТЛОЖЕННЫЙ БАЙ ОРДЕР
   
   }  //КОНЕЦ ПРОВЕРКИ УСЛОВИЯ 1 НА ОТКРЫТИЕ
   } // КОНЕЦ УСЛОВИЕ1



变量Count Market Buy是用这个函数计算的

         void data_orders(string comment="alt",int magik_number=123)
              {
         int I = 0;
   count_orders_all = 0;   //КОЛИЧЕСТВО ВСЕХ УСТАНОВЛЕННЫХ ОРДЕРОВ
   count_orders_market_all = 0; //КОЛИЧСТВО ВСЕХ РЫНОЧНЫХ ОРДЕРОВ
   count_orders_market_buy = 0;
   
   count_orders_stop_buy = 0;    //КОЛИЧЕСТВО СТОП БАЕВ
   count_orders_limit_buy = 0;   // КОЛИЧЕСТВО ЛИМИТ БАЕВ
   
   count_orders_stop_sell = 0;    //КОЛИЧЕСТВО СТОП СЕЛОВ
   count_orders_limit_sell = 0;   //КОЛИЧЕСТВО ЛИМИТ СЕЛОВ
   
   
  lot_orders_buy = 0;    //ОБЪЁМ ЛОТА ПО БАЙ ОРДЕРАМ
         lot_orders_sell = 0;      //ОБЪЁМ ЛОТА ПО СЕЛЛ ОРДЕРАМ
         balance_all = 0;          // БАЛАНС ПО ВСЕМ ОРДЕРАМ
         balance_buy = 0;         // БАЛАНС ПО ОРДЕРАМ БАЙ
         balance_sell = 0;        // БАЛАНС ПО ОРДЕРАМ СЕЛЛ
         
         
         
          for(int i = 0; i <= OrdersTotal();i ++) // перебор всех ордеров в цикле
          {
  
   if(OrderSelect(I , SELECT_BY_POS, MODE_TRADES))// выбираем ордер по переменной цикла
   {
    if(OrderMagicNumber() != magik_number || OrderSymbol() !=Symbol()) // если ордер не нашь то
    {
    continue; // переходим на следующую итерацию
    
    }
    if(comment== OrderComment() || comment=="alt")// если коментарий нашь то 
    {
    count_orders_all+=1;
    if(OrderType()== OP_BUY)
    {
    count_orders_market_all+=1;
    count_orders_market_buy+=1;
    }
    if(OrderType()== OP_SELL)
    {
    count_orders_market_all+=1;
    count_orders_market_sell+=1;
    }
    if(OrderType()== OP_BUYSTOP)
    {
    count_orders_stop_buy+=1;
    }
    if(OrderType()== OP_BUYLIMIT)
    {
    count_orders_limit_buy+=1;
    
    }
    if(OrderType()== OP_SELLSTOP)
    {
    count_orders_stop_sell+=1;
    
    }
    if(OrderType()== OP_SELLLIMIT)
    {
    count_orders_limit_sell+=1;
    
    }
    
    
    
    }
         
         
              }
              }
              }

如果我想以这种方式进行交易,我想知道如何避免在出现错误时服务器颤动。

 
DanilaMactep:

大家下午好。

请给我写信,告诉我如何正确处理错误,以及如何避免服务器在发生错误时每次都鸣叫?
if (GetLastError()==141){Alert(GetLastError()); ExpertRemove();}
 
MakarFX:

这个请求应该写在每一行试图使用Ordersend打开订单的后面,对吗?

但我有一个问题--如果删除EA已经从图表中删除了EA,我应该如何让它自动重新连接到图表上并继续工作? 你能否更详细地描述一下这个问题--错误141-- 请求 多。如果有太多的请求,我们就从图表中删除EA。 接下来我应该怎么做--等到早上起床后,改变一切,然后到电脑前再次将EA附加到图表中?

原因: