再见,机器人--你好,沼泽地。 - 页 4

 
Mislaid:

通过在代码中指定一个字符串来控制阵列的边界是非常有用的。以前是:除以0,然后看你想看的地方。而如果错误没有显示出来,那就更糟糕了。

你能提供一个如何做的例子吗?我在文档中找不到关于这个功能的任何信息。
 
Andrei01:
能否请您举例说明如何做到这一点?在文档中没有找到关于这个功能的任何信息。

正是如此!你现在不需要做任何事情。打开 "专家 "标签,阅读日志。如果出现错误,你会看到有关的信息。喜欢。

数组超出范围.......,表示代码中的行号。

 
Mislaid:

打开 "专家 "标签,阅读日志。

这对指标和脚本有用吗?
 
Pavlick:

尝试改变脚本/指标名称的第一个字母的大小写。也曾挣扎过一次https://www.mql5.com/ru/forum/152533/page2#982156

P.S: 嗯,把字符串改为char[] 。

回答,帕夫利克!

对你来说,帕夫利克是个好例子。

你的代码马上就起作用了!

现在你可以运行

脚本!

它仍有待于安装到指示器上!"。

你的代码已经被插入到指标中了!

只有一个小障碍

指示器不愿意承认这个名字

我把名字写在了剧本的位置上。

脚本应该从哪里调用。

剩下的就是让剧本在

认可!

你能帮助我吗?

真诚的问候

双关语

 
pansa:

回答,帕夫利克!

你真了不起,帕夫利克!

你的代码马上就起作用了!

现在你可以运行

脚本!

它仍有待于安装到指示器上!"。

你的代码已经被插入到指标中了!

只有一个小障碍

指示器不愿意承认这个名字

我把名字写在了剧本的位置上。

脚本应该从哪里调用。

剩下的就是让剧本在

认可!

你能帮助我吗?

真诚的问候

潘萨




如果你需要,我会帮助你
 
这些警告仍有一个非常好的收获(至少曾经有)。逻辑表达式的 优先级已经改变。当优先级没有被括号明确定义时,编译器只给出一个警告,尽管现在的逻辑表达式的效果与以前完全不同。这一定是个错误。有人可能已经决定对警告进行保释,其中有一个关于逻辑表达的警告。
 
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);

 
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);
 
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 ))

 
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);

}

//+------------------------------------------------------------------+