HELP !!!! 将一个指标从MT4转换到MT5。 - 页 5 1234567891011 新评论 Andrey 2017.02.01 09:18 #41 你好,我想把一个指标 从mql4转换 到mql5。基本上我只需要在MFI中出现红条时有声音通知。我现在如何将这个声音代码附加到新的mfi上?我附上一个旧工作版本的例子。 附加的文件: MFI_6Modeds.mq4 6 kb Vitaly Muzichenko 2017.02.24 02:14 #42 告诉我正确的方法,这是一个平成的计算方法这是从标准中剪下来的for(i=pos/*pos=1*/; i<rates_total ;i++) { haOpen=(ExtOpenBuffer0[i-1]+ExtCloseBuffer0[i-1])/2; // <<< haClose=(Open[i]+High[i]+Low[i]+Close[i])/4; haHigh=MathMax(High[i],MathMax(haOpen,haClose)); haLow=MathMin(Low[i],MathMin(haOpen,haClose));问题来了:如果"开放 " 应该由前一栏来搜索,为什么由代码中的下一栏来搜索?这样做可能是正确的,还是我误解了什么。haOpen=(ExtOpenBuffer0[i+1]+ExtCloseBuffer0[i+1])/2; 谢谢你! Alexey Viktorov 2017.02.24 06:15 #43 Vitaly Muzichenko:告诉我正确的方法,这是一个平成的计算方法这是从标准中剪下来的for(i=pos/*pos=1*/; i<rates_total ;i++) { haOpen=(ExtOpenBuffer0[i-1]+ExtCloseBuffer0[i-1])/2; // <<< haClose=(Open[i]+High[i]+Low[i]+Close[i])/4; haHigh=MathMax(High[i],MathMax(haOpen,haClose)); haLow=MathMin(Low[i],MathMin(haOpen,haClose));问题来了:如果"开放 " 应该由前一栏来搜索,为什么由代码中的下一栏来搜索?这一定是正确的,还是我误解了什么?haOpen=(ExtOpenBuffer0[i+1]+ExtCloseBuffer0[i+1])/2; 谢谢你! 在mql5中,条形索引的方向 是默认进行的。因此,[i-1]将只是右边的第一个小节。 Vladimir Karputov 2017.02.24 06:30 #44 Vitaly Muzichenko:告诉我正确的方法,这是一个平成的计算方法这是从标准中剪下来的for(i=pos/*pos=1*/; i<rates_total ;i++) { haOpen=(ExtOpenBuffer0[i-1]+ExtCloseBuffer0[i-1])/2; // <<< haClose=(Open[i]+High[i]+Low[i]+Close[i])/4; haHigh=MathMax(High[i],MathMax(haOpen,haClose)); haLow=MathMin(Low[i],MathMin(haOpen,haClose));问题来了:如果"开放 " 应该由前一栏来搜索,为什么由代码中的下一栏来搜索?可能是正确的方法,还是我误解了什么。haOpen=(ExtOpenBuffer0[i+1]+ExtCloseBuffer0[i+1])/2; 谢谢你!要准确地看到哪个指数在图表上有最右边和最左边的柱子,请使用这个简单的方法。在任何指标中,在MetaEditor中,将断点放在OnCakculate()内的第一个操作上(步骤1)。开始对历史数据进行调试。一旦你在你的断点上开始调试,调试就会暂停。然后在观察中添加两个表达式:"time[rate_total-1]"和 "time[0]"(步骤2和3)。现在我们可以很容易地看到,在这种情况下(time[]数组有默认的索引方向,ArrayAsSeries没有被应用),元素time[rate_total-1]将是图表中最右边的柱子(步骤4)。我希望这个简单明了的方法能帮助你快速检查指标中的指数化方向。 Vitaly Muzichenko 2017.02.24 07:42 #45 Alexey Viktorov: 在mql5中,条形索引的方向是默认进行的。因此,[i-1]将是右边的第一个小节。我大致了解,所以我没有忘记使用ArraySetAsSeries。问题是,在mql4和mql5代码中都应用了相同的 "i-1 "计算,如果公式中说的是前一栏而不是未来一栏,为什么要做减法?弗拉基米尔-卡尔普托夫。要准确地看到哪个指数在图表上有最右边和最左边的柱子,可以使用这个简单的技巧。在任何指标中,在MetaEditor中,将断点放在OnCakculate()内的第一个操作上(步骤1)。开始对历史数据进行调试。一旦你在你的断点上开始调试,调试就会暂停。然后在观察中添加两个表达式:"time[rate_total-1]"和 "time[0]"(步骤2和3)。现在我们可以很容易地看到,在这种情况下(time[]数组有默认的索引方向,ArrayAsSeries没有被应用),元素time[rate_total-1]将是图表中最右边的柱子(步骤4)。我希望这个简单明了的方法能帮助快速检查指标中的指数化方向。谢谢你,我不知道这一点。对计算的正确性有什么猜测吗? xak512 2017.03.04 19:06 #46 你好。我需要为CCI ARROWS指标制作一个警报。我需要它在箭头出现后立即发出信号。MT5 附加的文件: volatility-75-index-m5-binary-limited.png 32 kb xo6aj_ZIP_-_WinRAR.zip 12 kb Mihail Marchukajtes 2017.03.07 13:39 #47 大家好!!!。我开始在MT5中修改该指标,但我无法理解iTime功能,我无法让它工作,谁能将该指标复制到工作状态?????。该指标读取文件,该文件位于MQL5\Files\evolution-dvoid\文件夹中。下载后,将其重命名为.csv提前感谢。 附加的文件: eVOLution-dvoid.1.3_j1g.mq5 31 kb dvoid-BP.txt 4 kb Olexiy Polyakov 2017.03.27 17:53 #48 大家好,我不是程序员,但我的一个朋友说,在指标比尔-威廉姆斯的市场促进指数(BW MFI)的代码中,没有严格按照经典的公式进行 计算。 bw mfi = (high - low) / volume 此外,还使用了一些额外的数据校正。这实际上是一个错误,因此,指标 显示不正确的数据!请告知如何修复指标中的这个错误(删除额外的数据校正),并收到 严格按照公式工作的指标。bw mfi = (high - low) / volume ?????//+------------------------------------------------------------------+//|MarketFacilitationIndex.mq5|//| Copyright 2009, MetaQuotes Software Corp.//| http://www.mql5.com |//+------------------------------------------------------------------+#property copyright "2009, MetaQuotes Software Corp.#属性链接 "http://www.mql5.com"//----指标设置#属性 indicator_separate_window#property indicator_buffers 2#property indicator_plots 1#property indicator_type1 DRAW_COLOR_HISTOGRAM#property indicator_color1 Lime,SaddleBrown,Blue,Pink#property indicator_width1 2//----输入参数input ENUM_APPLIED_VOLUME InpVolumeType=VOLUME_TICK; //volumes//---- 缓冲区双倍ExtMFIBuffer[]。双重ExtColorBuffer[]。//+------------------------------------------------------------------+//|自定义指标初始化功能//+------------------------------------------------------------------+空白的OnInit(){//---- 指标SetIndexBuffer(0,ExtMFIBuffer,INDICATOR_DATA)。SetIndexBuffer(1,ExtColorBuffer,INDICATOR_COLOR_INDEX)。//----数据窗口的名称IndicatorSetString(INDICATOR_SHORTNAME, "BWMFI")。//---设置精度IndicatorSetInteger(INDICATOR_DIGITS,_Digits)。//----}//+------------------------------------------------------------------+//||//+------------------------------------------------------------------+空白 计算MFI(const int start,const int rates_total.)const double &high[],const double &low[],const long &volume[]){int i=start;bool mfi_up=true,vol_up=true。//---计算mfi_up和vol_up的第一个值如果(i>0){int n=i。while(n>0){if(ExtMFIBuffer[n]>ExtMFIBuffer[n-1]) { mfi_up=true; break; }if(ExtMFIBuffer[n]<ExtMFIBuffer[n-1]) { mfi_up=false; break; }//---- 如果MFI值相等,继续n--;}n=i。while(n>0){如果(volume[n]>volume[n-1]) { vol_up=true; break; }if(volume[n]<volume[n-1]) { vol_up=false; break; }//------如果实际体积相等,继续n--;}}//---while(i<rates_total && !IsStopped()){如果(volume[i]==0){if(i>0) ExtMFIBuffer[i]=ExtMFIBuffer[i-1];否则ExtMFIBuffer[i]=0。}否则ExtMFIBuffer[i]=(high[i]-low[i])/_Point/volume[i]。//---计算变化如果(i>0){如果(ExtMFIBuffer[i]>ExtMFIBuffer[i-1]) mfi_up=true。如果(ExtMFIBuffer[i]<ExtMFIBuffer[i-1]) mfi_up=false。如果(volume[i]>volume[i-1])vol_up=true。如果(volume[i]<volume[i-1])vol_up=false。}//---设置颜色if(mfi_up && vol_up) ExtColorBuffer[i]=0.0。if(!mfi_up && !vol_up) ExtColorBuffer[i]=1.0。if(mfi_up && !vol_up) ExtColorBuffer[i]=2.0。if(!mfi_up && vol_up) ExtColorBuffer[i]=3.0;i++;}}//+------------------------------------------------------------------+//|自定义指标迭代函数|//+------------------------------------------------------------------+int OnCalculate(const int rates_total,const int prev_calculated,const datetime &time[]。const double &open[],const double &high[],const double &low[],const double &close[],const long &tick_volume[],const long &volume[]。const int &spread[]){//---int start=0。//---如果(start<prev_calculated)start=prev_calculated-1。//----用tick或实数计算如果(InpVolumeType==VOLUME_TICK)计算MFI(start,rate_total,high,low,tick_volume)。否则计算MFI(start,rate_total,high,low,volume)。//------将最后的MFI值正常化如果(rate_total>1){datetime ctm=TimeTradeServer(),lasttm=time[rate_total-1],nexttm=lasttm+datetime(PeriodSeconds())。如果(ctm<nexttm && ctm>=lasttm && nexttm! =lasttm){double correction_koef=double(1+ctm-lasttm)/double(nexttm-lasttm)。ExtMFIBuffer[rate_total-1]*=correction_koef。}}//---return(rate_total)。}//+------------------------------------------------------------------+ HELP !!!! convert an 编码帮助 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 Olexiy Polyakov 2017.04.01 17:33 #49 请告诉我这是什么样的代码,如何把它变成一个MT5指标?//这是一个基于成交量的指标。请务必使用适当的音量输入。// 蹲栏是牛市和熊市的战斗,有大量的买入和卖出,但价格变动不大。//深蹲杆在趋势结束时,85%的时间会是前三条或后三条之一。//虽然所有的趋势都以下蹲结束,但所有的下蹲都不是趋势的结束。study("Williams Squat Bars", shorttitle="Squat Bars", overlay=true)r_hl=roc((high-low)/volume,1)r_v=roc(volume,1)squat_f=(r_hl < 0) and (r_v > 0)barcolor(squat_f ? blue : na) Alekseu Fedotov 2017.04.02 12:24 #50 Olexiy Polyakov:请告诉我这是什么样的代码,如何把它变成一个MT5指标?//这是一个基于成交量的指标。请务必使用适当的音量输入。// 蹲栏是牛市和熊市的战斗,有大量的买入和卖出,但价格变动不大。//深蹲杆在趋势结束时,85%的时间会是前三条或后三条之一。//虽然所有的趋势都以下蹲结束,但所有的下蹲都不是趋势的结束。study("Williams Squat Bars", shorttitle="Squat Bars", overlay=true)r_hl=roc((high-low)/volume,1)r_v=roc(volume,1)squat_f=(r_hl < 0) and (r_v > 0)barcolor(squat_f ? blue : na) BW MFI深蹲杆,3个缓冲区(如果没记错的话)。 1234567891011 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你好,我想把一个指标 从mql4转换 到mql5。基本上我只需要在MFI中出现红条时有声音通知。我现在如何将这个声音代码附加到新的mfi上?
我附上一个旧工作版本的例子。
告诉我正确的方法,这是一个平成的计算方法
这是从标准中剪下来的
{
haOpen=(ExtOpenBuffer0[i-1]+ExtCloseBuffer0[i-1])/2; // <<<
haClose=(Open[i]+High[i]+Low[i]+Close[i])/4;
haHigh=MathMax(High[i],MathMax(haOpen,haClose));
haLow=MathMin(Low[i],MathMin(haOpen,haClose));
问题来了:如果"开放 " 应该由前一栏来搜索,为什么由代码中的下一栏来搜索?
这样做可能是正确的,还是我误解了什么。
告诉我正确的方法,这是一个平成的计算方法
这是从标准中剪下来的
{
haOpen=(ExtOpenBuffer0[i-1]+ExtCloseBuffer0[i-1])/2; // <<<
haClose=(Open[i]+High[i]+Low[i]+Close[i])/4;
haHigh=MathMax(High[i],MathMax(haOpen,haClose));
haLow=MathMin(Low[i],MathMin(haOpen,haClose));
问题来了:如果"开放 " 应该由前一栏来搜索,为什么由代码中的下一栏来搜索?
这一定是正确的,还是我误解了什么?
告诉我正确的方法,这是一个平成的计算方法
这是从标准中剪下来的
{
haOpen=(ExtOpenBuffer0[i-1]+ExtCloseBuffer0[i-1])/2; // <<<
haClose=(Open[i]+High[i]+Low[i]+Close[i])/4;
haHigh=MathMax(High[i],MathMax(haOpen,haClose));
haLow=MathMin(Low[i],MathMin(haOpen,haClose));
问题来了:如果"开放 " 应该由前一栏来搜索,为什么由代码中的下一栏来搜索?
可能是正确的方法,还是我误解了什么。
要准确地看到哪个指数在图表上有最右边和最左边的柱子,请使用这个简单的方法。
在任何指标中,在MetaEditor中,将断点放在OnCakculate()内的第一个操作上(步骤1)。
开始对历史数据进行调试。一旦你在你的断点上开始调试,调试就会暂停。然后在观察中添加两个表达式:"time[rate_total-1]"和 "time[0]"(步骤2和3)。现在我们可以很容易地看到,在这种情况下(time[]数组有默认的索引方向,ArrayAsSeries没有被应用),元素time[rate_total-1]将是图表中最右边的柱子(步骤4)。
我希望这个简单明了的方法能帮助你快速检查指标中的指数化方向。
在mql5中,条形索引的方向是默认进行的。因此,[i-1]将是右边的第一个小节。
我大致了解,所以我没有忘记使用ArraySetAsSeries。
问题是,在mql4和mql5代码中都应用了相同的 "i-1 "计算,如果公式中说的是前一栏而不是未来一栏,为什么要做减法?
要准确地看到哪个指数在图表上有最右边和最左边的柱子,可以使用这个简单的技巧。
在任何指标中,在MetaEditor中,将断点放在OnCakculate()内的第一个操作上(步骤1)。
开始对历史数据进行调试。一旦你在你的断点上开始调试,调试就会暂停。然后在观察中添加两个表达式:"time[rate_total-1]"和 "time[0]"(步骤2和3)。现在我们可以很容易地看到,在这种情况下(time[]数组有默认的索引方向,ArrayAsSeries没有被应用),元素time[rate_total-1]将是图表中最右边的柱子(步骤4)。
我希望这个简单明了的方法能帮助快速检查指标中的指数化方向。
谢谢你,我不知道这一点。
对计算的正确性有什么猜测吗?
我需要为CCI ARROWS指标制作一个警报。
我需要它在箭头出现后立即发出信号。
MT5
大家好!!!。我开始在MT5中修改该指标,但我无法理解iTime功能,我无法让它工作,谁能将该指标复制到工作状态?????。
该指标读取文件,该文件位于MQL5\Files\evolution-dvoid\文件夹中。
下载后,将其重命名为.csv
提前感谢。
大家好,我不是程序员,但我的一个朋友说,在指标比尔-威廉姆斯的市场促进指数(BW MFI)的代码中,没有严格按照经典的公式进行 计算。 bw mfi = (high - low) / volume 此外,还使用了一些额外的数据校正。这实际上是一个错误,因此,指标 显示不正确的数据!
请告知如何修复指标中的这个错误(删除额外的数据校正),并收到
严格按照公式工作的指标。bw mfi = (high - low) / volume ?????
//+------------------------------------------------------------------+
//|MarketFacilitationIndex.mq5|
//| Copyright 2009, MetaQuotes Software Corp.
//| http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp.
#属性链接 "http://www.mql5.com"
//----指标设置
#属性 indicator_separate_window
#property indicator_buffers 2
#property indicator_plots 1
#property indicator_type1 DRAW_COLOR_HISTOGRAM
#property indicator_color1 Lime,SaddleBrown,Blue,Pink
#property indicator_width1 2
//----输入参数
input ENUM_APPLIED_VOLUME InpVolumeType=VOLUME_TICK; //volumes
//---- 缓冲区
双倍ExtMFIBuffer[]。
双重ExtColorBuffer[]。
//+------------------------------------------------------------------+
//|自定义指标初始化功能
//+------------------------------------------------------------------+
空白的OnInit()
{
//---- 指标
SetIndexBuffer(0,ExtMFIBuffer,INDICATOR_DATA)。
SetIndexBuffer(1,ExtColorBuffer,INDICATOR_COLOR_INDEX)。
//----数据窗口的名称
IndicatorSetString(INDICATOR_SHORTNAME, "BWMFI")。
//---设置精度
IndicatorSetInteger(INDICATOR_DIGITS,_Digits)。
//----
}
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
空白 计算MFI(const int start,const int rates_total.)
const double &high[],
const double &low[],
const long &volume[])
{
int i=start;
bool mfi_up=true,vol_up=true。
//---计算mfi_up和vol_up的第一个值
如果(i>0)
{
int n=i。
while(n>0)
{
if(ExtMFIBuffer[n]>ExtMFIBuffer[n-1]) { mfi_up=true; break; }
if(ExtMFIBuffer[n]<ExtMFIBuffer[n-1]) { mfi_up=false; break; }
//---- 如果MFI值相等,继续
n--;
}
n=i。
while(n>0)
{
如果(volume[n]>volume[n-1]) { vol_up=true; break; }
if(volume[n]<volume[n-1]) { vol_up=false; break; }
//------如果实际体积相等,继续
n--;
}
}
//---
while(i<rates_total && !IsStopped())
{
如果(volume[i]==0)
{
if(i>0) ExtMFIBuffer[i]=ExtMFIBuffer[i-1];
否则ExtMFIBuffer[i]=0。
}
否则ExtMFIBuffer[i]=(high[i]-low[i])/_Point/volume[i]。
//---计算变化
如果(i>0)
{
如果(ExtMFIBuffer[i]>ExtMFIBuffer[i-1]) mfi_up=true。
如果(ExtMFIBuffer[i]<ExtMFIBuffer[i-1]) mfi_up=false。
如果(volume[i]>volume[i-1])vol_up=true。
如果(volume[i]<volume[i-1])vol_up=false。
}
//---设置颜色
if(mfi_up && vol_up) ExtColorBuffer[i]=0.0。
if(!mfi_up && !vol_up) ExtColorBuffer[i]=1.0。
if(mfi_up && !vol_up) ExtColorBuffer[i]=2.0。
if(!mfi_up && vol_up) ExtColorBuffer[i]=3.0;
i++;
}
}
//+------------------------------------------------------------------+
//|自定义指标迭代函数|
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[]。
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[]。
const int &spread[])
{
//---
int start=0。
//---
如果(start<prev_calculated)start=prev_calculated-1。
//----用tick或实数计算
如果(InpVolumeType==VOLUME_TICK)
计算MFI(start,rate_total,high,low,tick_volume)。
否则
计算MFI(start,rate_total,high,low,volume)。
//------将最后的MFI值正常化
如果(rate_total>1)
{
datetime ctm=TimeTradeServer(),lasttm=time[rate_total-1],nexttm=lasttm+datetime(PeriodSeconds())。
如果(ctm<nexttm && ctm>=lasttm && nexttm! =lasttm)
{
double correction_koef=double(1+ctm-lasttm)/double(nexttm-lasttm)。
ExtMFIBuffer[rate_total-1]*=correction_koef。
}
}
//---
return(rate_total)。
}
//+------------------------------------------------------------------+
请告诉我这是什么样的代码,如何把它变成一个MT5指标?
//这是一个基于成交量的指标。请务必使用适当的音量输入。
请告诉我这是什么样的代码,如何把它变成一个MT5指标?
//这是一个基于成交量的指标。请务必使用适当的音量输入。
BW MFI深蹲杆,3个缓冲区(如果没记错的话)。