如何编码? - 页 282

 
gilben:
我正在寻找一个解决方案,将指标的算法应用于价格阵列。

在MQL4中,一些指标有这个功能,如:iCCIOnArray, iBandsOnArray...

但是,像ADX这样的指标却没有这样的功能。

有谁知道我如何在预先定义的数组(不是来自报价服务器)上应用指标计算?

[lang=pl]如果你知道给定的指标是如何计算的,你可以做任何事情。)

请更准确地解释你需要什么。

谢谢。

Grzesiek[/lang]

 

...

ADX使用所谓的真实范围(Max(High,PreviousClose)-Min(Low,PreviousClose)),这就是ADX的计算基础。

因为需要High、Low和Close值,所以它不能应用于一个数组,一般来说,如果你看到有一个价格要求,那么该指标应该适用于一个数组。如果没有价格参数,那么几乎可以肯定它不能应用于一个数组(假设该指标首先是在价格上操作的)。

 
g.pociejewski:
[lang=pl]如果你知道给定的指标是如何计算的,你就可以做任何事情了:)

请更准确地解释你需要什么?

谢谢。

Grzesiek[/lang]

谢谢你,Grzesiek。

我一直在寻找好的解决方案。最终,最好的解决方案是将indi代码嵌入专家代码中。

总之,除非有人告诉我其他的方法,否则我将这样应用它。

 

你有源文件吗?*.ex4文件已被编译,所以你无法获得源代码。

谢谢

 

要求

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

附加的文件:
 

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]

 

...

现在就试试吧

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
 

[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

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
 
mladen:
有趣的是

你需要为不同的时间框架调整的唯一事情是百分比。对于4小时图来说,1%似乎是个不错的选择,但这里有一个15分钟图的例子,用0.5%而不是默认的1%。

PS:我不知道它的原名是什么,所以按原名命名。

问候

mladen

[lang=tr]谢谢你Mladen,我将尝试一下,我想它会起作用的 [/lang]

原因: