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

 
Alexandr Sokolov:
我在哪里可以查到策略测试器 中的订单到期时间?栏目选项卡中没有它
你如何设置过期时间?
 
MakarFX:
你如何设置过期时间?
void Open_Order(ENUM_ORDER_TYPE  Type,
                double           price,
                double           sl_price,
                double           tp_price,
                datetime         close)
  {
   
   MqlTradeRequest  request;
   MqlTradeResult   result;
   
   ZeroMemory(request);
   ZeroMemory(result);
   
   request.action        = TRADE_ACTION_PENDING;
   request.magic         = id_number;
   request.symbol        = _Symbol;
   request.volume        = volume;
   request.price         = price;
   request.sl            = sl_price;
   request.tp            = tp_price;
   request.deviation     = slippage;
   request.type          = Type;
   request.type_filling  = ORDER_FILLING_FOK;
   request.type_time     = ORDER_TIME_SPECIFIED;
   request.expiration    = close;
   
   if(!OrderSend(request,result)) Print("Error - ",result.retcode);
   
  }


 
Alexandr Sokolov:


在授权书上添加评论,我没有看到任何其他选项(
 
MakarFX:
添加到订单评论中,我没有看到任何其他选项(

谢谢你

 
这是我第一次在论坛上发表评论,我对这个社区不是特别熟悉,所以不要向我扔太多的番茄。言归正传。当我写我的EA时,我面临的问题是OrdersTotal()对所有未平仓的订单起作用(这是有道理的),在设置 "一个订单关闭,下一个打开 "的条件时,我惊讶地发现,即使我在条件和重复代码中设置大师,我账户上的两个或多个EA在打开的图表 上也不会让对方同时工作(直到一个订单关闭,另一个不会打开)。我搜索了很多关于这个问题的地方--我得到了很多解决方案,据我所知,这是基本的,但在所有情况下,没有任何效果。在打开和/或关闭 "如果... "时,我应该设置什么条件?(......) " 只对一个特定的EA进行唯一化的OrdersTotal,而另一个EA(它的OrdersTotal)将不会有任何关系,并保持它自己的所有订单的数量。谢谢你。
 
Порт-моне тв:
这是我在论坛上的第一次评论,我对这个社区不是特别熟悉,所以不要向我扔西红柿。言归正传。当我写我的EA时,我面临的问题是OrdersTotal()对所有未平仓的订单都有效(这是有道理的),我惊讶地发现,即使我在条件和复制代码中设置一个主控,两个或多个EA同时在未平仓的图表 上也不会让对方工作(直到一个订单被关闭,下一个订单将不会打开)。我搜索了很多关于这个问题的地方--我得到了很多解决方案,据我所知,这是基本的,但在所有情况下,没有任何效果。在打开和/或关闭 "如果... "时,我应该设置什么条件?(......) " 只对一个特定的EA进行唯一化的OrdersTotal,而另一个EA(它的OrdersTotal)将不会有任何关系,并保持它自己的所有订单的数量。谢谢你。

附上你的代码,你会被指出错误。

 
//+------------------------------------------------------------------+
//| sova_2bars.mq4 | |
//| Copyright 2020, MetaQuotes Software Corp.
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp.
#属性链接 "https://www.mql5.com"
#财产版本 "1.00"
#属性严格

外置 int Magic = 6477;
外来的双数Lot = 0.01。
外置 int Slippage = 3;
外来的int TakeProfit = 1600;
外来的int StopLoss = 800;
extern int Experation = 0;

double Openone, //第一支蜡烛的开盘价。
Opentwo, //第二支蜡烛的开盘价
Closeone, //第一支蜡烛的收盘价
Closetwo, //第二支蜡烛的场景
Lowone, //第一支蜡烛的最低价格
Lowtwo, //第一支蜡烛的价格
Lowthree, //第三支蜡烛的最低点现场
Openthree, //第三根蜡烛的开盘价
Closethree, //第三根蜡烛的收盘价
CloseOrder, //关闭订单
Highone, //第一支蜡烛的最高价格
Hightwo, //第二支蜡烛的价格最大值
Highhree, //第二支蜡烛的价格最大值
Highfour, //价格是第二支蜡烛的最大值
Highfive, //最大的第二支蜡烛的价格
Highsix, //最大第二根蜡烛的价格。
Highseven, //最大第二根蜡烛的价格
Highheight, //最大第二根蜡烛的价格
Lowfour, //第四支蜡烛的最低价格
Lowfive, //第五支蜡烛的第一个价格
Lowsix, //第六支蜡烛的最小场景
Lowseven, //最低限度的第七支蜡烛的场景
Loweight, //第八根蜡烛的最低点现场
Closefour, //第四支蜡烛的收盘价。
敞开的四分之一。
低15。
低25。
SLbuy, TPbuy, SLsell, TPsell, //第四支蜡烛的开盘价
订单开价。
int ticket, ticketclose;

//+------------------------------------------------------------------+
//|专家初始化功能|
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED)。
}
//+------------------------------------------------------------------+
//|专家去初始化函数|
//+------------------------------------------------------------------+
空白的OnDeinit(const int reason)。
{
}
//+------------------------------------------------------------------+
//|专家勾选功能|
//+------------------------------------------------------------------+
空白的OnTick()
{
//--------------------确定必要的条形物的价格
Openone = NormalizeDouble(iOpen(Symbol(), Period(), 0), Digits);
Highone = NormalizeDouble(iHigh(Symbol(), Period(), 0), Digits)。
Hightwo = NormalizeDouble(iHigh(Symbol(), Period(), 1), Digits);
Highthree = NormalizeDouble(iHigh(Symbol(), Period(), 2), Digits)。
Highfour = NormalizeDouble(iHigh(Symbol(), Period(), 3), Digits)。
Highfive = NormalizeDouble(iHigh(Symbol(), Period(), 4), Digits)。
Highsix = NormalizeDouble(iHigh(Symbol(), Period(), 5), Digits)。
Highseven = NormalizeDouble(iHigh(Symbol(), Period(), 6), Digits)。
Higheight = NormalizeDouble(iHigh(Symbol(), Period(), 7), Digits);
Opentwo = NormalizeDouble(iOpen(Symbol(), Period(), 1), Digits);
Openthree = NormalizeDouble(iOpen(Symbol(), Period(), 2), Digits);
Openfour = NormalizeDouble(iOpen(Symbol(), Period(), 3), Digits);
Closeone = NormalizeDouble(iClose(Symbol(), Period(), 0), Digits);
Closetwo = NormalizeDouble(iClose(Symbol(), Period(), 1), Digits)。
Closethree = NormalizeDouble(iClose(Symbol(), Period(), 2), Digits)。
Closefour = NormalizeDouble(iClose(Symbol(), Period(), 3), Digits);
Lowone = NormalizeDouble(iLow(Symbol(), Period(), 0), Digits)。
Lowtwo = NormalizeDouble(iLow(Symbol(), Period(), 1), Digits);
Lowthree = NormalizeDouble(iLow(Symbol(), Period(), 2), Digits)。
Lowfour = NormalizeDouble(iLow(Symbol(), Period(), 3), Digits)。
Lowfive = NormalizeDouble(iLow(Symbol(), Period(), 4), Digits)。
Lowsix = NormalizeDouble(iLow(Symbol(), Period(), 5), Digits)。
Lowseven = NormalizeDouble(iLow(Symbol(), Period(), 6), Digits)。
Low15 = NormalizeDouble(iLow(Symbol(), Period(), 14), Digits);
Low25 = NormalizeDouble(iLow(Symbol(), Period(), 24), Digits);

//----индикатор - условия--------------------------------------


double BigTrand = iMA(NULL, 0,50,0,MODE_SMA, PRICE_CLOSE, 1);
double SmallTrand = iMA(NULL, 0,5,0,MODE_SMA, PRICE_CLOSE, 1);
double LowerBB = iBands(_Symbol,_Period,17,1,0,PRICE_CLOSE,MODE_LOWER,1);
double UpperBB = iBands(_Symbol,_Period,17,1,0,PRICE_CLOSE,MODE_UPPER,1);
double MiddleBB = iBands(_Symbol,_Period,17,1,0,PRICE_CLOSE,MODE_MAIN,1);
double Bears = iBearsPower(_Symbol,_Period, 5, PRICE_CLOSE,0);
double Bulls = iBullsPower(_Symbol,_Period, 5, PRICE_CLOSE,0);
double Parab = iSAR(_Symbol,_Period,0.002, 1, 0);

SLbuy = NormalizeDouble(Ask - StopLoss*Point, 5);
TPbuy = NormalizeDouble(Ask + TakeProfit*Point, 5);
SLsell = NormalizeDouble(Bid + StopLoss*Point, 5);
TPsell = NormalizeDouble(Bid - TakeProfit*Point, 5);

//-------------функции---------------------------------------

如果 ( Ask>0 && Bid >0)
{

如果(OrdersTotal()<1)
如果(Close[1]>Open[1])。
如果(Bears < -0.00035 && MiddleBB > Ask)
{
ticket = OrderSend(Symbol(,OP_BUY, Lot, Ask, Slippage, SLbuy, TPbuy, "openbuy order", Magic, 0, Blue)
}
如果(OrdersTotal()==1)
if(Bulls > 0.00035 && MiddleBB < Ask && Bears > 0 && Opentwo < Closetwo && Openthree < Closethree && BigTrand < Ask)
CloseBuyPositions1()。
}





//---- 函数结束
}
//---------------------------------------------------------------------
空白的CloseBuyPositions1()。
{
for(int i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i, SELECT_BY_POS,MODE_TRADES)。
string CurrencyPair=OrderSymbol();
如果(_Symbol==CurrencyPair)
如果(OrderType()==OP_BUY)
{
OrderClose(OrderTicket(), OrderLots(), Bid, 3, NULL)。
}
}
}




 
 int OrderOfSymbol=CounterOrderTradeType(-1);
 
//-------------функции---------------------------------------

if ( Ask>0 && Bid >0)
   {

 if (OrderOfSymbol<1)
    if (Close[1]>Open[1])
    if(Bears < -0.00035 && MiddleBB > Ask)
         {
    ticket = OrderSend(Symbol(),OP_BUY, Lot, Ask, Slippage, SLbuy, TPbuy, "открыт ордер на покупку", Magic, 0, Blue);
         }
         
   
if (OrderOfSymbol==1)
   if(Bulls > 0.00035 && MiddleBB < Ask && Bears > 0 && Opentwo < Closetwo && Openthree < Closethree && BigTrand < Ask)
    CloseBuyPositions1();
   } 
//+------------------------------------------------------------------+
//| Подсчет ордеров потекущему символу                               |
//+------------------------------------------------------------------+
int CounterOrderTradeType(ENUM_ORDER_TYPE order_type)
   {
   int cnt=0;
   //----
   for(int pos=OrdersTotal()-1;pos>=0;pos--)
      {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)==false) continue;
      if(OrderSymbol()!=_Symbol) continue;
      if(order_type == OrderType() || order_type == -1) cnt++;
      }
   //----
   return(cnt);
   }
 
Порт-моне тв:
//+------------------------------------------------------------------+
//| sova_2bars.mq4 | |
//| Copyright 2020, MetaQuotes Software Corp.
//| https://www.mql5.com |
//+------------------------------------------------------------------+

OrdersTotal()返回Metatrader 4 中所有头寸和订单的总金额。

   for(int i = OrdersTotal() - 1; i >= 0; i--)
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         if(OrderMagicNumber() == iMagicNumber)
            if(OrderSymbol() == Symbol())
              {

               }

这样你就可以为一个MedgX和一个符号分开下单...

 

@MakarFX,谢谢你....我在编译时得到这些错误

'CounterOrderTradeType' - 函数未定义 测试许多expt trade.mq4 48 19

'CounterOrderTradeType' - 只允许在全局、命名空间或类范围内进行函数声明 测试许多expt trade.mq4 141 5


MakarFX
MakarFX
  • www.mql5.com
Добавил тему Окно модификации Доброго времени суток. В терминале, если я дважды щелкаю мышью на линию ордера, то открывается окно модификации. Но если на линии находится цена открытия одного ордера и тейк профит другого, то открывается последний измененный ордер. Уважаемые Профи Добавил тему Нужен индикатор. Кто может написать такое? Я уже...