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

 
ax00071: 日志显示试图关闭buy2,订单关闭功能 的未知票。由于我在工作中,根据记忆编写的代码

啊。因为我也在工作,所以凭记忆写的。尝试:和票据与订单关闭报告中的比较。在测试器中,似乎是0、1、2、3,....。

RefreshRates(); // Это обязательно ДО OrderSelect() и лучше в таком виде: while (! RefreshRates()) ;
for(int i=OrdersTotal()-1; i>=0; i--)
  if (! OrderSelect(i,SELECT_BY_POS)) continue;
  Ticket=OrderTicket(); 
  Lot   =OrderLots();

  // Сообщение о попытке следует выдавать ДО ее осуществления, т.к. попытка может что-то изменить
  Alert ("Попытка закрыть Buy Ticket=",Ticket, "  Lot=",Lot);  // Кажется Alert в тестере бестолкова, попробуйте Print
  Ans=OrderClose(Ticket,Lot,OrderClosePrice() ... );
}

 
novikov433:

我想学习如何制作一个EA。 也许市场会发生变化,我将不得不付出更多,例如,改变一下算法?

我不知道我是否真的能在任何猫头鹰构造器中做一个TS,但我更想了解基本的功能,比如在某个地方做一个止损,或者在某些日子下单交易。

我不知道在构造函数中1,2,3等该怎么做,为什么要用箭头把所有东西按这个顺序连接起来。 谁能提供从A到Z的mql 4培训,而不是像互联网大侠们那样,创造了一些课程,但没有详细解释为什么会这样,换句话说,你不会自己做出什么新东西,你只是要复制他们的代码....。我的意思是,他们知道什么订单负责什么,他们并没有随意点.....,好吧,让专业人士去做金字塔、动态手数、智能止损;我的任务是不同的--下载所需的过滤器,了解趋势形成的本质。谢谢你的帮助!

你只需要文件,这些文件是可以得到的,你需要能够阅读并理解你所阅读的内容。如果你从第一遍开始就没有成功地理解它,那就多读几遍,最好是以较慢的速度读,这样你的大脑就有时间来认识你所读的内容的意义。

而在这之后,想象力就可以自由发挥了。

我想根据条件开一个订单打开文档中的 "交易功能 "部分,找到打开订单的函数,按照语法编写...

哦,是的...你必须满足条件......打开 "操作符 "部分,阅读"有条件的if-else语句"并写出必要的条件。

当这一切完成后,你从头到尾阅读文档,弄清楚语言中的内容,你能得到什么。

Торговые функции - Справочник MQL4
Торговые функции - Справочник MQL4
  • docs.mql4.com
Торговые функции - Справочник MQL4
 
又是我 :)
编写了一个函数,允许在1天内不超过n个订单开仓。
现在,该功能正在耗尽存款--即在每个tick上打开订单。

我在哪里又搞砸了?)

int OrderMax = 3; // 1天内可开出的最大订单数
空白的OpenOrders()
{
for (int i = 1; i <= 5; i++)
{
如果(DayOfWeek() == i)
{
int count_max = 0。
如果(count_max <= OrderMax)
{
for(int cn = OrdersTotal()-1; cn>=0; cn--)
{
如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderType() == OP_BUY)
count_max++;
}
}
}
}
}
 
伙计们,是否可以用一个EA在其他货币对上开单?例如,一个EA只站在EURAUD 上,并以在EURAUD和GBPUSD货币对上开立交易为条件。如果可能的话,应该是什么条件?
 
ivan-baaton:
又是我:)
我写了一个函数,允许在1天内开出不超过n个订单。
现在这个功能失去了存款,也就是说,每一个tick都有订单。

我在哪里又搞砸了?)

int OrderMax = 3; // 1天内可开出的最大订单数
空白的OpenOrders()
{
for (int i = 1; i <= 5; i++)
{
如果(DayOfWeek() == i)
{
int count_max = 0。
如果(count_max <= OrderMax)
{
for(int cn = OrdersTotal()-1; cn>=0; cn--)
{
如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderType() == OP_BUY)
count_max++;
}
}
}
}
}

在我看来,这种做法根本就不符合逻辑。为什么要定义星期几?如果条件是 "今天不要开出超过xxx的订单",那么今天是什么日子有什么区别呢?

对我来说,计算今天开的订单并在条件中放置一个适当的条件似乎更合理。

                     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderType() == OP_BUY)
                     count_max++; 
错过了订单开放日期的定义。
 

Rustam Bikbulatov:
Ребята, можно ли с помощью одного советника открывать ордера на других парах? Например Советник только стоит на паре EURAUD и при условии открытии открывается сделка на парах EURAUD и GBPUSD. Какое должно быть условие если будет возможность?

它可以。

只有在测试器中,它不工作。

int  OrderSend(
   string   symbol,              // символ
   int      cmd,                 // торговая операция
   double   volume,              // количество лотов
   double   price,               // цена
   int      slippage,            // проскальзывание
   double   stoploss,            // stop loss
   double   takeprofit,          // take profit
   string   comment=NULL,        // комментарий
   int      magic=0,             // идентификатор
   datetime expiration=0,        // срок истечения ордера
   color    arrow_color=clrNONE  // цвет
   );
 
Alexey Viktorov:
它确实如此。

只有在测试器中,它不工作。


你如何列出它们? 逗号还是&&?
 
Rustam Bikbulatov:

你如何列出它们? 逗号还是&&?

他们的 是什么?"人物名单 "还是什么?

每个OrderSend 都有自己的单一字符。没有逗号或其他东西...

 
Alexey Viktorov:

他们的 是什么?"人物名单 "还是什么?

每个OrderSend都有自己的单一字符。没有逗号或其他东西...


列表对
 
LRA:

啊。因为我也在工作,所以凭记忆写的。尝试:和票证与报告中的订单内容进行比较。在测试器中,似乎是0、1、2、3,....。

谢谢你的提醒 ))我是个傻瓜......在成交时,我的条件是在周五22:00成交,没有任何附加条件来检查交易类型。这笔交易本身在几个小时前就完成了。因此,当晚上22点到来时,专家顾问开始发送订单,关闭一个已经关闭的订单......。