初学者的问题 MQL5 MT5 MetaTrader 5 - 页 97 1...90919293949596979899100101102103104...1503 新评论 ComplexFX 2013.02.03 16:40 #961 Vladon:这个想法是你的,但不是代码。程序员写了代码,而不是你,你写了ToR。想象一下--Windows用户要求开放源代码--这不是很荒谬吗?据我所知,专家使用的代码属于MetaQuotes,还是属于你个人?这和Windows有什么关系,首先用户没有权利要求,因为这个产品是属于宏软的,这里有一点不同,宏软会开始向编写他们产品的程序员要求开放源代码,他们会扭着手指不给。 ComplexFX 2013.02.03 16:45 #962 Vladon:所以,在保护之前还有来源? 那你还想要什么?有人告诉你--没有人会给受保护的EA的开放源代码,我也不会给它。还有,如果有要求,在完成后要求你的产品的源代码。如果是我,我会拒绝这个任务。那你还需要什么呢?在答辩前有源代码,所以它和有答辩的顾问是一样的。他们应该同样能工作。 在EA的工作过程中,进行了修改,增加了各种功能,等等,但并没有这些修改的公开源代码。 Vladislav Andruschenko 2013.02.03 16:47 #963 ComplexFX: 在专家顾问的工作过程中,进行了修改,增加了各种功能,等等,但这些修改没有开放的源代码。那么我认为真理就在你这边。据我所知,专家使用的代码属于MetaQuotes,还是属于你个人?如果我写了代码,它就属于我个人。MetaQuotes拥有编程语言。一切都是公平的。 progeon 2013.02.24 09:54 #964 你能告诉我如何在专家顾问中关闭一个未结订单吗?我知道如何使用止损或止盈平仓。我怎样才能手动操作呢? Yedelkin 2013.02.24 09:56 #965 pogeon: 你能告诉我如何在专家顾问中关闭一个未结订单吗?我知道如何使用止损或止盈平仓。如何手动操作? 在mql5中,一个未平仓的头寸被相反方向的订单平仓,这些订单的总数量等于平仓的数量。 Denis Lazarev 2013.02.24 19:38 #966 progeon: 你能告诉我如何在专家顾问中关闭一个未结订单吗?我知道如何在止损或止盈时平仓。如何手动操作?或者使用 CTrade 类,它有一个函数trade.PositionClose(_Symbol);类似这样的事情https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/ctrade/ctradepositionclose Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade / PositionClose www.mql5.com Стандартная библиотека / Торговые классы / CTrade / PositionClose - Документация по MQL5 Yedelkin 2013.02.25 05:18 #967 Yedelkin: 在mql5中,一个未平仓的头寸被相反方向的订单关闭,这些订单的总数量等于平仓的数量。 lazarev-d-m:或者 使用 CTrade 类,有一个函数 CTrade类的 PositionClose()方法也使用相反的订单关闭头寸。 Boris.45 2013.02.25 15:31 #968 请告诉我这种情况的解决办法或原因。我不久前才在MQL5中工作,所以我还没有足够的经验。我曾试图在不使用类的情况下制作一个多货币的EA。 不幸的是,我没有找到任何关于多货币EA的详细文章。我写了以下一段代码。int nomer_instr; // 这是货币名称阵列中货币的索引号。string Name_symbol[6] = { "AUDUSD", "EURUSD", "GBPUSD", "USDCAD", "USDCHF", "USDJPY" } ; // 货币名称的文本阵列:在[0]-"AUDUSD", 1-"EURUSD", 2-"GBPUSD", 3-"USDCAD", 等等。double Close_buf[], Open_buf[], High_buf[], Low_buf[]; //烛台参数的基础数组datetime Time_buf[]; //酒吧开放时间的基础数组double Close_H1[6][150], Open_H1[6][150], High_H1[6][150], Low_H1[6][150]; // H1时间框架的多货币EA烛台参数数组。//数组中的行数与被分析货币的数量相对应。datetime Time_H1[6][150]; // 酒吧开盘时间的数组double Close_H4[6][150], Open_H4[6][150], High_H4[6][150], Low_H4[6][150]; // H4时间框架的多货币专家顾问的烛台参数数组。//数组中的行数与所分析的货币数量相对应。 datetime Time_H4[6][150]; // array bar open timeint OnInit(){}空白的OnDeinit(const int reason)。{//--- ArrayFree(Time_buf)。 ArrayFree(Close_buf)。 ArrayFree(Open_buf)。ArrayFree(High_buf)。 ArrayFree(Low_buf)。}空白的OnTick(){//------------------------------------------------------------------------------这里有一段代码,用于确定一个新条形图打开的时刻 Nev_Time[0] 。以及在测试或交易过程中被处理的条码的序列号//------------------------------------------------------------------------------------------------------------------------ArraySetAsSeries(Close_buf, true); //将close_array数组的索引设置为timeseries。 ArraySetAsSeries(Open_buf, true); //为数组open_array设置索引,如同在timeseries中一样。 ArraySetAsSeries(High_buf, true); //将数组high_array的索引设置为时间序列的索引。 ArraySetAsSeries(Low_buf, true); //将数组low_array的索引设置为时间序列的索引。 ArraySetAsSeries(Time_buf, true); //设置数组time_array的索引,如同timeseries中的索引。 for( nomer_instr=0; nomer_instr<=5; nomer_instr++ ){ //======================================================================== CopyTime( Name_symbol[nomer_instr], PERIOD_H1,0,160,Time_buf); // 复制每个柱状图的历史时间数据到缓冲区。 CopyClose( Name_symbol[nomer_instr], PERIOD_H1,0,160,Close_buf); // 将每个柱状图的历史收盘数据复制到缓冲区。 CopyOpen( Name_symbol[nomer_instr], PERIOD_H1,0,160,Open_buf); // 将每个柱状图的历史数据复制到缓冲区。 CopyHigh( Name_symbol[nomer_instr], PERIOD_H1,0,160,high_buf); // 将每个柱状图的历史数据高点复制到缓冲区。 CopyLow( Name_symbol[nomer_instr], PERIOD_H1,0,160,low_buf); // 将每个柱状的历史数据低点复制到缓冲区。//======================================================================== for( i=1; i<=145; i++ ){ Time_H1[nomer_instr][i]=Time_buf[i]; Close_H1[nomer_instr][i]=Close_buf[i]; Open_H1[nomer_instr][i]=Open_buf[i]; High_H1[nomer_instr][i]=High_buf[i]; Low_H1[nomer_instr][i]=Low_buf[i];}//======================================================================================// 检查生成的一小时时间框架的蜡烛图数据的时间偏移。 如果( Schetchik_svech > 8 && Schetchik_svech < 15 ){ 如果( nomer_instr == 5 ){ Alert("================================================"); Alert(" bar number = ",Schetchik_svech,", bar open time Nev_Time[0]=",Nev_Time[0])。 Alert(" 仪器编号。nomer_instr=",nomer_instr,", instrument: Name_symbol[nomer_instr]=",Name_symbol[nomer_instr])。 Alert("---------------------------------------------------------"); for(( i=1; i<=5; i++ ){ Alert("i=",i,", Time_H1[nomer_instr][i]=",Time_H1[nomer_instr][i],", Close_H1[nomer_instr][i]=",Close_H1[nomer_instr][i]);}}}//======================================================================================}//结束H1时间框架上所用货币的循环。//##############################################这里是H4时间框架的同一块图表//############################################}//OnTick()函数 的结束检查这款软件的性能时,我发现了一个意想不到的结果。- 对于H1的情况,当输出图表的条形参数时,专家顾问站在上面,我们在零条和第一条之间有一个小时的时间差。例如,专家顾问在欧元兑美元的图表上,零条的开盘时间是Nev_Time[0]=2011.01.03 13:00:00,那么第一条的开盘 时间是Time_H1[1][1]=2011.01.03 12:00:00。这个结果是符合常识的。- 现在专家顾问在同一个图表上,我们分析任何其他货币的数据,例如 澳元兑美元。零条的开盘时间 Nev_Time[0]=2011.01.03 13:00:00,那么第一条的开盘时间 Time_H1[1][1]=2011.01.03 11:00:00这个结果根本无法接受,但我没有在文章中找到这种效果的原因。请告知如何摆脱这种困扰,我不能为每种货币写一个专家顾问。谢谢你的反馈。 Документация по MQL5: Основы языка / Функции / Функции обработки событий www.mql5.com Основы языка / Функции / Функции обработки событий - Документация по MQL5 Questions from Beginners MQL5 任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. changing extern input setting Yedelkin 2013.02.26 11:14 #969 Boris.45: 零点开盘时间 Time_H1[1][1]=2011.01.03 13:00:00, 那么第一条开盘时间 Time_H1[1][1]=2011.01.03 11:00:00 那么Time_H1[1][0]返回什么? Boris.45 2013.02.26 12:32 #970 Yedelkin:Time_H1[1][0]返回什么?我不使用数组中的这个元素,因为我将直接进入搜索最后5个条形的分形的算法。 而Time_H1[1][0]是零条形的开盘时间,这个条形的参数还没有形成。 我可能错了,但根据我自己的经验,我知道使用零条形的参数来形成时间序列会导致其失真。 1...90919293949596979899100101102103104...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这个想法是你的,但不是代码。程序员写了代码,而不是你,你写了ToR。
想象一下--Windows用户要求开放源代码--这不是很荒谬吗?
据我所知,专家使用的代码属于MetaQuotes,还是属于你个人?
这和Windows有什么关系,首先用户没有权利要求,因为这个产品是属于宏软的,这里有一点不同,宏软会开始向编写他们产品的程序员要求开放源代码,他们会扭着手指不给。
所以,在保护之前还有来源? 那你还想要什么?有人告诉你--没有人会给受保护的EA的开放源代码,我也不会给它。还有,如果有要求,在完成后要求你的产品的源代码。
如果是我,我会拒绝这个任务。
那你还需要什么呢?在答辩前有源代码,所以它和有答辩的顾问是一样的。他们应该同样能工作。
在专家顾问的工作过程中,进行了修改,增加了各种功能,等等,但这些修改没有开放的源代码。
那么我认为真理就在你这边。
据我所知,专家使用的代码属于MetaQuotes,还是属于你个人?
如果我写了代码,它就属于我个人。MetaQuotes拥有编程语言。
一切都是公平的。
你能告诉我如何在专家顾问中关闭一个未结订单吗?我知道如何使用止损或止盈平仓。如何手动操作?
你能告诉我如何在专家顾问中关闭一个未结订单吗?我知道如何在止损或止盈时平仓。如何手动操作?
或者使用 CTrade 类,它有一个函数
trade.PositionClose(_Symbol);
类似这样的事情
https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/ctrade/ctradepositionclose
lazarev-d-m:或者 使用 CTrade 类,有一个函数
CTrade类的 PositionClose()方法也使用相反的订单关闭头寸。
请告诉我这种情况的解决办法或原因。我不久前才在MQL5中工作,所以我还没有足够的经验。
我曾试图在不使用类的情况下制作一个多货币的EA。 不幸的是,我没有找到任何关于多货币EA的详细文章。
我写了以下一段代码。
int nomer_instr; // 这是货币名称阵列中货币的索引号。
string Name_symbol[6] = { "AUDUSD", "EURUSD", "GBPUSD", "USDCAD", "USDCHF", "USDJPY" } ; // 货币名称的文本阵列:在[0]-"AUDUSD", 1-"EURUSD", 2-"GBPUSD", 3-"USDCAD", 等等。
double Close_buf[], Open_buf[], High_buf[], Low_buf[]; //烛台参数的基础数组
datetime Time_buf[]; //酒吧开放时间的基础数组
double Close_H1[6][150], Open_H1[6][150], High_H1[6][150], Low_H1[6][150]; // H1时间框架的多货币EA烛台参数数组。
//数组中的行数与被分析货币的数量相对应。
datetime Time_H1[6][150]; // 酒吧开盘时间的数组
double Close_H4[6][150], Open_H4[6][150], High_H4[6][150], Low_H4[6][150]; // H4时间框架的多货币专家顾问的烛台参数数组。
//数组中的行数与所分析的货币数量相对应。
datetime Time_H4[6][150]; // array bar open time
int OnInit()
{
}
空白的OnDeinit(const int reason)。
{
//---
ArrayFree(Time_buf)。
ArrayFree(Close_buf)。
ArrayFree(Open_buf)。
ArrayFree(High_buf)。
ArrayFree(Low_buf)。
}
空白的OnTick()
{
//------------------------------------------------------------------------------
这里有一段代码,用于确定一个新条形图打开的时刻 Nev_Time[0] 。
以及在测试或交易过程中被处理的条码的序列号
//------------------------------------------------------------------------------------------------------------------------
ArraySetAsSeries(Close_buf, true); //将close_array数组的索引设置为timeseries。
ArraySetAsSeries(Open_buf, true); //为数组open_array设置索引,如同在timeseries中一样。
ArraySetAsSeries(High_buf, true); //将数组high_array的索引设置为时间序列的索引。
ArraySetAsSeries(Low_buf, true); //将数组low_array的索引设置为时间序列的索引。
ArraySetAsSeries(Time_buf, true); //设置数组time_array的索引,如同timeseries中的索引。
for( nomer_instr=0; nomer_instr<=5; nomer_instr++ )
{
//========================================================================
CopyTime( Name_symbol[nomer_instr], PERIOD_H1,0,160,Time_buf); // 复制每个柱状图的历史时间数据到缓冲区。
CopyClose( Name_symbol[nomer_instr], PERIOD_H1,0,160,Close_buf); // 将每个柱状图的历史收盘数据复制到缓冲区。
CopyOpen( Name_symbol[nomer_instr], PERIOD_H1,0,160,Open_buf); // 将每个柱状图的历史数据复制到缓冲区。
CopyHigh( Name_symbol[nomer_instr], PERIOD_H1,0,160,high_buf); // 将每个柱状图的历史数据高点复制到缓冲区。
CopyLow( Name_symbol[nomer_instr], PERIOD_H1,0,160,low_buf); // 将每个柱状的历史数据低点复制到缓冲区。
//========================================================================
for( i=1; i<=145; i++ )
{
Time_H1[nomer_instr][i]=Time_buf[i];
Close_H1[nomer_instr][i]=Close_buf[i];
Open_H1[nomer_instr][i]=Open_buf[i];
High_H1[nomer_instr][i]=High_buf[i];
Low_H1[nomer_instr][i]=Low_buf[i];
}
//======================================================================================
// 检查生成的一小时时间框架的蜡烛图数据的时间偏移。
如果( Schetchik_svech > 8 && Schetchik_svech < 15 )
{
如果( nomer_instr == 5 )
{
Alert("================================================");
Alert(" bar number = ",Schetchik_svech,", bar open time Nev_Time[0]=",Nev_Time[0])。
Alert(" 仪器编号。nomer_instr=",nomer_instr,", instrument: Name_symbol[nomer_instr]=",Name_symbol[nomer_instr])。
Alert("---------------------------------------------------------");
for(( i=1; i<=5; i++ )
{
Alert("i=",i,", Time_H1[nomer_instr][i]=",Time_H1[nomer_instr][i],", Close_H1[nomer_instr][i]=",Close_H1[nomer_instr][i]);
}
}
}
//======================================================================================
}//结束H1时间框架上所用货币的循环。
//##############################################
这里是H4时间框架的同一块图表
//############################################
}//OnTick()函数 的结束
检查这款软件的性能时,我发现了一个意想不到的结果。
- 对于H1的情况,当输出图表的条形参数时,专家顾问站在上面,我们在零条和第一条之间有一个小时的时间差。
例如,专家顾问在欧元兑美元的图表上,零条的开盘时间是Nev_Time[0]=2011.01.03 13:00:00,那么第一条的开盘 时间是Time_H1[1][1]=2011.01.03 12:00:00。
这个结果是符合常识的。
- 现在专家顾问在同一个图表上,我们分析任何其他货币的数据,例如 澳元兑美元。
零条的开盘时间 Nev_Time[0]=2011.01.03 13:00:00,那么第一条的开盘时间 Time_H1[1][1]=2011.01.03 11:00:00
这个结果根本无法接受,但我没有在文章中找到这种效果的原因。
请告知如何摆脱这种困扰,我不能为每种货币写一个专家顾问。
谢谢你的反馈。
Time_H1[1][0]返回什么?
我不使用数组中的这个元素,因为我将直接进入搜索最后5个条形的分形的算法。 而Time_H1[1][0]是零条形的开盘时间,这个条形的参数还没有形成。 我可能错了,但根据我自己的经验,我知道使用零条形的参数来形成时间序列会导致其失真。