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

 
Valeriy Yastremskiy #:
没有这样的事情。这不是一种程序性语言。在这里,该计划是严格的自上而下。而函数调用解决了一切有循环的问题,如果这样的话。和OOP)
明白了。明白了。谢谢你的澄清。
 
Tretyakov Rostyslav #:

谢谢你!

 
Tretyakov Rostyslav #:

尊敬的先生,您好

    if(OrderSelect(FindTicketOrder(), SELECT_BY_TICKET,MODE_TRADES)) 
    { 
      if(OrderProfit()<=-x);
        {
         OrderClose(FindTicketOrder(),OrderLots(),OrderClosePrice(),iSlippage,clrPink);
        }
    } 
  else 
    Print("OrderSelect() вернул ошибку - ",GetLastError());

在一张票上有一个盈利订单,我想在它达到-x时关闭。

但我得到的是连续关闭的所有订单。

你能告诉我如何正确地做到这一点吗?

 
Alexander Avksentyev #:

尊敬的先生,您好

在一张票上有一个盈利订单,我想在它达到-x时关闭。

但我得到的是连续关闭的所有订单。

你能告诉我怎么做才正确吗?

尝试以这种方式进行

 int min_ticket=FindTicketOrder();
    if(OrderSelect(min_ticket, SELECT_BY_TICKET,MODE_TRADES)) 
    { 
      if(OrderProfit()<=-x);
        {
         OrderClose(min_ticket,OrderLots(),OrderClosePrice(),iSlippage,clrPink);
        }
    } 
  else 
    Print("OrderSelect() вернул ошибку - ",GetLastError());

一般来说,你应该开发整个功能,了解你在做什么

//+------------------------------------------------------------------+
void Функция()
  {
   ...твой код, возможные ошибки;
  }
//+------------------------------------------------------------------+
 
Alexander Avksentyev #:

尊敬的先生,您好

在一张票上有一个盈利订单,我想在它达到-x时关闭。

但我得到的所有 订单都是连续关闭的。

你能告诉我如何正确地做到这一点吗?

如果我只看到一个OrderClose调用,你如何让所有的订单都关闭?

这段代码甚至在哪里被调用都不是很清楚...该机器人的算法也不清楚...
 
Mihail Matkovskij #:

如果我只看到一个OrderClose调用,如何关闭所有订单?

它在开盘后立即关闭订单

 
Tretyakov Rostyslav #:
这不是你想要的--这只是一个例子。我在做一个半自动交易的EA。


你想要什么,你必须自己写)。

如果有的话,我将会提供帮助。

因此,我将更具体地描述我对这样一个快速挂单面板EA的需求,我已经从这个列表中找到了部分代码(20%),但其余的我需要问你,同事。


1) 外壳:在图表上显示一个带有按钮的板块:BUY_lp(较低的ASK in___pips), SELL_hp(较高的BID in___pips) - 在板块上手动输入的点数,BUY_lt(较低的ASK到____seconds),SELL_ht(较高的BID到____seconds) - 在板块上手动输入的秒数,CLOSE_buys,CLOSE_sells - 关闭所有订单。

a) 在图表上创建一个按钮的代码;将记分牌作为一个背景对象。

b) 向该记分牌输入数值的代码(点、秒)。

c) 将点值保存在某一存储文件中,在按下按钮后,价格是固定的,对于你想进入市场的价格,点数是增加/减少的。

d) 在某一存储文件中保存秒的数值,在该文件中连续计算所选 "秒 "期间价格的最低/最高值。

2)内部:执行。

a) 在按下BUY_lp或SELL_hp按钮后,从文件中读取点数和固定价格,以便与当前价格比较。

b) 当BUY_lt或SELL_ht按钮被按下时,以秒为单位的数值和变化的最高/最低价格被从文件中读取,以便与当前价格进行比较。

c) 当当前价格达到所需值时--进入市场(开放订单)。

d) 关闭订单或所有订单的按钮。 这个按钮的功能应该根据执行模式的不同而不同;如果价格是按 "点 "输入的,那么,在关闭同等数量的点后,关闭的价格应该在 "更好 "的方向上有所不同(在你按下 "关闭 "后等待该价格),如果按钮是 "按秒",那么应该计算一定时期内的最佳价格(等待该价格,但在你按下按钮的时刻不降低/提高)。

 
Alexander Avksentyev #:

打开后立即关闭订单

嗯,是的,由于点差的关系,利润在进入的那一刻总是有一个负值...尝试减少x的值。

而且最好以点为单位进行自己的利润计算功能(当然,如果你不想以入金货币设置)。
 
Mihail Matkovskij #:

嗯,是的。"利润 "在进入时总是有一个负值,因为有价差...试着减少x的值。

-x小于传播,输出到打印

if(OrderProfit()<=-x);

如果条件符合,将为真,添加一个关闭命令,立即关闭

 
Mihail Matkovskij #:

嗯,是的,由于价差的存在,利润在进入后的那一刻总是有一个负值...尝试减少x的值。

而且最好是自己做一个以点为单位计算利润的函数(当然,如果你不想以入金货币设置的话)。

你可以用积分来做,这并没有什么区别。我只是想让它变得更简单

原因: