新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 49 1...424344454647484950515253545556...1953 新评论 Vitaly Muzichenko 2016.12.26 21:29 #481 mila.com: 谢谢你,这样做对吗? label =ObjectGetInteger(0,nm,OBJPROP_COLOR,0);if(label==Lime) BUY_ = true;不,这就是你获得颜色数据的方法,是一种int类型。试着看看评论里印的是什么。Comment( ColorToString((color)ObjectGetInteger(0,"NaneOBJ",OBJPROP_COLOR,0), true) );阅读 关于转换的内容 mila.com 2016.12.26 21:37 #482 Vitaly Muzichenko:阅读 关于转换的内容谢谢你, 条件本身是否正确? Vitaly Muzichenko 2016.12.26 21:51 #483 mila.com:谢谢你, 条件本身是否正确?string label = ColorToString((color)ObjectGetInteger(0,"MP140269",OBJPROP_COLOR,0), true);if(label==Lime) BUY_ = true;if(label==Red) BUY_ = false; 可能不会。如果数据是字符串 类型的, 你需要用引号将其括起来,并写出完整的逐个字符的颜色匹配:"clrLime"。 mila.com 2016.12.26 21:58 #484 Vitaly Muzichenko: 可能不会。如果数据是字符串 类型的, 你需要用引号将其括起来,并写出完整的逐个字符的颜色匹配:"clrLime"。谢谢,成功了 ) Artyom Trishkin 2016.12.26 22:20 #485 Vitaly Muzichenko: 可能不会。如果数据是字符串 类型的, 你必须用引号将其括起来,并写出完整的逐字颜色匹配:"clrLime"。 不,你不必用引号括起来,这些是常数。也就是说,它应该是这样的:如果(label==clrLime){}。 mila.com 2016.12.27 05:40 #486 Artyom Trishkin: 不,不需要加引号--这些是常数。也就是说,它应该是这样的:如果(label==clrLime){}。 谢谢你,这很有效。 能否请您告诉我如何从高位时间框架中正确获得随机指标的水平。 int bar_sto2_0=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i)); int bar_sto2_1=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i+1)); double sto1_0=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i); double sto1_1=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i+1); double sto2_0=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_0); double sto2_1=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_1); if(sto2_0>55) { BufferUP[i]=low[i]-distance*MyPoint; } 当指标设置在高位时间框架上时,一切都很正确,当指标线 在55以上时,箭头被设置。 当切换到一个较低的图表时,就会出现混乱。 Any questions from newcomers Problem Double Stoch Arrow 创建一个在若干工具上交易的 EA 交易程序 Artyom Trishkin 2016.12.27 06:41 #487 mila.com: 谢谢你,这很有效。 请你告诉我如何从高位时间框架中正确获得随机指标的水平。 int bar_sto2_0=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i)); int bar_sto2_1=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i+1)); double sto1_0=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i); double sto1_1=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i+1); double sto2_0=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_0); double sto2_1=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_1); if(sto2_0>55) { BufferUP[i]=low[i]-distance*MyPoint; } 当指标设置在高位时间框架上时,一切都很正确,当指标线 在55以上时,箭头被设置。 当你切换到一个较低的图表时,就会出现混乱。 如果你说的是指标的周期,那么为了知道高价位时间框架的哪个条形对应于低价位框架的周期指数所示的条形,你需要得到条形时间 i。 然后用这个时间来确定与这个时间相对应的高帧的条形图。例如:H4的一个小节对应H1的四个小节。因此,H1的四个周期指数i的值将指向H4的同一个柱子。从你的变量(它们的名字),我无法理解你是从哪个栏中获取数值的。所以除了理论之外,很难说什么。 mila.com 2016.12.27 07:13 #488 Artyom Trishkin:如果你说的是指标周期,为了知道较高时间框架的哪个柱子与较低时间框架的周期指数所指示的柱子相对应,你需要得到柱子i 的时间 。 然后用这个时间来确定与这个时间相对应的高帧的条形图。例如:H4的一小节对应H1的四小节。相应地,H1时间框架的四个周期指数i的值将指向H4时间框架的同一个柱子。从你的变量(它们的名字),我无法理解你从哪个条形图中得到的值。因此,除了理论之外,很难说什么。指示器被设置在M1上。上升箭头的主要条件是M5上的指标线 高于55水平。 这个条件没有得到满足,即使线在M5的55水平以下,箭头仍然被放置。 Mickey Moose 2016.12.27 09:01 #489 如何将 "如果1条的高点高于3条的低点... "的条件写入机器人。触发器不应该是 "OnTick()"但每次0条都会变成1条 Sergey Gritsay 2016.12.27 10:35 #490 trader781:如何将 "如果1条的高点高于3条的低点... "的条件写入机器人。触发器不应该是 "OnTick()"但每次0条都会变成1条你可以做以下工作//+------------------------------------------------------------------+//| test03.mq4 |//| Sergey Gritsay |//| https://www.mql5.com/ru/users/sergey1294 |//+------------------------------------------------------------------+#property copyright "Sergey Gritsay"#property link "https://www.mql5.com/ru/users/sergey1294"#property version "1.00"#property strict//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+class CNevBar {private: datetime curbar; datetime lastbar;public: CNevBar(); ~CNevBar(); bool new_bar(string symbol,ENUM_TIMEFRAMES period); };//+------------------------------------------------------------------+void CNevBar::CNevBar() { }//+------------------------------------------------------------------+void CNevBar::~CNevBar(void) { }//+------------------------------------------------------------------+bool CNevBar:: new_bar(string symbol,ENUM_TIMEFRAMES period) { curbar=(datetime) SeriesInfoInteger(symbol,period,SERIES_LASTBAR_DATE); if(lastbar==0)lastbar=(datetime)SeriesInfoInteger(symbol,period,SERIES_LASTBAR_DATE); if(lastbar!=curbar) { lastbar=curbar; return(true); } return(false); } CNevBar newbar;//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int OnInit() {//---//--- return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+void OnDeinit(const int reason) { }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+void OnTick() { if(newbar.new_bar(_Symbol,PERIOD_CURRENT)) { if(High[1]>Low[3]) { } } }//+------------------------------------------------------------------+... Any questions from newcomers 初学者的问题 MQL4 MT4 MetaTrader 初学者的问题 MQL5 MT5 MetaTrader 1...424344454647484950515253545556...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
谢谢你,这样做对吗?
if(label==Lime) BUY_ = true;
不,这就是你获得颜色数据的方法,是一种int类型。
试着看看评论里印的是什么。
阅读 关于转换的内容
阅读 关于转换的内容
谢谢你, 条件本身是否正确?
if(label==Lime) BUY_ = true;
if(label==Red) BUY_ = false;
可能不会。如果数据是字符串 类型的, 你需要用引号将其括起来,并写出完整的逐个字符的颜色匹配:"clrLime"。
可能不会。如果数据是字符串 类型的, 你必须用引号将其括起来,并写出完整的逐字颜色匹配:"clrLime"。
不,不需要加引号--这些是常数。也就是说,它应该是这样的:如果(label==clrLime){}。
谢谢你,这很有效。
能否请您告诉我如何从高位时间框架中正确获得随机指标的水平。
int bar_sto2_1=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i+1));
double sto1_0=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i);
double sto1_1=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i+1);
double sto2_0=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_0);
double sto2_1=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_1);
if(sto2_0>55)
{
BufferUP[i]=low[i]-distance*MyPoint;
}
当指标设置在高位时间框架上时,一切都很正确,当指标线 在55以上时,箭头被设置。
当切换到一个较低的图表时,就会出现混乱。
谢谢你,这很有效。
请你告诉我如何从高位时间框架中正确获得随机指标的水平。
int bar_sto2_1=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i+1));
double sto1_0=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i);
double sto1_1=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i+1);
double sto2_0=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_0);
double sto2_1=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_1);
if(sto2_0>55)
{
BufferUP[i]=low[i]-distance*MyPoint;
}
当指标设置在高位时间框架上时,一切都很正确,当指标线 在55以上时,箭头被设置。
当你切换到一个较低的图表时,就会出现混乱。
如果你说的是指标的周期,那么为了知道高价位时间框架的哪个条形对应于低价位框架的周期指数所示的条形,你需要得到条形时间 i。 然后用这个时间来确定与这个时间相对应的高帧的条形图。例如:H4的一个小节对应H1的四个小节。因此,H1的四个周期指数i的值将指向H4的同一个柱子。
从你的变量(它们的名字),我无法理解你是从哪个栏中获取数值的。所以除了理论之外,很难说什么。
如果你说的是指标周期,为了知道较高时间框架的哪个柱子与较低时间框架的周期指数所指示的柱子相对应,你需要得到柱子i 的时间 。 然后用这个时间来确定与这个时间相对应的高帧的条形图。例如:H4的一小节对应H1的四小节。相应地,H1时间框架的四个周期指数i的值将指向H4时间框架的同一个柱子。
从你的变量(它们的名字),我无法理解你从哪个条形图中得到的值。因此,除了理论之外,很难说什么。
指示器被设置在M1上。
上升箭头的主要条件是M5上的指标线 高于55水平。
这个条件没有得到满足,即使线在M5的55水平以下,箭头仍然被放置。
如何将 "如果1条的高点高于3条的低点... "的条件写入机器人。
触发器不应该是 "OnTick()"
但每次0条都会变成1条
如何将 "如果1条的高点高于3条的低点... "的条件写入机器人。
触发器不应该是 "OnTick()"
但每次0条都会变成1条
你可以做以下工作
//| test03.mq4 |
//| Sergey Gritsay |
//| https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link "https://www.mql5.com/ru/users/sergey1294"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
class CNevBar
{
private:
datetime curbar;
datetime lastbar;
public:
CNevBar();
~CNevBar();
bool new_bar(string symbol,ENUM_TIMEFRAMES period);
};
//+------------------------------------------------------------------+
void CNevBar::CNevBar()
{
}
//+------------------------------------------------------------------+
void CNevBar::~CNevBar(void)
{
}
//+------------------------------------------------------------------+
bool CNevBar:: new_bar(string symbol,ENUM_TIMEFRAMES period)
{
curbar=(datetime) SeriesInfoInteger(symbol,period,SERIES_LASTBAR_DATE);
if(lastbar==0)lastbar=(datetime)SeriesInfoInteger(symbol,period,SERIES_LASTBAR_DATE);
if(lastbar!=curbar)
{
lastbar=curbar;
return(true);
}
return(false);
}
CNevBar newbar;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(newbar.new_bar(_Symbol,PERIOD_CURRENT))
{
if(High[1]>Low[3])
{
}
}
}
//+------------------------------------------------------------------+
...