文章 "MQL5 中如何调用指标" - 页 2 12 新评论 jordiqqq 2013.01.09 18:30 #11 对我来说,它不让我编译文件。我不知道这到底是怎么回事。谢谢、约尔迪 iJSmile 2015.03.07 00:26 #12 感谢你们所做的大量工作! gr101 2015.10.15 21:29 #13 谢谢!下面是我边玩边整理出来的一个简单示例。如果有错,请指正,我会修改。我觉得奇怪的是,这些值似乎与图表上的简单移动平均线不一致。################### 在脚本中int period = 21; // 21 条移动平均线 int sampleSize = 100;// 这是您要获取的数据条数 int handle = iCustom(Symbol(),0, "Examples\Custom Moving Average", period、// 期间 0, // 偏移量 MODE_SMA、// 计算方法 PRICE_CLOSE // 按收盘价计算 );void OnTick(){// 这是一个数组,移动平均值将被复制到其中。 // 这里的每个项都是一个移动平均值 // 数组中的第一个项(位置为 0 的项)是最近的 // 最后一个项是数组 ArraySize() - 1 中的最后一个项 double movingAverageValues[]; ArraySetAsSeries(movingAverageValues,true); if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) <0){Print("CopyBufferMA1 error =",GetLastError());} double currentMovingAverage = movingAverageValues[0];double earliestMovingAverage = movingAverageValues[ArraySize(movingAverageValues) - 1];################################# 在 EA 中(注意:OnInit 和 OnTick)int OnInit(){int period = 21; // 21 条移动平均线int sampleSize = 100; //这是希望获取的数据条数 int handle = iCustom(Symbol(),0, "Examples\Custom Moving Average", period, // Period 0, // 偏移量 MODE_SMA, // 计算方法 PRICE_CLOSE // 按收盘价计算 );}OnTick(){// 这是一个数组,移动平均值将被复制到其中。 // 这里的每个项都是一个移动平均值 // 数组中的第一个项(位置为 0 的项)是最近的 // 最后一个项是数组 ArraySize() - 1 中的最后一个项 double movingAverageValues[]; ArraySetAsSeries(movingAverageValues,true); if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) <0){Print("CopyBufferMA1 error =",GetLastError());} double currentMovingAverage = movingAverageValues[0];double earliestMovingAverage = movingAverageValues[ArraySize(movingAverageValues) - 1];} Discussion of article "How Como obter valor do 不懂就问。编程0基础,想学MQL5语言,有没有必要先学C++?谢谢各位大佬! Emory Cardozo 2018.01.30 19:23 #14 好文章 Alex Renko 2023.07.23 22:00 #15 是啊......发明自己的指标并将其内置到机器人代码中,比每次都编写这些句柄要容易得多...乏味 12 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
对我来说,它不让我编译文件。
我不知道这到底是怎么回事。
谢谢、
约尔迪
谢谢!
下面是我边玩边整理出来的一个简单示例。
如果有错,请指正,我会修改。
我觉得奇怪的是,这些值似乎与图表上的简单移动平均线不一致。
################### 在脚本中
int period = 21; // 21 条移动平均线
int sampleSize = 100;// 这是您要获取的数据条数
int handle = iCustom(Symbol(),0, "Examples\Custom Moving Average",
period、// 期间
0, // 偏移量
MODE_SMA、// 计算方法
PRICE_CLOSE // 按收盘价计算
);
void OnTick()
{
// 这是一个数组,移动平均值将被复制到其中。
// 这里的每个项都是一个移动平均值
// 数组中的第一个项(位置为 0 的项)是最近的
// 最后一个项是数组 ArraySize() - 1 中的最后一个项
double movingAverageValues[];
ArraySetAsSeries(movingAverageValues,true);
if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) <0){Print("CopyBufferMA1 error =",GetLastError());}
double currentMovingAverage = movingAverageValues[0];
double earliestMovingAverage = movingAverageValues[ArraySize(movingAverageValues) - 1];
################################# 在 EA 中(注意:OnInit 和 OnTick)
int OnInit(){
int period = 21; // 21 条移动平均线
int sampleSize = 100; //这是希望获取的数据条数
int handle = iCustom(Symbol(),0, "Examples\Custom Moving Average",
period, // Period
0, // 偏移量
MODE_SMA, // 计算方法
PRICE_CLOSE // 按收盘价计算
);
}
OnTick()
{
// 这是一个数组,移动平均值将被复制到其中。
// 这里的每个项都是一个移动平均值
// 数组中的第一个项(位置为 0 的项)是最近的
// 最后一个项是数组 ArraySize() - 1 中的最后一个项
double movingAverageValues[];
ArraySetAsSeries(movingAverageValues,true);
if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) <0){Print("CopyBufferMA1 error =",GetLastError());}
double currentMovingAverage = movingAverageValues[0];
double earliestMovingAverage = movingAverageValues[ArraySize(movingAverageValues) - 1];
}
好文章