如何编码? - 页 282 1...275276277278279280281282283284285286287288289...347 新评论 gpociejewski 2011.12.02 17:11 #2811 gilben: 我正在寻找一个解决方案,将指标的算法应用于价格阵列。在MQL4中,一些指标有这个功能,如:iCCIOnArray, iBandsOnArray... 但是,像ADX这样的指标却没有这样的功能。 有谁知道我如何在预先定义的数组(不是来自报价服务器)上应用指标计算? [lang=pl]如果你知道给定的指标是如何计算的,你可以做任何事情。) 请更准确地解释你需要什么。 谢谢。 Grzesiek[/lang] Mladen Rakic 2011.12.02 17:33 #2812 ... ADX使用所谓的真实范围(Max(High,PreviousClose)-Min(Low,PreviousClose)),这就是ADX的计算基础。 因为需要High、Low和Close值,所以它不能应用于一个数组,一般来说,如果你看到有一个价格要求,那么该指标应该适用于一个数组。如果没有价格参数,那么几乎可以肯定它不能应用于一个数组(假设该指标首先是在价格上操作的)。 gilben 2011.12.04 13:33 #2813 g.pociejewski:[lang=pl]如果你知道给定的指标是如何计算的,你就可以做任何事情了:) 请更准确地解释你需要什么? 谢谢。 Grzesiek[/lang] 谢谢你,Grzesiek。 我一直在寻找好的解决方案。最终,最好的解决方案是将indi代码嵌入专家代码中。 总之,除非有人告诉我其他的方法,否则我将这样应用它。 crn 2011.12.10 01:46 #2814 你有源文件吗?*.ex4文件已被编译,所以你无法获得源代码。 谢谢 cadolino 2011.12.11 13:16 #2815 要求 mladen: star821试试这个 ________________________ 一些解释。我没有使用你发布的那些指标,而是做了这些(你帖子中所附的指标有我的名字,但那个版本不是我做的,但这不是我没有使用该指标的唯一原因)。... 问候 姆拉登 姆拉登 是否可以将stc的EA改编为HMA颜色的nrp-indi和High-low趋势indi? 我写了一个伪代码(*完全不会编码... *)。 ************************************************************ 外部因素。 Lot# 期间为HMA ???. ..................... 重复。 获得 "之 "字形点的颜色(条形收盘)。 获得HMA趋势的颜色(条形收盘)。 ---------------------------------------------------------------- // 开盘卖出 如果最后一个Zigzag-dot = 蓝色 && HMA趋势 = 红色 -> 开启卖出票(每个HMA趋势颜色只开一次) 如果不能打开卖出->重试3次 如果没有成功提醒和电子邮件:无法打开符号、TF、时间的卖出。 否则 // 打开买入 如果最后一个Zigzag-dot=红色&&HMA趋势=蓝色->打开买入票(每个HMA趋势颜色只有一次)。 如果不能打开买入->重试3次 如果没有成功提醒和电子邮件:无法打开符号、TF、时间的购买。 ------------------------------------------------------------------- 如果HMA趋势(红色)变为蓝色-->关闭卖出,等待10秒。 如果HMA趋势(蓝色)变为红色->关闭买入,等待10秒。 ------------------------------------------------------------------- 在星期五上午12:00(GMT)关闭所有交易... **************************************************************** 我知道会有一些损失,但这并不妨碍我...... 我不想要任何SL... 问候 卡多 hma_color_nrp.ex4high_-_low_trend.mq4 附加的文件: hma_color_nrp.ex4 6 kb high_-_low_trend.mq4 5 kb k3rn3l 2011.12.12 16:23 #2816 ATR + MA & Bandwidth + MA [lang=it]嗨,我需要一个自定义指标,在一个单独的窗口中,写上ATR和移动平均线的计算,带宽也一样。我在mql4中编写了代码,我使用了IMAONARRAY来计算MA,但是这个指标不工作,谁能帮助我? 这是Teo的一个代码。 谢谢 #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 Blue #property indicator_color2 Red //---- input parameters extern int AtrPeriod=14; //---- buffers double AtrBuffer[]; double TempBuffer[]; double MaBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string short_name; //---- 1 additional buffer used for counting. IndicatorBuffers(2); //---- indicator line SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,AtrBuffer); SetIndexBuffer(1,TempBuffer); SetIndexStyle(2,DRAW_LINE); SetIndexBuffer(2,MaBuffer); //---- name for DataWindow and indicator subwindow label short_name="ATR("+AtrPeriod+")"; IndicatorShortName(short_name); SetIndexLabel(0,short_name); //---- SetIndexDrawBegin(0,AtrPeriod); //---- return(0); } //+------------------------------------------------------------------+ //| Average True Range | //+------------------------------------------------------------------+ int start() { int i,counted_bars=IndicatorCounted(); //---- if(Bars<=AtrPeriod) return(0); //---- initial zero if(counted_bars<1) for(i=1;i<=AtrPeriod;i++) AtrBuffer=0.0; //---- i=Bars-counted_bars-1; while(i>=0) { double high=High; double low =Low; if(i==Bars-1) TempBuffer=high-low; else { double prevclose=Close; TempBuffer=MathMax(high,prevclose)-MathMin(low,prevclose); } i--; } //---- if(counted_bars>0) counted_bars--; int limit=Bars-counted_bars; for(i=0; i<limit; i++) AtrBuffer=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i); //---- double MyArray[]; if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; ArrayResize( MyArray, limit); ArraySetAsSeries(MyArray,true); for(i=0; i<limit; i++) { MyArray = AtrBuffer; } for(i=0; i<limit; i++) { MaBuffer = iMAOnArray(MyArray,limit,10,0,MODE_SMA,i); } //---- return(0); } //+------------------------------------------------------------------+ [/lang] 求教,高手进来看一下 How to code? Please fix this indicator Mladen Rakic 2011.12.12 18:18 #2817 ... 现在就试试吧 k3rn3l:[lang=it]你好,我需要一个自定义指标,在一个单独的窗口中,写上ATR和移动平均线的计算,带宽也是如此。我已经在mql4中编写了代码,我使用了IMAONARRAY来计算MA,但是这个指标不工作,谁能帮助我?这是我的一个代码。 谢谢 #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 Blue #property indicator_color2 Red //---- input parameters extern int AtrPeriod=14; //---- buffers double AtrBuffer[]; double TempBuffer[]; double MaBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string short_name; //---- 1 additional buffer used for counting. IndicatorBuffers(2); //---- indicator line SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,AtrBuffer); SetIndexBuffer(1,TempBuffer); SetIndexStyle(2,DRAW_LINE); SetIndexBuffer(2,MaBuffer); //---- name for DataWindow and indicator subwindow label short_name="ATR("+AtrPeriod+")"; IndicatorShortName(short_name); SetIndexLabel(0,short_name); //---- SetIndexDrawBegin(0,AtrPeriod); //---- return(0); } //+------------------------------------------------------------------+ //| Average True Range | //+------------------------------------------------------------------+ int start() { int i,counted_bars=IndicatorCounted(); //---- if(Bars<=AtrPeriod) return(0); //---- initial zero if(counted_bars<1) for(i=1;i<=AtrPeriod;i++) AtrBuffer=0.0; //---- i=Bars-counted_bars-1; while(i>=0) { double high=High; double low =Low; if(i==Bars-1) TempBuffer=high-low; else { double prevclose=Close; TempBuffer=MathMax(high,prevclose)-MathMin(low,prevclose); } i--; } //---- if(counted_bars>0) counted_bars--; int limit=Bars-counted_bars; for(i=0; i<limit; i++) AtrBuffer=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i); //---- double MyArray[]; if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; ArrayResize( MyArray, limit); ArraySetAsSeries(MyArray,true); for(i=0; i<limit; i++) { MyArray = AtrBuffer; } for(i=0; i<limit; i++) { MaBuffer = iMAOnArray(MyArray,limit,10,0,MODE_SMA,i); } //---- return(0); } //+------------------------------------------------------------------+ [/lang] 附加的文件: atr__ma.mq4 2 kb cedid 2011.12.13 11:10 #2818 [lang=tr]嗨,有人能帮助我在metatrader代码中建立这个公式吗? (这是在metastock公式中:) Q1:=Input("PERIOD",1,1000,3); Q2:=Input("PERIOD",0.001,100,1); Q3:=Q2/100; Q4:=Mov( Typical(),Q1,E) ; Q5:=If((Q4*(1-Q3))>PREV,Q4*(1-Q3),If((Q4*(1+Q3))<PREV,Q4*(1+Q3),PREV)); Q5 [/lang] Mladen Rakic 2011.12.13 12:17 #2819 ... 有意思的是 你需要为不同的时间框架调整的唯一事情是百分比。对于4小时图来说,1%似乎是个不错的选择,但这里有一个15分钟图的例子,用0.5%而不是默认的1%。 PS:我不知道它的原名是什么,所以按原名命名。 问候 mladen cedid:[lang=tr]嗨,有人能帮助我在metatrader代码中建立这个公式吗?(这是在metastock公式中:) Q1:=Input("PERIOD",1,1000,3); Q2:=Input("PERIOD",0.001,100,1); Q3:=Q2/100; Q4:=Mov( Typical(),Q1,E) ; Q5:=If((Q4*(1-Q3))>PREV,Q4*(1-Q3),If((Q4*(1+Q3))<PREV,Q4*(1+Q3),PREV)); Q5 [/lang] 附加的文件: levels.gif 22 kb percent_sr.mq4 2 kb cedid 2011.12.13 14:19 #2820 mladen: 有趣的是 你需要为不同的时间框架调整的唯一事情是百分比。对于4小时图来说,1%似乎是个不错的选择,但这里有一个15分钟图的例子,用0.5%而不是默认的1%。 PS:我不知道它的原名是什么,所以按原名命名。 问候 mladen [lang=tr]谢谢你Mladen,我将尝试一下,我想它会起作用的 [/lang] 1...275276277278279280281282283284285286287288289...347 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我正在寻找一个解决方案,将指标的算法应用于价格阵列。
在MQL4中,一些指标有这个功能,如:iCCIOnArray, iBandsOnArray...
但是,像ADX这样的指标却没有这样的功能。
有谁知道我如何在预先定义的数组(不是来自报价服务器)上应用指标计算?[lang=pl]如果你知道给定的指标是如何计算的,你可以做任何事情。)
请更准确地解释你需要什么。
谢谢。
Grzesiek[/lang]
...
ADX使用所谓的真实范围(Max(High,PreviousClose)-Min(Low,PreviousClose)),这就是ADX的计算基础。
因为需要High、Low和Close值,所以它不能应用于一个数组,一般来说,如果你看到有一个价格要求,那么该指标应该适用于一个数组。如果没有价格参数,那么几乎可以肯定它不能应用于一个数组(假设该指标首先是在价格上操作的)。
[lang=pl]如果你知道给定的指标是如何计算的,你就可以做任何事情了:)
请更准确地解释你需要什么?
谢谢。
Grzesiek[/lang]谢谢你,Grzesiek。
我一直在寻找好的解决方案。最终,最好的解决方案是将indi代码嵌入专家代码中。
总之,除非有人告诉我其他的方法,否则我将这样应用它。
你有源文件吗?*.ex4文件已被编译,所以你无法获得源代码。
谢谢
要求
star821
试试这个
________________________
一些解释。我没有使用你发布的那些指标,而是做了这些(你帖子中所附的指标有我的名字,但那个版本不是我做的,但这不是我没有使用该指标的唯一原因)。...
问候
姆拉登姆拉登
是否可以将stc的EA改编为HMA颜色的nrp-indi和High-low趋势indi?
我写了一个伪代码(*完全不会编码... *)。
************************************************************
外部因素。
Lot#
期间为HMA
???.
.....................
重复。
获得 "之 "字形点的颜色(条形收盘)。
获得HMA趋势的颜色(条形收盘)。
----------------------------------------------------------------
// 开盘卖出
如果最后一个Zigzag-dot = 蓝色 && HMA趋势 = 红色 -> 开启卖出票(每个HMA趋势颜色只开一次)
如果不能打开卖出->重试3次
如果没有成功提醒和电子邮件:无法打开符号、TF、时间的卖出。
否则
// 打开买入
如果最后一个Zigzag-dot=红色&&HMA趋势=蓝色->打开买入票(每个HMA趋势颜色只有一次)。
如果不能打开买入->重试3次
如果没有成功提醒和电子邮件:无法打开符号、TF、时间的购买。
-------------------------------------------------------------------
如果HMA趋势(红色)变为蓝色-->关闭卖出,等待10秒。
如果HMA趋势(蓝色)变为红色->关闭买入,等待10秒。
-------------------------------------------------------------------
在星期五上午12:00(GMT)关闭所有交易...
****************************************************************
我知道会有一些损失,但这并不妨碍我......
我不想要任何SL...
问候
卡多
hma_color_nrp.ex4high_-_low_trend.mq4
ATR + MA & Bandwidth + MA
[lang=it]嗨,我需要一个自定义指标,在一个单独的窗口中,写上ATR和移动平均线的计算,带宽也一样。我在mql4中编写了代码,我使用了IMAONARRAY来计算MA,但是这个指标不工作,谁能帮助我?
这是Teo的一个代码。
谢谢
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
//---- input parameters
extern int AtrPeriod=14;
//---- buffers
double AtrBuffer[];
double TempBuffer[];
double MaBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- 1 additional buffer used for counting.
IndicatorBuffers(2);
//---- indicator line
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,AtrBuffer);
SetIndexBuffer(1,TempBuffer);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,MaBuffer);
//---- name for DataWindow and indicator subwindow label
short_name="ATR("+AtrPeriod+")";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
//----
SetIndexDrawBegin(0,AtrPeriod);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Average True Range |
//+------------------------------------------------------------------+
int start()
{
int i,counted_bars=IndicatorCounted();
//----
if(Bars<=AtrPeriod) return(0);
//---- initial zero
if(counted_bars<1)
for(i=1;i<=AtrPeriod;i++) AtrBuffer=0.0;
//----
i=Bars-counted_bars-1;
while(i>=0)
{
double high=High;
double low =Low;
if(i==Bars-1) TempBuffer=high-low;
else
{
double prevclose=Close;
TempBuffer=MathMax(high,prevclose)-MathMin(low,prevclose);
}
i--;
}
//----
if(counted_bars>0) counted_bars--;
int limit=Bars-counted_bars;
for(i=0; i<limit; i++)
AtrBuffer=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);
//----
double MyArray[];
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
ArrayResize( MyArray, limit);
ArraySetAsSeries(MyArray,true);
for(i=0; i<limit; i++)
{
MyArray = AtrBuffer;
}
for(i=0; i<limit; i++)
{
MaBuffer = iMAOnArray(MyArray,limit,10,0,MODE_SMA,i);
}
//----
return(0);
}
//+------------------------------------------------------------------+[/lang]
...
现在就试试吧
[lang=it]你好,我需要一个自定义指标,在一个单独的窗口中,写上ATR和移动平均线的计算,带宽也是如此。我已经在mql4中编写了代码,我使用了IMAONARRAY来计算MA,但是这个指标不工作,谁能帮助我?
这是我的一个代码。
谢谢
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
//---- input parameters
extern int AtrPeriod=14;
//---- buffers
double AtrBuffer[];
double TempBuffer[];
double MaBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- 1 additional buffer used for counting.
IndicatorBuffers(2);
//---- indicator line
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,AtrBuffer);
SetIndexBuffer(1,TempBuffer);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,MaBuffer);
//---- name for DataWindow and indicator subwindow label
short_name="ATR("+AtrPeriod+")";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
//----
SetIndexDrawBegin(0,AtrPeriod);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Average True Range |
//+------------------------------------------------------------------+
int start()
{
int i,counted_bars=IndicatorCounted();
//----
if(Bars<=AtrPeriod) return(0);
//---- initial zero
if(counted_bars<1)
for(i=1;i<=AtrPeriod;i++) AtrBuffer=0.0;
//----
i=Bars-counted_bars-1;
while(i>=0)
{
double high=High;
double low =Low;
if(i==Bars-1) TempBuffer=high-low;
else
{
double prevclose=Close;
TempBuffer=MathMax(high,prevclose)-MathMin(low,prevclose);
}
i--;
}
//----
if(counted_bars>0) counted_bars--;
int limit=Bars-counted_bars;
for(i=0; i<limit; i++)
AtrBuffer=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);
//----
double MyArray[];
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
ArrayResize( MyArray, limit);
ArraySetAsSeries(MyArray,true);
for(i=0; i<limit; i++)
{
MyArray = AtrBuffer;
}
for(i=0; i<limit; i++)
{
MaBuffer = iMAOnArray(MyArray,limit,10,0,MODE_SMA,i);
}
//----
return(0);
}
//+------------------------------------------------------------------+[lang=tr]嗨,有人能帮助我在metatrader代码中建立这个公式吗?
(这是在metastock公式中:)
Q1:=Input("PERIOD",1,1000,3);
Q2:=Input("PERIOD",0.001,100,1);
Q3:=Q2/100;
Q4:=Mov( Typical(),Q1,E) ;
Q5:=If((Q4*(1-Q3))>PREV,Q4*(1-Q3),If((Q4*(1+Q3))<PREV,Q4*(1+Q3),PREV));
Q5
[/lang]
...
有意思的是
你需要为不同的时间框架调整的唯一事情是百分比。对于4小时图来说,1%似乎是个不错的选择,但这里有一个15分钟图的例子,用0.5%而不是默认的1%。
PS:我不知道它的原名是什么,所以按原名命名。
问候
mladen
[lang=tr]嗨,有人能帮助我在metatrader代码中建立这个公式吗?
(这是在metastock公式中:)
Q1:=Input("PERIOD",1,1000,3);
Q2:=Input("PERIOD",0.001,100,1);
Q3:=Q2/100;
Q4:=Mov( Typical(),Q1,E) ;
Q5:=If((Q4*(1-Q3))>PREV,Q4*(1-Q3),If((Q4*(1+Q3))<PREV,Q4*(1+Q3),PREV));
Q5
[/lang]有趣的是
你需要为不同的时间框架调整的唯一事情是百分比。对于4小时图来说,1%似乎是个不错的选择,但这里有一个15分钟图的例子,用0.5%而不是默认的1%。
PS:我不知道它的原名是什么,所以按原名命名。
问候
mladen[lang=tr]谢谢你Mladen,我将尝试一下,我想它会起作用的 [/lang]