初学者的问题 MQL5 MT5 MetaTrader 5 - 页 679 1...672673674675676677678679680681682683684685686...1503 新评论 post_ek 2016.11.27 13:54 #6781 我正在写一个机器人,连接Ctrade,首先我想从一个逻辑开始,它将在每小时开始时以市场价格进行买入交易,半小时后它将以新的市场价格卖出所有东西。当我在测试器中测试时,我得到错误的无效订单类型。 我的仪器是SBER,我的客户是Otkritie。我的订单 是手动模式,我的订单 在真实或模拟账户中没有通过。可能的错误是什么?股票市场不允许按市场价格交易,这是真的吗? Sergey Gritsay 2016.11.27 14:42 #6782 post_ek:我在写一个机器人,连接Ctrade,首先我想使用逻辑,根据这个逻辑,在每个小时的开始,它将以市场价格进行买入交易,半小时后,它将以新的市场价格卖出所有东西(卖出)。当我在测试器中测试时,我得到错误的无效订单类型。 我的仪器是SBER,我的客户是Otkritie。我的订单 是手动模式,我的订单 在真实或模拟账户中没有通过。可能的错误是什么?股票市场不允许按市场价格交易,这是真的吗? 我不明白你写的东西没有你的代码,为什么它对你不起作用。 [删除] 2016.11.28 09:34 #6783 你好.如果EA运行在笔记本电脑上,并且处于休眠模式,在这种情况下,插入的EA能不能工作? Vitalie Postolache 2016.11.28 09:42 #6784 Movlat Baghiyev: 下午好!如果EA在笔记本电脑上运行,并且进入休眠模式,在这种情况下,连接的EA会工作吗? 而你将在任何数值的日志中启用打印机,你会发现。如果它不打印,那么它就不工作。 [删除] 2016.11.28 09:45 #6785 Vitalie Postolache: 而你将包括打印在日志中的任何值,并发现。如果它不打印,就不能工作。 这很清楚......我想有人可以与新手分享他们的经验。 Vladislav Andruschenko 2016.11.28 09:47 #6786 Movlat Baghiyev: 日安.如果EA在笔记本上运行,它进入睡眠状态,在这种情况下,插入的EA能工作吗?休眠模式通常是关闭硬盘的模式。我最近安装了一台服务器,在第3天我才看到电脑处于睡眠状态,即不工作,也就是说,所有的EA都不工作。我禁用了休眠模式,一切都很正常。 Vitalie Postolache 2016.11.28 09:47 #6787 Movlat Baghiyev: 这很清楚......我想知道是否有人能与新手分享他们的经验。 根据我的经验,在休眠模式下没有什么工作,只有一些系统服务。 Vladimir Karputov 2016.11.28 09:51 #6788 Movlat Baghiyev: 你好 .如果顾问在笔记本电脑上运行,并且它处于休眠模式,在这种情况下,连接的顾问会工作吗?不,这行不通。在电源设置中,设置电源。 post_ek 2016.11.29 06:15 #6789 Sergey Gritsay: 没有你的代码,就很难理解你所写的东西,以及它为什么不工作。//+------------------------------------------------------------------+//| Gear.mq5 |//| Copyright 2016, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright "Copyright 2016, MetaQuotes Software Corp."#property link "https://www.mql5.com"#property version "1.00"#include <Trade/Trade.mqh> CTrade trade;bool TimeFlag, FLG;int TimeScale=50, TimeInMemory, TimeNow;//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int OnInit() {//--- return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+void OnDeinit(const int reason) {//--- }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+void OnTick() { //---Блок получения информации с биржи MqlTick oCurrentTick; SymbolInfoTick(Symbol(), oCurrentTick);//---Блок определения начала нового временного интервала TimeFlag=false; datetime tm=TimeCurrent(); MqlDateTime stm; TimeToStruct(tm,stm); if(MathMod(StringToInteger((string)stm.min),TimeScale)==0) { TimeNow=StringToInteger((string)stm.min); } if(TimeNow != TimeInMemory) { TimeInMemory=TimeNow; TimeFlag=true; //Print(_Symbol); } if(TimeFlag) { if(FLG) { if(!trade.Buy(1,_Symbol)) { //--- сообщим о неудаче Print("Метод Buy() потерпел неудачу. Код возврата=",trade.ResultRetcode(), ". Описание кода: ",trade.ResultRetcodeDescription()); } else { Print("Метод Buy() выполнен успешно. Код возврата=",trade.ResultRetcode(), " (",trade.ResultRetcodeDescription(),")"); } FLG=false; } else { trade.Sell(1); FLG=true; } } }//+------------------------------------------------------------------+ Questions from Beginners MQL5 初学者的问题 MQL4 MT4 MetaTrader 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 Vladimir Karputov 2016.11.29 06:46 #6790 post_ek:这不是做这件事的方法。bool TimeFlag,FLG;int TimeScale=50,TimeInMemory,TimeNow;或者说,在这样的声明之后,你必须在OnInit()中明确地初始化(给 这些变量赋值)。卖出方法的周围也必须有检查,比如说trade.ResultRetcode(), " (",trade.ResultRetcodeDescription(),")");而且还可能有一个陷阱--在早上,在开盘时,拍卖不会立即开始,不是从第一秒开始--这时就有可能出现错误。 1...672673674675676677678679680681682683684685686...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我正在写一个机器人,连接Ctrade,首先我想从一个逻辑开始,它将在每小时开始时以市场价格进行买入交易,半小时后它将以新的市场价格卖出所有东西。当我在测试器中测试时,我得到错误的无效订单类型。
我的仪器是SBER,我的客户是Otkritie。我的订单 是手动模式,我的订单 在真实或模拟账户中没有通过。
可能的错误是什么?股票市场不允许按市场价格交易,这是真的吗?
我在写一个机器人,连接Ctrade,首先我想使用逻辑,根据这个逻辑,在每个小时的开始,它将以市场价格进行买入交易,半小时后,它将以新的市场价格卖出所有东西(卖出)。当我在测试器中测试时,我得到错误的无效订单类型。
我的仪器是SBER,我的客户是Otkritie。我的订单 是手动模式,我的订单 在真实或模拟账户中没有通过。
可能的错误是什么?股票市场不允许按市场价格交易,这是真的吗?
下午好!如果EA在笔记本电脑上运行,并且进入休眠模式,在这种情况下,连接的EA会工作吗?
而你将包括打印在日志中的任何值,并发现。如果它不打印,就不能工作。
日安.如果EA在笔记本上运行,它进入睡眠状态,在这种情况下,插入的EA能工作吗?
休眠模式通常是关闭硬盘的模式。
我最近安装了一台服务器,在第3天我才看到电脑处于睡眠状态,即不工作,也就是说,所有的EA都不工作。
我禁用了休眠模式,一切都很正常。
这很清楚......我想知道是否有人能与新手分享他们的经验。
你好 .如果顾问在笔记本电脑上运行,并且它处于休眠模式,在这种情况下,连接的顾问会工作吗?
不,这行不通。在电源设置中,设置电源。
没有你的代码,就很难理解你所写的东西,以及它为什么不工作。
//| Gear.mq5 |
//| Copyright 2016, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#include <Trade/Trade.mqh>
CTrade trade;
bool TimeFlag, FLG;
int TimeScale=50, TimeInMemory, TimeNow;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---Блок получения информации с биржи
MqlTick oCurrentTick;
SymbolInfoTick(Symbol(), oCurrentTick);
//---Блок определения начала нового временного интервала
TimeFlag=false;
datetime tm=TimeCurrent();
MqlDateTime stm;
TimeToStruct(tm,stm);
if(MathMod(StringToInteger((string)stm.min),TimeScale)==0)
{
TimeNow=StringToInteger((string)stm.min);
}
if(TimeNow != TimeInMemory)
{
TimeInMemory=TimeNow;
TimeFlag=true;
//Print(_Symbol);
}
if(TimeFlag)
{
if(FLG)
{
if(!trade.Buy(1,_Symbol))
{
//--- сообщим о неудаче
Print("Метод Buy() потерпел неудачу. Код возврата=",trade.ResultRetcode(),
". Описание кода: ",trade.ResultRetcodeDescription());
}
else
{
Print("Метод Buy() выполнен успешно. Код возврата=",trade.ResultRetcode(),
" (",trade.ResultRetcodeDescription(),")");
}
FLG=false;
}
else
{
trade.Sell(1);
FLG=true;
}
}
}
//+------------------------------------------------------------------+
这不是做这件事的方法。
int TimeScale=50,TimeInMemory,TimeNow;
或者说,在这样的声明之后,你必须在OnInit()中明确地初始化(给 这些变量赋值)。
卖出方法的周围也必须有检查,比如说
" (",trade.ResultRetcodeDescription(),")");
而且还可能有一个陷阱--在早上,在开盘时,拍卖不会立即开始,不是从第一秒开始--这时就有可能出现错误。