[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 64

 
HoBu4ek >> :
你能告诉我如何使EA同时为多个符号开立订单吗?>> 提前感谢!

这是不可能的,因为EA只能为一个符号开立订单,然后你必须等待交易(而且不一定成功,也不一定快),为其他订单释放交易流。

 
Drugoy писал(а)>>

先生们,请给一个新来的人提供建议!我下载了教程MQl4BookRussian.chm(作者Sergey Kovalev),问题是用这种格式打印非常混乱。Probyby将这段文字复制到doc格式,图片消失。你知道教科书是否有适合打印的格式(用于在显示器上阅读,眼睛都累了)?

直接从网站上尝试在线版本的教科书--https://book.mql4.com/ru/。 而且你可以毫无问题地将其转移到文档中。

 
Reshetov >> :

这是不可能的,因为EA只能在一个符号上开立一个订单,之后你必须等待交易操作通过(而且不一定成功,也不一定快),交易流将为其他订单释放。

对于交易流程,我明白了一切,但如何以最小的间隔在3种工具上连续进行开仓交易(根据顾问的算法,开仓应该在某一秒内同时对三种货币开始)?如果你不介意的话,你能不能贴出一个代码片段作为例子?我将非常感激!

 
Dimoncheg >> :

int start()
{
if (OrdersTotal() == 0
&& TimeDayOfWeek(TimeCurrent()) == 5
&& TimeHour(TimeCurrent()) == 12
&& TimeMinute(TimeCurrent()) == 30
&& TimeSeconds(TimeCurrent()) >= 00)
{
Alert("Тра ляля");
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"sell",999999,0,Red);
}


没有人知道为什么这里没有订单打开?我做错了什么?

如果这是整个代码,它甚至不能编译。如果你用一个数字来代替Lot,EA就能正常工作。


 
HoBu4ek >> :

我明白交易流程的一切,但如何使交易在3个符号上连续开盘,且间隔时间最小(根据EA的算法,开盘应该在某一秒内同时对三种货币开始)?如果你不介意的话,你能不能贴出一个代码片段作为例子?我将非常感激!

我想你只需要为不同的工具建立3个订单就可以了?为什么不做一个标志变量,例如

在全局变量中创建

int flag=0;
string Symb;

///////////////

进一步

int start()
{
if (условие открытия)
{flag=1;}

if (flag==1)
{
Symb="EURUSD";
OrderSend(Symb,...)///Открываем, переносим флаг во 2 состояние для открытия след ордера и
flag=2; ///выходим тк больше мы ни чего не можем сделать
return(0);
}

if (flag==2)
{
Symb="AUDUSD";
OrderSend(Symb,...)
flag=3;
return(0);
}

if (flag==3)
{
Symb="USDJPY";
OrderSend(Symb,...)
flag=0;//Возвращаем флаг в начальное состояние..
return(0);
}
return(0);}


如果能增加一个开放的检查,并在检查成功后才移动旗子,那也是很好的。

 
Inzer >> :

如果这是整个代码,它甚至不能编译。如果你用一个数字代替手数,专家顾问就能正常工作。


检查Lot的数据类型。它应该是双倍的。

 
TheXpert >> :

因此,只是一目了然。我没有理解这些术语,但在第二个版本中,似乎没有交叉。

还有一件事 -- OrderSend函数返回一个int ticket,所以像这样检查是否成功是正确的。

在你的情况下,你需要检查是否有不正确的地方。

______

是的,我不知道其他人如何,但对我来说,"专家 "这个词听起来像是一种嘲弄。也许这就是为什么你这么久都没有回音。;)

你好!!!!!!!!!!!!!!

是的,无论你说什么........,不要叫它,所以不要叫它.....。尽管专家是专家(有知识的人,可以说是老师)的缩写。

我不关心......,我的意思是只有积极和善良的........。

但不要介意........

在这个话题的一开始,我就问了关于MA的问题。答案是非常聪明的。现在我又回到了这里。

一个想法出现了.....

int start()
  {
//----
    double MA_0=iMA(NULL, 0, pMA, pSh, mode, price,0);
    double MA_1=iMA(NULL, 0, pMA, pSh, mode, price,1);
        
    if( MA_1< Open[1] && MA_0>Open[0])
     if( CheckOrders(OP_SELL))//продажа
      {
       if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
       }
       
    if( MA_1>Open[1] && MA_0<Open[0])
     if( CheckOrders(OP_BUY))//покупка
      {
       if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
       }
//----
   return(0);
  }

我决定对交易条件进行一些调整。但它没有工作((((((((,我想把open_1和open_0(第一条的开盘价和第二条的开盘价)。

当我检查时,它给出了错误,我不得不返回到原始版本(我在上面给出了)。

正如有人向我解释的那样,open[1]是对名称为open、索引为[1]的数组单元的调用。所有这些都是好的......,但只需要在1(2,0)条上有一个开盘价。

给假人的提示.....)))))))).....

 
我怎样才能跟踪一个挂单 是否被触发(如买单)? 在历史记录中通过ID搜索它是否更好,还是有更短的选择?
 
fima_ >> :
如何跟踪挂单的触发情况(例如,买入时)? 在历史记录中通过其ID搜索更好,还是有更短的选择?

你可以试试这个

OrderSelect(1, SELECT_BY_POS)

if(OrderOpenTime()!=0)

{

///необходимая операция

}

但这只是在你只有1个订单的情况下才有的选择!

 
什么函数被用来确定金融工具的管道价值?例如,对于欧元兑美元,0.0001的价值是10美元(当交易1手)。
原因: