初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1457

 
Aleksey Vyazmikin #:

代码库中有最初在 MT4 上编写、后在 MT5 上重写的智能顾问和指标,您可以将它们用于培训。

在许多方面,语言是相似的,给自己设定一个任务,在 MT5 上重写您能理解的代码--并积极使用说明和门户网站上的搜索功能--您总能找到答案,包括在文章中。

非常感谢您的宝贵建议。如果您不介意的话,请给我发一个链接,让我看看 4 版的智能交易系统(不是指标)后来变成了 5 版(如果可以的话),或者 4 版的 EA 本身和 5 版的一样
开始学习。我意识到初学者的交易操作最容易在交易类 STrade 中打开,我甚至在该类的帮助下成功地打开了订单和交易
,但当我设定打开订单的条件时,订单就不再打开了,请告诉我我做错了什么。以下是在没有条件的情况下打开订单的代码。

#include<Trade\Trade.mqh>
 CTrade  trade;

void OnTick()
{
MqlDateTime time_now;  
if(time_now.hour==10||time_now.hour==11&&time_now.min==0)


trade.Buy(0.1);


}

我还没有理解这一点....当 BAY 订单被打开时,根据我的理解,它们被 CEL 反订单关闭。我不明白代码从哪里获取关于关闭订单多少点的信息,因为我没有在任何地方指定 SL 和 TP 的大小,也根本没有指定关闭订单的功能。我怀疑这些信息写在了某个附加文件的某个地方,即某个类或结构中。如果是这样,如何找到这个地方来更改开仓订单的参数?

再次感谢您的帮助

 
ANDREY #:

非常感谢您的宝贵建议。如果您不介意的话,请给我发一个链接,让我看看是 4 级的智能交易系统(不是指标)还是 5 级的智能交易系统(如果您能提供最简单的),或者是 4 级的智能交易系统本身,还是 5 级的
我开始学习了。我意识到初学者的交易操作最容易在交易类 STrade 中打开,我甚至在该类的帮助下成功地打开了订单和交易
,但当我为打开订单设定条件时,订单就不再打开了,请告诉我我做错了什么。以下是在没有条件的情况下打开订单的代码。

我还没有理解这一点....当 BAY 订单被打开时,根据我的理解,它们被 CEL 反订单关闭。我不明白代码从哪里获取关于关闭订单多少点的信息,因为我没有在任何地方指定 SL 和 TP 的大小,也根本没有指定关闭订单的功能。我怀疑这些信息写在了某个附加文件的某个地方,即某个类或结构中。如果是这样,如何找到这个地方来更改已开订单的参数?

再次感谢您的帮助

我只能提供建议--我出生在苏维埃国家......

搜索它 -这里有 一个选项。

我自己还没有学会贸易操作的所有细微差别 - 多年前我订购了一门自由职业课程,并在稍作修改后使用。

 
Aleksey Vyazmikin #:

我只能提供建议--我出生在苏维埃的土地上....

你可以搜索一下,这也 一种选择。

我自己还没有学会贸易操作的所有细微差别--多年前我订购了一门自由职业课程,并在稍作修改后使用。

明白了。感谢您提供的宝贵信息

 
ANDREY #:

非常感谢您的宝贵建议。如果您不介意的话,请给我发一个链接,让我看看在 4 版上的智能交易系统(不是指标)后来变成了 5 版(如果您能用最简单的方式的话),或者是 4 版上的智能交易系统本身,然后在 5 版上也是这样。

这里有一个最简单的。它的名字叫 So。它既有 MQL5 代码,也有 MQL4 代码。

Simple advisor
Simple advisor
  • www.mql5.com
Советник на отложенных ордерах
 
Alexey Viktorov #:

这是最简单的一种。这是它的名字。它包含 MQL5 和 MQL4 代码。

感谢您的帮助。

 
ANDREY #:

但是,一旦我设定了打开订单的条件,订单就不再打开了,请告诉我我做错了什么。以下是在没有条件的情况下打开订单的代码。

我还没有理解这一点....当 BAY 订单被打开时,根据我的理解,它们被 CEL 反订单关闭。我不明白代码从哪里获取关于关闭订单多少点的信息,因为我没有在任何地方指定 SL 和 TP 的大小,也根本没有指定关闭订单的功能。我怀疑这些信息写在了某个附加文件的某个地方,即某个类或结构中。如果是这样,如何找到这个地方来更改已开订单的参数?

再次感谢您的帮助

您声明了 MqlDateTime 结构,但没有对其进行初始化,因此它现在要么是空的,要么是垃圾

从 10:00 时起,它将在每个刻度线打开买入头寸,持续一分钟。然后在 11:00 开始打开买入仓位,持续一分钟。

//+------------------------------------------------------------------+
#include<Trade\Trade.mqh>
 CTrade  trade;
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlDateTime time_now;
   TimeCurrent(time_now);
   if((time_now.hour == 10 || time_now.hour == 11) && time_now.min == 0)
      trade.Buy(0.1);
  }
//+------------------------------------------------------------------+
这段代码不能平仓,CTrade 类中没有这样的代码。
 
Aleksandr Slavskii #:

您声明了结构 MqlDateTime,但没有对其进行初始化,现在它要么是空的,要么是垃圾

从 10:00 开始,它将在每个刻度线打开买入仓位,持续一分钟。然后在 11:00 开始打开更多买入仓位,持续一分钟。

这段代码不能平仓,CTrade 类中没有这样的代码。

非常感谢....你让我对 5 的掌握更进了一步。您说这段代码不能平仓。但如果您删除所有条件,那么根据我的理解,仓位是通过 CEL.... 的反向订单打开和关闭的。那么使用什么代码命令来平仓?程序从哪里获取数据,以便在一定点数后或某些事件发生时准确平仓?我甚至不明白它是根据什么规则关闭订单的。

#include<Trade\Trade.mqh>
 CTrade  trade;

void OnTick()
{
trade.Buy(0.1);
}

我还注意到,用于关闭 BAY 订单的 SEL 订单,出于某种原因,其订单号与关闭的 BAY 订单的订单号相距甚远。例如,第一个 BAY 订单的订单号是 2,但关闭它的 CEL 订单的订单号却不是 3(符合逻辑),而是 91779(不知何故)

如果只打开一个订单,一切都会变得合乎逻辑。白订单的编号是 2,关闭的 CEL 订单的编号是 3。

int y;
#include<Trade\Trade.mqh>
 CTrade  trade;
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlDateTime time_now;
   TimeCurrent(time_now);
   if(time_now.hour == 10&&y==0)
   {trade.Buy(0.1);y =1;}
      
  }


 
ANDREY #:

非常感谢....你让我在掌握 5 方面取得了很大进步。您说这段代码不能平仓。但如果您删除所有条件,那么根据我的理解,仓位是通过反向订单 CEL.... 打开和关闭的。那么使用什么代码命令来平仓?程序从哪里获取数据,以便在一定点数后或某些事件发生时准确平仓?我甚至不明白它是根据什么规则关闭订单的。

我还注意到,用于关闭 BAY 订单的 SEL 订单,出于某种原因,其订单号与关闭的 BAY 订单的订单号相距甚远。例如,第一个 BAY 订单的票据编号是 2,但关闭它的 CEL 订单的票据编号却不是 3(符合逻辑),而是 91779(不知何故)

如果只打开一个订单,一切都会变得合乎逻辑。白订单的编号是 2,关闭的 CEL 订单的编号是 3。


我很难理解这到底是怎么回事,但我认为您在该工具上开立的仓位超过了经纪商允许的数量,于是测试仪开始关闭多余的仓位。

实际上,它不应该打开这些额外的仓位。但我无法用其他方式解释你的情况。


有一个仓位我也不明白。为什么会在一天结束时关闭。也许您的经纪人禁止将仓位转到第二天。

 
Aleksandr Slavskii #:

我很难理解发生了什么,但我认为你在该工具上开仓的数量超过了经纪商允许的范围,于是测试仪开始关闭多余的仓位。

事实上,它不应该打开这些额外的仓位。但我无法用其他方式解释你的情况。


我也不明白一个仓位。为什么会在当天结束时关闭。也许您的经纪商不允许您将仓位转到第二天。

谢谢。这个解释看起来非常合乎逻辑。 在一个代码完全相同、时间完全相同的 quad 上,也发生了同样的情况,只是订单没有用反向订单关闭。我的经纪商是 Alpari。经过您的解释,我明白了为什么平仓反向订单的数量与平仓订单的数量相差如此之大。因为所有平仓订单都是在所有平仓订单结束后才打开的。

 

大家下午好!
,我正在尝试学习如何使用CTrade 类在五个指令中下单,因为在我看来,这是最快、最简单的下单方式。更准确地说,我想学习如何设置 STOPLOSS 参数。在第四版中,最后买入价存储在预定义的 Bid 中,而在第五版中,根据我的理解,最后买入价不是存储在预定义的 Bid 中,而是作为选项之一,在CSymbolInfo 类的 Bid 方法中计算出来的。但该方法要计算出价格,必须先用 Name 方法选择符号 我知道Name 方法是如何工作 的。在该方法中,您需要输入符号名称或 NULL,然后它将返回 false 或 true。

但我不明白如何以及在何处将Name 方法和 Bid 方法结合起来 ,以便将 Bid 价格存储在变量c 中。

在四个订单中使用 Select() 函数选择了订单,但在五个订单中应选择的不是订单,而是符号.....。我不知道该怎么做

如果您能在我的代码中编写一个片段,将买入价保存到变量 with 中, 将其用于CTrade 类 Btsu 方法的 SL 参数中,我将不胜感激。

int y;
double c,d;
#include<Trade\Trade.mqh>        //класс
#include <Trade\SymbolInfo.mqh>  //класс 
CTrade  trad;                   //класс (создание объекта класса)
CSymbolInfo pris;
//+------------------------------------------------------------------+
void OnTick()
  {
   c=pris.Bid();//
   Print(" ---------------------CТОП------------------------------------------------------------  ",c);
   MqlDateTime t;                //структура (объявление структуры)
   TimeCurrent(t);               //структура (инициализация структуры)
   if(t.hour == 9&&y==0)
   {trad.Buy(0.1,NULL,0,c);y =1;}   //класс
      
  }
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Name
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Name
  • www.mql5.com
Name - CSymbolInfo - Торговые классы - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
原因: