再见,机器人--你好,沼泽地。 - 页 4 1234567891011...16 新评论 Andrei01 2014.09.10 04:05 #31 Mislaid:通过在代码中指定一个字符串来控制阵列的边界是非常有用的。以前是:除以0,然后看你想看的地方。而如果错误没有显示出来,那就更糟糕了。 你能提供一个如何做的例子吗?我在文档中找不到关于这个功能的任何信息。 Mislaid 2014.09.10 04:26 #32 Andrei01: 能否请您举例说明如何做到这一点?在文档中没有找到关于这个功能的任何信息。 正是如此!你现在不需要做任何事情。打开 "专家 "标签,阅读日志。如果出现错误,你会看到有关的信息。喜欢。 数组超出范围.......,表示代码中的行号。 Andrei01 2014.09.10 04:59 #33 Mislaid: 打开 "专家 "标签,阅读日志。 这对指标和脚本有用吗? pansa 2014.09.10 05:18 #34 Pavlick:尝试改变脚本/指标名称的第一个字母的大小写。也曾挣扎过一次https://www.mql5.com/ru/forum/152533/page2#982156P.S: 嗯,把字符串改为char[] 。 回答,帕夫利克! 对你来说,帕夫利克是个好例子。 你的代码马上就起作用了! 现在你可以运行 脚本! 它仍有待于安装到指示器上!"。 你的代码已经被插入到指标中了! 只有一个小障碍 指示器不愿意承认这个名字 我把名字写在了剧本的位置上。 脚本应该从哪里调用。 剩下的就是让剧本在 认可! 你能帮助我吗? 真诚的问候 双关语 Victor Nikolaev 2014.09.10 05:54 #35 pansa: 回答,帕夫利克! 你真了不起,帕夫利克! 你的代码马上就起作用了! 现在你可以运行 脚本! 它仍有待于安装到指示器上!"。 你的代码已经被插入到指标中了! 只有一个小障碍 指示器不愿意承认这个名字 我把名字写在了剧本的位置上。 脚本应该从哪里调用。 剩下的就是让剧本在 认可! 你能帮助我吗? 真诚的问候 潘萨 如果你需要,我会帮助你 Dmitry Fedoseev 2014.09.10 07:07 #36 这些警告仍有一个非常好的收获(至少曾经有)。逻辑表达式的 优先级已经改变。当优先级没有被括号明确定义时,编译器只给出一个警告,尽管现在的逻辑表达式的效果与以前完全不同。这一定是个错误。有人可能已经决定对警告进行保释,其中有一个关于逻辑表达的警告。 pansa 2014.09.10 08:08 #37 Vinin: 如果你需要任何帮助,我会帮助你的。 嗨,维宁! 非常感谢 愿意提供帮助! 我发给你的是关于如何在 调用编译器脚本 豆瓣酱 ____________________________________ 嗨,Pavlik! 我想给你看一个例子 脚本调用是如何组织的 编制者,现在它不工作了。 供审查 豆瓣酱 //+------------------------------------------------------------------+ //|sample_execute_script。ǞǞǞ //+------------------------------------------------------------------+ #import "user32.dll" int RegisterWindowMessageA(string MessageName)。 int PostMessageA(int hwnd, int msg, int wparam, string Name); void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo)。 ##进口 int start() { int winHandle = WindowHandle( Symbol(),Period() )。 // // // if( signal < 0 && trigl==true && buy == true ) {StartScript( winHandle, "SchliesenProfitOrders") ; } // // // void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false) { int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message"); PostMessageA(hWnd, MessageNumber, 16, ScriptName)。 如果(AutomaticallyAcceptDefaults){ ClearConfigDialog(); } } 空白的ClearConfigDialog() { 睡眠(100)。 keybd_event(13, 0, 0, 0)。 } // // // return(0); Goodbye robot - hello Execute an existing EA MQL4 从EA添加指标到图表 Boris 2014.09.10 09:31 #38 pansa: 嗨,维宁!非常感谢 愿意提供帮助!我发给你的是关于如何在调用编译器脚本豆瓣酱____________________________________嗨,Pavlik!我想给你看一个例子脚本调用是如何组织的与堆肥机,现在它不工作了。供审查豆瓣酱 点击SRC 并粘贴代码 真的很难吗?//+------------------------------------------------------------------+ //| sample_execute_script.mq4 | //+------------------------------------------------------------------+ #import "user32.dll" int RegisterWindowMessageA(string MessageName); int PostMessageA(int hwnd, int msg, int wparam, string Name); void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo); #import int start() { int winHandle = WindowHandle( Symbol(), Period() ); // // // if(signal < 0 && trigl==true && buy == true) { StartScript(winHandle, "SchliesenProfitOrders" ); } // // // } void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false) { int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message"); PostMessageA(hWnd, MessageNumber, 16, ScriptName); if (AutomaticallyAcceptDefaults) { ClearConfigDialog(); } } void ClearConfigDialog() { Sleep(100); keybd_event(13, 0, 0, 0); } // // // return(0); [删除] 2014.09.10 10:00 #39 pansa: 这应该可以正常工作。void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false) { char buf[]; StringToCharArray("MetaTrader4_Internal_Message", buf); int MT4InternalMsg = RegisterWindowMessageA(buf); StringToCharArray(ScriptName, buf); SendMessageA(hWnd, MT4InternalMsg, 16, buf); if (AutomaticallyAcceptDefaults) { ClearConfigDialog(); } } void ClearConfigDialog() { Sleep(100); keybd_event(13, 0, 0, 0); }还有,不要忘记脚本的第一个字母的大小写,例如,如果脚本 "test "没有开始,你应该试试 "Test"。尊敬的Pavlik )) pansa 2014.09.10 12:14 #40 Pavlick:这应该可以正常工作。还有,不要忘记脚本的第一个字母的大小写,例如,如果脚本"test"不能运行,你应该尝试 "Test"。问候,Pavlik)))。 嗨,Pavlik! 得到了你的提炼和 试图把所有东西都放在指标中 但指标并不愿意。 看看你能做什么 以使其发挥作用! 潘萨 //+------------------------------------------------------------------+ //|AltrTREND_Signal。ǞǞǞ //| Copyright 2014, MetaQuotes Software Corp. //|https://www.mql5.com || //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //|AltrTrend_Signal_v2_2_alert。ǞǞǞ //|Ramdass - 仅限转换 //+------------------------------------------------------------------+ #财产版权 "作者 - OlegVS, GOODMAN" #属性严格 #import "user32.dll" int RegisterWindowMessageA(uchar &lParam[])。 int SendMessageA(int hWnd, int Msg, int wParam, char &lParam[])。 void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo)。 ##进口 #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 DeepSkyBlue #属性 indicator_color2 橙红 #property indicator_width1 1 #property indicator_width2 1 //---- 输入参数 外部的bool Alert_message=true。 Extern int Time_alert_minutes=60; // ????? ???????????????????????60 ?????. 外来的int K = 30。 外置双Kstop = 0.5。 外在的inttern Kperiod = 150。 外置 int PeriodADX = 7; //14; 外置 int CountBars = 100; //---- 缓冲区 double val1[]; double val2[]; 双重警报时间。 //+------------------------------------------------------------------+ //|自定义指标 初始化功能 //+------------------------------------------------------------------+ int init() { string short_name; //---- 指标线 IndicatorBuffers(1)。 SetIndexStyle(0,DRAW_ARROW)。 SetIndexArrow(0,241); IndicatorBuffers(2)。 SetIndexStyle(1,DRAW_ARROW)。 SetIndexArrow(1,242); SetIndexBuffer(0,val1)。 SetIndexBuffer(1,val2)。 如果(CountBars>=Bars) CountBars=Bars。 SetIndexDrawBegin(0, Bars - CountBars + PeriodADX )。 SetIndexDrawBegin(1, Bars - CountBars + PeriodADX )。 //---- return(0); } //+------------------------------------------------------------------+ //| AltrTrend_Signal_v2_2| //+------------------------------------------------------------------+ int start() { int i, shift, counted_bars = IndicatorCounted(); //---- if(counted_bars<0) return(-1); //---- int i1, i2, t_per; double Range, AvgRange, smin, smax, SsMax, SsMin, SSP, price; bool uptrend, old; //---- 如果(Bars <=PeriodADX+ 1) return(0); //---- for(shift = CountBars - PeriodADX ; shift >= 0; shift--) { SSP = MathCeil(Kperiod / iADX(NULL, 0, PeriodADX , PRICE_CLOSE, MODE_MAIN, 1))。 范围=0。 平均范围=0。 for(i1 = shift; i1 <= shift + SSP; i1++) { 平均范围 = 平均范围 + MathAbs(High[i1] - Low[i1])。 } 范围=平均范围/(SSP + 1)。 //---- SsMax = High[shift]; SsMin = Low[shift]; for(i2 = shift; i2 <= shift + SSP - 1; i2++) { 价格=High[i2]。 如果(SsMax < 价格) SsMax= 价格。 价格=Low[i2]。 如果(SsMin >= price) SsMin = 价格。 } //---- smin = SsMin + (SsMax - SsMin)*K / 100; smax = SsMax - (SsMax - SsMin)*K / 100; val1[shift] = 0.0。 val2[shift] = 0.0。 如果(Close[shift] < smin) { uptrend = false。 } 如果(Close[shift] > smax) { 上升趋势 =真。 } 如果(uptrend != old && uptrend == true) { val1[shift] = Low[shift] - Range*Kstop。 } 如果(uptrend != old && uptrend == false) { val2[shift] = High[shift] + Range*Kstop; } 旧 = 上升趋势。 }void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false) { { char buf[]。 StringToCharArray("MetaTrader4_Internal_Message", buf;) int MT4InternalMsg = RegisterWindowMessageA(buf); StringToCharArray("fPlayer", buf); SendMessageA(hWnd, MT4InternalMsg, 16, buf)。 如果(AutomaticallyAcceptDefaults){ ClearConfigDialog(); } } 空白的ClearConfigDialog() { 睡眠(100)。 keybd_event(13, 0, 0, 0)。 } //---- Alert 如果(Period()<Time_alert_minutes)t_per=Period();否则t_per=Time_alert_minutes;//??????<Time_alert, ????? ?????????????????????????. 如果(Alert_message==true && CurTime()>AlertTime && val1[0]!=0.0) { Alert(Symbol(), "++ BUY !!!+++", "//AltrTrend_Signal_v2_2_alert ")。 AlertTime=CurTime()+(t_per - MathMod(TimeMinute(CurTime()), t_per))*60。 //PlaySound("payment.wav")。 fPlayer ;//script } 如果(Alert_message==true && CurTime()>AlertTime && val2[0]!=0.0) { Alert(Symbol(), "++ SELL !!!+++", "//AltrTrend_Signal_v2_2_alert")。 AlertTime=CurTime()+(t_per - MathMod(TimeMinute(CurTime()), t_per))*60。 // PlaySound("payment.wav")。 fPlayer 。 } return(0); } //+------------------------------------------------------------------+ Goodbye robot - hello [存档!]我将免费撰写任何专家或指标。 信号系统(ASCTrend和其他修改)。 1234567891011...16 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
通过在代码中指定一个字符串来控制阵列的边界是非常有用的。以前是:除以0,然后看你想看的地方。而如果错误没有显示出来,那就更糟糕了。
能否请您举例说明如何做到这一点?在文档中没有找到关于这个功能的任何信息。
正是如此!你现在不需要做任何事情。打开 "专家 "标签,阅读日志。如果出现错误,你会看到有关的信息。喜欢。
数组超出范围.......,表示代码中的行号。
打开 "专家 "标签,阅读日志。
尝试改变脚本/指标名称的第一个字母的大小写。也曾挣扎过一次https://www.mql5.com/ru/forum/152533/page2#982156
P.S: 嗯,把字符串改为char[] 。
回答,帕夫利克!
对你来说,帕夫利克是个好例子。
你的代码马上就起作用了!
现在你可以运行
脚本!
它仍有待于安装到指示器上!"。
你的代码已经被插入到指标中了!
只有一个小障碍
指示器不愿意承认这个名字
我把名字写在了剧本的位置上。
脚本应该从哪里调用。
剩下的就是让剧本在
认可!
你能帮助我吗?
真诚的问候
双关语
回答,帕夫利克!
你真了不起,帕夫利克!
你的代码马上就起作用了!
现在你可以运行
脚本!
它仍有待于安装到指示器上!"。
你的代码已经被插入到指标中了!
只有一个小障碍
指示器不愿意承认这个名字
我把名字写在了剧本的位置上。
脚本应该从哪里调用。
剩下的就是让剧本在
认可!
你能帮助我吗?
真诚的问候
潘萨
如果你需要,我会帮助你
如果你需要任何帮助,我会帮助你的。
嗨,维宁!
非常感谢
愿意提供帮助!
我发给你的是关于如何在
调用编译器脚本
豆瓣酱
____________________________________
嗨,Pavlik!
我想给你看一个例子
脚本调用是如何组织的
编制者,现在它不工作了。
供审查
豆瓣酱
//+------------------------------------------------------------------+
//|sample_execute_script。ǞǞǞ
//+------------------------------------------------------------------+
#import "user32.dll"
int RegisterWindowMessageA(string MessageName)。
int PostMessageA(int hwnd, int msg, int wparam, string Name);
void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo)。
##进口
int start()
{
int winHandle = WindowHandle( Symbol(),Period() )。
//
//
//
if( signal < 0 && trigl==true && buy == true ) {StartScript( winHandle, "SchliesenProfitOrders") ; }
//
//
//
void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false)
{
int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message");
PostMessageA(hWnd, MessageNumber, 16, ScriptName)。
如果(AutomaticallyAcceptDefaults){ ClearConfigDialog(); }
}
空白的ClearConfigDialog()
{
睡眠(100)。
keybd_event(13, 0, 0, 0)。
}
//
//
//
return(0);
嗨,维宁!
非常感谢
愿意提供帮助!
我发给你的是关于如何在
调用编译器脚本
豆瓣酱
____________________________________
嗨,Pavlik!
我想给你看一个例子
脚本调用是如何组织的
与堆肥机,现在它不工作了。
供审查
豆瓣酱
点击SRC 并粘贴代码 真的很难吗?
这应该可以正常工作。
还有,不要忘记脚本的第一个字母的大小写,例如,如果脚本 "test "没有开始,你应该试试 "Test"。
尊敬的Pavlik ))
这应该可以正常工作。
还有,不要忘记脚本的第一个字母的大小写,例如,如果脚本"test"不能运行,你应该尝试 "Test"。
问候,Pavlik)))。
嗨,Pavlik!
得到了你的提炼和
试图把所有东西都放在指标中
但指标并不愿意。
看看你能做什么
以使其发挥作用!
潘萨
//+------------------------------------------------------------------+
//|AltrTREND_Signal。ǞǞǞ
//| Copyright 2014, MetaQuotes Software Corp.
//|https://www.mql5.com ||
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|AltrTrend_Signal_v2_2_alert。ǞǞǞ
//|Ramdass - 仅限转换
//+------------------------------------------------------------------+
#财产版权 "作者 - OlegVS, GOODMAN"
#属性严格
#import "user32.dll"
int RegisterWindowMessageA(uchar &lParam[])。
int SendMessageA(int hWnd, int Msg, int wParam, char &lParam[])。
void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo)。
##进口
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 DeepSkyBlue
#属性 indicator_color2 橙红
#property indicator_width1 1
#property indicator_width2 1
//---- 输入参数
外部的bool Alert_message=true。
Extern int Time_alert_minutes=60; // ????? ???????????????????????60 ?????.
外来的int K = 30。
外置双Kstop = 0.5。
外在的inttern Kperiod = 150。
外置 int PeriodADX = 7; //14;
外置 int CountBars = 100;
//---- 缓冲区
double val1[];
double val2[];
双重警报时间。
//+------------------------------------------------------------------+
//|自定义指标 初始化功能
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- 指标线
IndicatorBuffers(1)。
SetIndexStyle(0,DRAW_ARROW)。
SetIndexArrow(0,241);
IndicatorBuffers(2)。
SetIndexStyle(1,DRAW_ARROW)。
SetIndexArrow(1,242);
SetIndexBuffer(0,val1)。
SetIndexBuffer(1,val2)。
如果(CountBars>=Bars)
CountBars=Bars。
SetIndexDrawBegin(0, Bars - CountBars + PeriodADX )。
SetIndexDrawBegin(1, Bars - CountBars + PeriodADX )。
//----
return(0);
}
//+------------------------------------------------------------------+
//| AltrTrend_Signal_v2_2|
//+------------------------------------------------------------------+
int start()
{
int i, shift, counted_bars = IndicatorCounted();
//----
if(counted_bars<0) return(-1);
//----
int i1, i2, t_per;
double Range, AvgRange, smin, smax, SsMax, SsMin, SSP, price;
bool uptrend, old;
//----
如果(Bars <=PeriodADX+ 1)
return(0);
//----
for(shift = CountBars - PeriodADX ; shift >= 0; shift--)
{
SSP = MathCeil(Kperiod / iADX(NULL, 0, PeriodADX , PRICE_CLOSE, MODE_MAIN, 1))。
范围=0。
平均范围=0。
for(i1 = shift; i1 <= shift + SSP; i1++)
{
平均范围 = 平均范围 + MathAbs(High[i1] - Low[i1])。
}
范围=平均范围/(SSP + 1)。
//----
SsMax = High[shift];
SsMin = Low[shift];
for(i2 = shift; i2 <= shift + SSP - 1; i2++)
{
价格=High[i2]。
如果(SsMax < 价格)
SsMax= 价格。
价格=Low[i2]。
如果(SsMin >= price)
SsMin = 价格。
}
//----
smin = SsMin + (SsMax - SsMin)*K / 100;
smax = SsMax - (SsMax - SsMin)*K / 100;
val1[shift] = 0.0。
val2[shift] = 0.0。
如果(Close[shift] < smin)
{
uptrend = false。
}
如果(Close[shift] > smax)
{
上升趋势 =真。
}
如果(uptrend != old && uptrend == true)
{
val1[shift] = Low[shift] - Range*Kstop。
}
如果(uptrend != old && uptrend == false)
{
val2[shift] = High[shift] + Range*Kstop;
}
旧 = 上升趋势。
}
void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false)
{
{
char buf[]。
StringToCharArray("MetaTrader4_Internal_Message", buf;)
int MT4InternalMsg = RegisterWindowMessageA(buf);
StringToCharArray("fPlayer", buf);
SendMessageA(hWnd, MT4InternalMsg, 16, buf)。
如果(AutomaticallyAcceptDefaults){ ClearConfigDialog(); }
}
空白的ClearConfigDialog()
{
睡眠(100)。
keybd_event(13, 0, 0, 0)。
}
//---- Alert
如果(Period()<Time_alert_minutes)t_per=Period();否则t_per=Time_alert_minutes;//??????<Time_alert, ????? ?????????????????????????.
如果(Alert_message==true && CurTime()>AlertTime && val1[0]!=0.0)
{
Alert(Symbol(), "++ BUY !!!+++", "//AltrTrend_Signal_v2_2_alert ")。
AlertTime=CurTime()+(t_per - MathMod(TimeMinute(CurTime()), t_per))*60。
//PlaySound("payment.wav")。
fPlayer ;//script
}
如果(Alert_message==true && CurTime()>AlertTime && val2[0]!=0.0)
{
Alert(Symbol(), "++ SELL !!!+++", "//AltrTrend_Signal_v2_2_alert")。
AlertTime=CurTime()+(t_per - MathMod(TimeMinute(CurTime()), t_per))*60。
// PlaySound("payment.wav")。
fPlayer 。
}
return(0);
}
//+------------------------------------------------------------------+