初学者的问题 MQL4 MT4 MetaTrader 4 - 页 20

 
Vitalie Postolache:
再一次。在处理一个订单时,OrderSelect必须放在第一位 。然后是其他一切。
谢谢你的答复...你是说if(OrderSelect(i=0;i<accTotal;i++)==true) 这一行写得不对,还是在错误的代码位置?
 
bablusut:
谢谢你的答复...你是说if(OrderSelect(i=0;i<accTotal;i++)==true) 这一行写得不对,还是在代码的错误位置? ...
我在那里添加了细节。
 

Renat Akhtyamov:
по ссылке пройдите, она у Вас в посте выделена.

我已经看过了,它没有必要的信息,空缓冲区的10位数值和有信号时的价格值...mql4代码如何表示缓冲区内没有或存在一个值?(我不止一次用过它,但忘记了......)

if( iCustom(NULL,t, "T...c",1,b) != .......).....

 

atik441:уже смотрел. нет там нужной информации .в пустом буфере 10и значное значение  а при наличии сигнала - значение цены... и как в коде mql4 обозначается отсутствие или наличие значения в буфере ? (пользовался не раз ,да забыл ...) 

if( iCustom(NULL,t, "T...c",1,b) !=EMPTY_VALUE).....
 
Vitalie Postolache:
if( iCustom(NULL,t, "T...c",1,b) !=EMPTY_VALUE).....我们需要的是。谢谢你的提醒 !
 

帮助理解。如果有两个不同方向的订单,是否可以按顺序执行

公开交易首先触发任何交易的TP,然后才是SL,虽然在交易过程中SL水平

任何一个行业都是先通过的?

 
ganri:

帮助理解。如果有两个不同方向的订单,是否可以按顺序执行

公开交易首先触发任何交易的TP,然后才是SL,虽然在交易过程中SL水平

任何一个行业都是先通过的?

分析 asc/bid
 
Vitalie Postolache:

再一次。在处理一个订单时,OrderSelect必须放在第一位 。然后是其他一切。

如果我们是在一个顺序评估的循环中工作,行动的顺序如下

1.检查 if(OrderSelect())

2.检查它是否是正确的订单,我们通常检查符号和魔法号码,然后检查类型if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic && OrderType()<2) - 在这种情况下,只有为当前符号和指定魔法号码的市场订单被处理

其他数据的处理,如OrderComment()、OrderProfit()等。

它看起来会是这样的。

for(int i=OrdersHistoryTotal()-1; i>=0; i--) //перебираем историю торгов
{
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) //если ордер выбран то работаем дальше, иначе смысла нет
      {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic && OrderType()<2) //Если ордер тот, что нам нужен (эту проверку можно и опустить, если нужно обработать все ордера в истории)
         {
            if(StringFind(OrderComment(),"[tp]",0)>-1) //если найден признак закрытия профитом
            Print("Order #",OrderTicket()," profit: ", OrderTakeProfit());
            if(StringFind(OrderComment(),"[sl]",0)>-1) //если найден признак закрытия стоплосс
            Print("Order #",OrderTicket()," loss: "OrderTakeProfit());
         }
      }
}

谢谢你的答复...因此,为了搜索交易历史中的订单,我们使用函数OrdersHistoryTotal,在抛弃所有我们不需要的东西后,它看起来像这样

for(int i=OrdersHistoryTotal()-1; i>=0; i--) // - 这里有一个问题,"accTotal " 在函数模板中是什么意思,我们已经抛弃了它。为什么你把 "i--" ,而不是像模板中的"i++"
- 第二个函数OrderComment 返回所选订单的评论,如果它被前一个函数OrdersHistoryTotal 选中,其形式为

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) //- 其中 "i", 这是 之前函数中的"i>=0",而 "SELECT_BY_TICKET "被替换为 "SELECT_BY_POS" ,并增加了 "MODE_HISTORY"-- 为什么?

- 第三行是定义,我们实际上不需要检查必要的订单,因为我们在这个历史中只有被TP和SL关闭的市场订单(我们可能有一个关闭的挂单,但这将是罕见的),所有其他订单参数对我们来说并不重要。唯一重要的是历史上已关闭的订单数量将不断增加,是否有可能使我们的重新计算采取一定数量的最后订单,例如5-10个,而不是所有的?

- 最后四行很清楚,唯一的问题是关于PlaySound函数,它的代码应该插在每个"Print("...") " 行之后,形式如下

bool PlaySound(

字符串 // 文件名

);

...还是说它也是以某种方式转换的?

 
bablusut:

阅读关于循环的知识,它们是如何被限制的,以及它们是如何工作的,总的来说,如果能阅读一本关于C++的初学者的教科书就更好了,C++与MQL非常相似,唯一的区别是在交易函数。

你还应该阅读 MQL教程 和编译器的帮助。 论坛上的文章在窗口的上边框,蓝色背景。你不能只是在论坛上复述和解释整个课程。

Учебник по MQL4
Учебник по MQL4
  • book.mql4.com
Учебник по MQL4
 
Vitalie Postolache:

阅读关于循环的知识,它们是如何被限制的,以及它们是如何工作的,总的来说,如果能阅读一本关于C++的初学者的教科书就更好了,C++与MQL非常相似,唯一的区别是在交易函数。

你还应该阅读 MQL教程 和编译器的帮助。 论坛上的文章在窗口的上边框,蓝色背景。你不能只是在论坛上复述和解释整个课程。

谢谢维塔利-波斯托拉奇 的帮助和建议,我在六岁生日时读完所有的教科书已经太晚了--我将无法学习那么多,我应该早点做,但我没有时间我在这里真的很无聊,对不起,我不会再打扰你了。