编码帮助 - 页 188 1...181182183184185186187188189190191192193194195...786 新评论 manone 2013.11.04 11:31 #1871 你好mladen或任何人。 我注意到MT4平台有一些默认指标(虽然有些是在自定义指标 部分重复的),但我认为代码并不完全相同,如何检索或看到这些默认指标的代码,非常感谢您的告知。 Mladen Rakic 2013.11.04 11:33 #1872 kenwa: 你好mladen或任何人,我注意到mt4平台有一些默认的指标(虽然有些是在自定义指标部分重复的,),但我认为代码并不完全相同,如何检索或看到这些默认指标的代码,非常感谢你告诉我。 你不可以 那些是内置指标(直接由终端执行)。 manone 2013.11.04 11:47 #1873 似乎那些内置的指标比那些在自定义指标 会话中的功能要好,真的没有办法知道它们的代码? Mladen Rakic 2013.11.04 12:03 #1874 有人问我如何从一个文件中使用多时间框架(当它不可能调用内置函数时)。 下面是一个简单的例子和其中的一些解释 _____________________________ 所附的指标表现为3个指标合二为一,在代码中你可以找到注释,说明什么时候做什么。我希望这能帮助一些人清楚如何制作一个单一文件的正确的多时间框架指标(除其他外,将始终计算正确的条数,而不假设目标时间框架内有多少条被改变)。 因此,这个简单的单文件多时间框架指标可以很容易地被用作多时间框架指标的模板。 附加的文件: simple_mtf.mq4 4 kb manone 2013.11.04 18:16 #1875 嗨,mladen。 你知道是否有可能以及如何做iStochasticOnArray吗? 有什么模板或公式可以做吗? 谢谢告知。 Mladen Rakic 2013.11.04 23:13 #1876 kenwa: 嗨,mladen,你知道是否有可能以及如何做iStochasticOnArray吗? 有什么模板或公式可以做吗? kenwa 没有所谓的内置函数。在这些帖子中,你可以看到如何写一个函数来做这个事情,以及如何使用它:https://www.mql5.com/en/forum/177239/page34 manone 2013.11.05 00:59 #1877 你好,Mladen。 对我来说有点深奥 例如:double iStoch(double priceR, double priceH, double priceL, int period, int slowing, int i, int instanceNo=0)是双倍的吗? 这个方法可以减少mq4内的索引缓冲区占用吗? 我对它的功能 有点奇怪。 stoch = iStoch(rsi,rsi,rsi,StoPeriod,StoSlowing,i)。 谢谢你的解释。 metrus 2013.11.05 02:46 #1878 mladen: 我不知道为什么它不接受其他的WAV文件。 如果你在代码中改变了它,它应该接受它 如果要重复5次,你应该把它放在一个循环中,但这可能会引起一些问题(如果声音文件太长)。 以下是我使用的代码(我对编码知之甚少,不知道如何进行循环)。 //+----------------------------------------------------------------- #property copyright "https://www.forex-tsd.com" #property link "https://www.forex-tsd.com" #属性 indicator_chart_window //----------------------------------------------------------------- extern int alertsForNotOlderThan = 300; extern int alertsForMagicNumber = 0; extern string alertsForSymbol = ""; 外部 bool alertsOn = true; 外部bool alertsSound = true; 外部bool alertsMessage = true; 外部bool alertsNotification = false; 外置的 bool alertsEmail = false; //------------------------------------------------------- // //------------------------------------------------------- // // // // // int tickets[]; bool alerted[]。 string symbols[]; int types[]; int times[]。 int init() { return(0); } int deinit() { return(0); } int start() { // // // 为订单收集数据 // // for (int i=OrdersTotal()-1; i>=0; i--) { if (!OrderSelect(i,SELECT_BY_POS)) continue; 如果(alertsForSymbol != "" && alertsForSymbol!=OrderSymbol()) 继续。 如果(alertsForMagicNumber !=0 && alertsForMagicNumber!=OrderMagicNumber())继续。 如果(alertsForNotOlderThan < (TimeCurrent()-OrderOpenTime())),继续。 // // // // // for (int k=ArraySize(tasks); k>0; k--) if (OrderTicket()==tickets[k-1]) break; 如果(k==0) { int size = ArraySize(t tickets)+1; ArrayResize(t tickets,size); tickets = OrderTicket(); ArrayResize(alerted,size); alerted = false; ArrayResize(symbols,size); symbols = OrderSymbol(); ArrayResize(types ,size); types = OrderType(); ArrayResize(times ,size); times = OrderOpenTime()。 } } // // // 检查某些订单是否需要被提醒,以便 // // for (i=ArraySize(ticket)-1; i>=0; i--) { string type = ""; if (!alerted) { alerted = true。 switch (type) { case OP_BUY : type = "buy"; break; case OP_SELL : type = "sell"; break; case OP_BUYSTOP : type = "buy stop"; break; case OP_BUYLIMIT : type = "buy limit"; break; case OP_SELLSTOP : type = "sell stop"; break; case OP_SELLLIMIT : type = "sell limit"; break; } doAlert(type+" opened at :"+TimeToStr(times,TIME_DATE|TIME_SECONDS)+" for "+symbols)。 } } return(0); } //------------------------------------------------------- // //------------------------------------------------------- // // // // // 空白的doAlert(string doWhat) { 字符串消息。 message = doWhat; 如果(alertsMessage)警报(消息)。 如果(alertsEmail) SendMail(StringConcatenate(Symbol()," order alerts "),message); 如果(alertsNotification)SendNotification("order alerts "+message); 如果(alertsSound) PlaySound("hallelujah.wav")。 } 但它在被触发时只是响起普通警报。 我想:如果我不能让PlaySound改变,你能不能在一个循环中编码,每隔1秒重放一个简短的常规警报,持续10次?- 至少这要比单一的常规警报声更能唤醒我......。 谢谢你 Coding help 多时间框架指标 如何编码? William Snyder 2013.11.05 03:04 #1879 person77: 下面是我使用的代码(我对编码知之甚少,不知道如何做循环)。//+----------------------------------------------------------------- #属性版权 "https://www.forex-tsd.com" #property link "https://www.forex-tsd.com" #属性 indicator_chart_window //----------------------------------------------------------------- extern int alertsForNotOlderThan = 300; extern int alertsForMagicNumber = 0; extern string alertsForSymbol = ""; 外部 bool alertsOn = true; extern bool alertsSound = true; 外部bool alertsMessage = true; 外部bool alertsNotification = false; 外置的 bool alertsEmail = false; //------------------------------------------------------- // //------------------------------------------------------- // // // // // int tickets[]; bool alerted[]。 string symbols[]; int types[]; int times[]。 int init() { return(0); } int deinit() { return(0); } int start() { // // // 为订单收集数据 // // for (int i=OrdersTotal()-1; i>=0; i--) { if (!OrderSelect(i,SELECT_BY_POS)) continue; 如果(alertsForSymbol != "" && alertsForSymbol!=OrderSymbol()) 继续。 如果(alertsForMagicNumber !=0 && alertsForMagicNumber!=OrderMagicNumber())继续。 如果(alertsForNotOlderThan < (TimeCurrent()-OrderOpenTime())),继续。 // // // // // for (int k=ArraySize(tasks); k>0; k--) if (OrderTicket()==tickets[k-1]) break; 如果(k==0) { int size = ArraySize(t tickets)+1; ArrayResize(t tickets,size); tickets = OrderTicket(); ArrayResize(alerted,size); alerted = false; ArrayResize(symbols,size); symbols = OrderSymbol(); ArrayResize(types ,size); types = OrderType(); ArrayResize(times ,size); times = OrderOpenTime()。 } } // // // 检查某些订单是否需要被提醒,以便 // // for (i=ArraySize(ticket)-1; i>=0; i--) { string type = ""; if (!alerted) { alerted = true。 switch (type) { case OP_BUY : type = "buy"; break; case OP_SELL : type = "sell"; break; case OP_BUYSTOP : type = "buy stop"; break; case OP_BUYLIMIT : type = "buy limit"; break; case OP_SELLSTOP : type = "sell stop"; break; case OP_SELLLIMIT : type = "sell limit"; break; } doAlert(type+" opened at :"+TimeToStr(times,TIME_DATE|TIME_SECONDS)+" for "+symbols)。 } } return(0); } //------------------------------------------------------- // //------------------------------------------------------- // // // // // 空白的doAlert(string doWhat) { 字符串消息。 message = doWhat; 如果(alertsMessage)警报(消息)。 如果(alertsEmail) SendMail(StringConcatenate(Symbol()," order alerts "),message); 如果(alertsNotification) SendNotification("order alerts "+message); 如果(alertsSound) PlaySound("hallelujah.wav")。 } 但它在被触发时只是响起普通警报。 我想:如果我不能让PlaySound改变,你能不能在一个循环中编码,每隔1秒重放一个简短的常规警报,持续10次?- 至少那会比单一的常规警报声更能唤醒我......。 谢谢你 人77。 以前的工作方法是进入一个开放的图表,然后进入工具/选项/事件,然后在警报中简单地改变WAV.到你想要的,但有一段时间没有这样做,所以不确定这是否仍然有效,并确保你使用的WAV文件在声音文件夹中。 附加的文件: alert.png 99 kb metrus 2013.11.05 10:28 #1880 mrtools - 谢谢你:效果很好。 1...181182183184185186187188189190191192193194195...786 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你好mladen或任何人。
我注意到MT4平台有一些默认指标(虽然有些是在自定义指标 部分重复的),但我认为代码并不完全相同,如何检索或看到这些默认指标的代码,非常感谢您的告知。
你好mladen或任何人,我注意到mt4平台有一些默认的指标(虽然有些是在自定义指标部分重复的,),但我认为代码并不完全相同,如何检索或看到这些默认指标的代码,非常感谢你告诉我。
你不可以
那些是内置指标(直接由终端执行)。
似乎那些内置的指标比那些在自定义指标 会话中的功能要好,真的没有办法知道它们的代码?
有人问我如何从一个文件中使用多时间框架(当它不可能调用内置函数时)。
下面是一个简单的例子和其中的一些解释
_____________________________
所附的指标表现为3个指标合二为一,在代码中你可以找到注释,说明什么时候做什么。我希望这能帮助一些人清楚如何制作一个单一文件的正确的多时间框架指标(除其他外,将始终计算正确的条数,而不假设目标时间框架内有多少条被改变)。
因此,这个简单的单文件多时间框架指标可以很容易地被用作多时间框架指标的模板。
嗨,mladen。
你知道是否有可能以及如何做iStochasticOnArray吗? 有什么模板或公式可以做吗? 谢谢告知。
嗨,mladen,你知道是否有可能以及如何做iStochasticOnArray吗? 有什么模板或公式可以做吗?
kenwa
没有所谓的内置函数。在这些帖子中,你可以看到如何写一个函数来做这个事情,以及如何使用它:https://www.mql5.com/en/forum/177239/page34
你好,Mladen。
对我来说有点深奥
例如:double iStoch(double priceR, double priceH, double priceL, int period, int slowing, int i, int instanceNo=0)是双倍的吗? 这个方法可以减少mq4内的索引缓冲区占用吗?
我对它的功能 有点奇怪。
stoch = iStoch(rsi,rsi,rsi,StoPeriod,StoSlowing,i)。
谢谢你的解释。
我不知道为什么它不接受其他的WAV文件。
如果你在代码中改变了它,它应该接受它
如果要重复5次,你应该把它放在一个循环中,但这可能会引起一些问题(如果声音文件太长)。以下是我使用的代码(我对编码知之甚少,不知道如何进行循环)。
//+-----------------------------------------------------------------
#property copyright "https://www.forex-tsd.com"
#property link "https://www.forex-tsd.com"
#属性 indicator_chart_window
//-----------------------------------------------------------------
extern int alertsForNotOlderThan = 300;
extern int alertsForMagicNumber = 0;
extern string alertsForSymbol = "";
外部 bool alertsOn = true;
外部bool alertsSound = true;
外部bool alertsMessage = true;
外部bool alertsNotification = false;
外置的 bool alertsEmail = false;
//-------------------------------------------------------
//
//-------------------------------------------------------
//
//
//
//
//
int tickets[];
bool alerted[]。
string symbols[];
int types[];
int times[]。
int init() { return(0); }
int deinit() { return(0); }
int start()
{
//
//
// 为订单收集数据
//
//
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS)) continue;
如果(alertsForSymbol != "" && alertsForSymbol!=OrderSymbol()) 继续。
如果(alertsForMagicNumber !=0 && alertsForMagicNumber!=OrderMagicNumber())继续。
如果(alertsForNotOlderThan < (TimeCurrent()-OrderOpenTime())),继续。
//
//
//
//
//
for (int k=ArraySize(tasks); k>0; k--)
if (OrderTicket()==tickets[k-1]) break;
如果(k==0)
{
int size = ArraySize(t tickets)+1;
ArrayResize(t tickets,size); tickets = OrderTicket();
ArrayResize(alerted,size); alerted = false;
ArrayResize(symbols,size); symbols = OrderSymbol();
ArrayResize(types ,size); types = OrderType();
ArrayResize(times ,size); times = OrderOpenTime()。
}
}
//
//
// 检查某些订单是否需要被提醒,以便
//
//
for (i=ArraySize(ticket)-1; i>=0; i--)
{
string type = "";
if (!alerted)
{
alerted = true。
switch (type)
{
case OP_BUY : type = "buy"; break;
case OP_SELL : type = "sell"; break;
case OP_BUYSTOP : type = "buy stop"; break;
case OP_BUYLIMIT : type = "buy limit"; break;
case OP_SELLSTOP : type = "sell stop"; break;
case OP_SELLLIMIT : type = "sell limit"; break;
}
doAlert(type+" opened at :"+TimeToStr(times,TIME_DATE|TIME_SECONDS)+" for "+symbols)。
}
}
return(0);
}
//-------------------------------------------------------
//
//-------------------------------------------------------
//
//
//
//
//
空白的doAlert(string doWhat)
{
字符串消息。
message = doWhat;
如果(alertsMessage)警报(消息)。
如果(alertsEmail) SendMail(StringConcatenate(Symbol()," order alerts "),message);
如果(alertsNotification)SendNotification("order alerts "+message);
如果(alertsSound) PlaySound("hallelujah.wav")。
}
但它在被触发时只是响起普通警报。
我想:如果我不能让PlaySound改变,你能不能在一个循环中编码,每隔1秒重放一个简短的常规警报,持续10次?- 至少这要比单一的常规警报声更能唤醒我......。
谢谢你
下面是我使用的代码(我对编码知之甚少,不知道如何做循环)。
//+-----------------------------------------------------------------
#属性版权 "https://www.forex-tsd.com"
#property link "https://www.forex-tsd.com"
#属性 indicator_chart_window
//-----------------------------------------------------------------
extern int alertsForNotOlderThan = 300;
extern int alertsForMagicNumber = 0;
extern string alertsForSymbol = "";
外部 bool alertsOn = true;
extern bool alertsSound = true;
外部bool alertsMessage = true;
外部bool alertsNotification = false;
外置的 bool alertsEmail = false;
//-------------------------------------------------------
//
//-------------------------------------------------------
//
//
//
//
//
int tickets[];
bool alerted[]。
string symbols[];
int types[];
int times[]。
int init() { return(0); }
int deinit() { return(0); }
int start()
{
//
//
// 为订单收集数据
//
//
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS)) continue;
如果(alertsForSymbol != "" && alertsForSymbol!=OrderSymbol()) 继续。
如果(alertsForMagicNumber !=0 && alertsForMagicNumber!=OrderMagicNumber())继续。
如果(alertsForNotOlderThan < (TimeCurrent()-OrderOpenTime())),继续。
//
//
//
//
//
for (int k=ArraySize(tasks); k>0; k--)
if (OrderTicket()==tickets[k-1]) break;
如果(k==0)
{
int size = ArraySize(t tickets)+1;
ArrayResize(t tickets,size); tickets = OrderTicket();
ArrayResize(alerted,size); alerted = false;
ArrayResize(symbols,size); symbols = OrderSymbol();
ArrayResize(types ,size); types = OrderType();
ArrayResize(times ,size); times = OrderOpenTime()。
}
}
//
//
// 检查某些订单是否需要被提醒,以便
//
//
for (i=ArraySize(ticket)-1; i>=0; i--)
{
string type = "";
if (!alerted)
{
alerted = true。
switch (type)
{
case OP_BUY : type = "buy"; break;
case OP_SELL : type = "sell"; break;
case OP_BUYSTOP : type = "buy stop"; break;
case OP_BUYLIMIT : type = "buy limit"; break;
case OP_SELLSTOP : type = "sell stop"; break;
case OP_SELLLIMIT : type = "sell limit"; break;
}
doAlert(type+" opened at :"+TimeToStr(times,TIME_DATE|TIME_SECONDS)+" for "+symbols)。
}
}
return(0);
}
//-------------------------------------------------------
//
//-------------------------------------------------------
//
//
//
//
//
空白的doAlert(string doWhat)
{
字符串消息。
message = doWhat;
如果(alertsMessage)警报(消息)。
如果(alertsEmail) SendMail(StringConcatenate(Symbol()," order alerts "),message);
如果(alertsNotification) SendNotification("order alerts "+message);
如果(alertsSound) PlaySound("hallelujah.wav")。
}
但它在被触发时只是响起普通警报。
我想:如果我不能让PlaySound改变,你能不能在一个循环中编码,每隔1秒重放一个简短的常规警报,持续10次?- 至少那会比单一的常规警报声更能唤醒我......。
谢谢你人77。
以前的工作方法是进入一个开放的图表,然后进入工具/选项/事件,然后在警报中简单地改变WAV.到你想要的,但有一段时间没有这样做,所以不确定这是否仍然有效,并确保你使用的WAV文件在声音文件夹中。
mrtools - 谢谢你:效果很好。