编码帮助 - 页 110

 

你好。

我需要两个指标,一个是wpr(Williams' Percent Range) 和它的ma(wpr with ma),另一个是cmo(chandemomentum osc.)

和它的ma(带ma的cmo)。

有人帮助吗?

谢谢

 
anonimm:
你好。

我需要两个指标,一个是wpr(Williams' Percent Range) 和它的ma(wpr with ma),另一个是cmo(chande momentum osc.)

和它的ma(带ma的cmo)。

有人帮助吗?

谢谢

冯先生

这里有一个WPR与平均数(ma)。

附加的文件:
wpr_ma.mq4  2 kb
 
mladen:
anonimm 这里是一个带有平均数(ma)的WPR

谢谢你Mladen。

我正在尝试使用cmo的ma,但我得到了错误(iCMO函数未定义)。你能帮助吗......? cmo是附件

//---- 指标设置

#属性 indicator_separate_window

#属性 indicator_buffers 2

#属性 indicator_color1 Silver

#属性 indicator_color2 红色

#perty indicator_width1 2

#属性 indicator_width2 2

//---- 指标参数

Extern int CMO_Period=21;

extern int MA_Period=14;

extern string m = "--移动平均线类型--"。

extern string m0 = " 0 = SMA";

extern string m1 = " 1 = EMA";

外部字符串m2 = " 2 = SMMA";

外置字符串m3 = " 3 = LWMA"。

extern int MA_Type=1;

//----指标缓冲区

double CMO_Buffer[];

double MA_Buffer[];

双重iCMO[]。

int MA_Mode;

string strMAType;

//+------------------------------------------------------------------+

//|自定义指标初始化函数

//+------------------------------------------------------------------+

int init()

{

//---- 绘图设置

SetIndexStyle(0,DRAW_LINE);

SetIndexStyle(1,DRAW_LINE);

SetIndexDrawBegin(1,CMO_Period);

IndicatorDigits(Digits+1)。

//---- 指标缓冲区的映射

SetIndexBuffer(0,CMO_Buffer)。

SetIndexBuffer(1,MA_Buffer);

//---- DataWindow和指标子窗口标签的名称

switch (MA_Type)

{

case 1: strMAType="EMA"; MA_Mode=MODE_EMA; break;

case 2: strMAType="SMMA"; MA_Mode=MODE_SMMA; break;

case 3: strMAType="LWMA"; MA_Mode=MODE_LWMA; break;

默认情况:strMAType="SMA"; MA_Mode=MODE_SMA; break。

}

IndicatorShortName( "CMO" + " (" + CMO_Period + " ) " + " : " + strMAType+ " (" +MA_Period + " ) ")。

SetIndexLabel(0, "CMO" + " (" +CMO_Period + ") ")。

SetIndexLabel(1,strMAType+ " (" + MA_Period + ") ")。

//---- 初始化完成

返回(0)。

}

//+------------------------------------------------------------------+

//| 移动平均线收敛/背离|

//+------------------------------------------------------------------+

开始()

{

int limit;

int counted_bars=IndicatorCounted()。

//----,最后一个被计数的柱子将被重新计数。

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars。

//---- CMO在第1个缓冲区中被计数。

for(int i=0; i<limit; i++)

CMO_Buffer=iCMO(NULL,0,CMO_Period,i)。

//---- MA线计入第2个缓冲区中

for(i=0; i<limit; i++)

MA_Buffer=iMAOnArray(CMO_Buffer,Bars,MA_Period,0,MA_Mode,i)。

//---- 完成

返回(0)。

}

//+------------------------------------------------------------------+

附加的文件:
cmo.mq4  6 kb
 

Mladen,你能帮我找到错误 吗?

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color2 Red

//----

double UpperBuf[];

double UpperBuf1[];

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

void init()

{

SetIndexStyle(0, DRAW_NONE, STYLE_SOLID, 1);

//----

SetIndexDrawBegin(0, N);

//----

SetIndexBuffer(0, UpperBuf);

SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1);

//----

SetIndexDrawBegin(1, N);

//----

SetIndexBuffer(1, UpperBuf1);

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

void deinit()

{

//----

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

void start()

{

int counted = IndicatorCounted();

//----

if(counted < 0)

return (-1);

//----

if(counted > 0)

counted--;

int limit = Bars - counted;

//----

for(int i = 0; i < limit; i++)

{

UpperBuf= ((High/Close)-34)*Volume;

UpperBuf1= iMAOnArray(UpperBuf,0,33,0,MODE_EMA,i);

}

}

//+------------------------------------------------------------------+

 
anonimm:
谢谢你,Mladen。

我正在尝试使用cmo的ma,但我得到了错误(iCMO函数未定义)。你能帮助吗?

//---- 指标设置

#属性 indicator_separate_window

#属性 indicator_buffers 2

#属性 indicator_color1 Silver

#属性 indicator_color2 红色

#perty indicator_width1 2

#属性 indicator_width2 2

//---- 指标参数

Extern int CMO_Period=21;

extern int MA_Period=14;

extern string m = "--移动平均线类型--"。

extern string m0 = " 0 = SMA";

extern string m1 = " 1 = EMA";

外部字符串m2 = " 2 = SMMA";

外置字符串m3 = " 3 = LWMA"。

extern int MA_Type=1;

//---- 指标缓冲区

double CMO_Buffer[];

double MA_Buffer[];

双重iCMO[]。

int MA_Mode;

string strMAType;

//+------------------------------------------------------------------+

//|自定义指标初始化函数

//+------------------------------------------------------------------+

int init()

{

//---- 绘图设置

SetIndexStyle(0,DRAW_LINE);

SetIndexStyle(1,DRAW_LINE);

SetIndexDrawBegin(1,CMO_Period);

IndicatorDigits(Digits+1)。

//---- 指标缓冲区的映射

SetIndexBuffer(0,CMO_Buffer)。

SetIndexBuffer(1,MA_Buffer);

//---- DataWindow和指标子窗口标签的名称

switch (MA_Type)

{

case 1: strMAType="EMA"; MA_Mode=MODE_EMA; break;

case 2: strMAType="SMMA"; MA_Mode=MODE_SMMA; break;

case 3: strMAType="LWMA"; MA_Mode=MODE_LWMA; break;

默认情况:strMAType="SMA"; MA_Mode=MODE_SMA; break。

}

IndicatorShortName( "CMO" + " (" + CMO_Period + " ) " + " : " + strMAType+ " (" +MA_Period + " ) ")。

SetIndexLabel(0, "CMO" + " (" +CMO_Period + ") ")。

SetIndexLabel(1,strMAType+ " (" + MA_Period + ") ")。

//---- 初始化完成

返回(0)。

}

//+------------------------------------------------------------------+

//| 移动平均线收敛/背离|

//+------------------------------------------------------------------+

开始()

{

int limit;

int counted_bars=IndicatorCounted()。

//---- 最后一个被计数的柱子将被重新计数

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars。

//---- CMO在第1个缓冲区中被计数。

for(int i=0; i<limit; i++)

CMO_Buffer=iCMO(NULL,0,CMO_Period,i)。

//---- MA线计入第2个缓冲区中

for(i=0; i<limit; i++)

MA_Buffer=iMAOnArray(CMO_Buffer,Bars,MA_Period,0,MA_Mode,i)。

//---- 完成

返回(0)。

}

//+------------------------------------------------------------------+

给你 PS:这是一个独立的版本,不需要cmo的。

附加的文件:
cmo_ma.mq4  2 kb
 
k3rn3l:
Mladen,你能帮我找到错误吗?

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color2 Red

//----

double UpperBuf[];

double UpperBuf1[];

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

void init()

{

SetIndexStyle(0, DRAW_NONE, STYLE_SOLID, 1);

//----

SetIndexDrawBegin(0, N);

//----

SetIndexBuffer(0, UpperBuf);

SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1);

//----

SetIndexDrawBegin(1, N);

//----

SetIndexBuffer(1, UpperBuf1);

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

void deinit()

{

//----

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

void start()

{

int counted = IndicatorCounted();

//----

if(counted < 0)

return (-1);

//----

if(counted > 0)

counted--;

int limit = Bars - counted;

//----

for(int i = 0; i < limit; i++)

{

UpperBuf= ((High/Close)-34)*Volume;

UpperBuf1= iMAOnArray(UpperBuf,0,33,0,MODE_EMA,i);

}

}

//+------------------------------------------------------------------+

k3rn3l

像这样试一试。

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 Red

double UpperBuf[];

double UpperBuf1[];

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

void init()

{

IndicatorBuffers(2);

SetIndexBuffer(0, UpperBuf1);

SetIndexBuffer(1, UpperBuf);

}

void deinit() {}

void start()

{

int counted = IndicatorCounted();

if(counted < 0) return (-1);

if(counted > 0) counted--;

int limit = Bars - counted;

for(int i = 0; i < limit; i++)

if (Close!=0)

UpperBuf= ((High/Close)-34)*Volume;

else UpperBuf= 0;

for( i = 0; i < limit; i++) UpperBuf1= iMAOnArray(UpperBuf,0,33,0,MODE_EMA,i);

}
 

亲爱的姆拉登。

再次感谢你的wpr ma和cmo ma指数。假设对于第一个指标,我将wpr per设置为a,ma per设置为b,对于第二个指标,cmo范围设置为c,ma per设置为d。我想在wpr越过其ma(同时wpr>水平x)和cmo越过其ma(同时cmo>水平y)时,在同一个分钟/柱子买入。(这里很重要,两个条件必须同时发生),并卖出反向条件。

这可能吗?

 
anonimm:
亲爱的Mladen;

再次感谢你的wpr ma和cmo ma指数。假设对于第一个指标,我将wpr per设置为a,ma per设置为b,对于第二个指标,cmo范围设置为c,ma per设置为d。我想在wpr越过其ma(同时wpr>水平x)和cmo越过其ma(同时cmo>水平y)时,在同一个分钟/柱子买入。(这里很重要,两个条件必须同时发生),并卖出反向条件。

有可能吗?

是的

这是有可能的

使用iCustom() 来检查你正在寻找的条件,你可以将你使用的任何数量的自定义指标的条件合并到一个信号中。

 

有谁能帮我解决这个指标超过950个计数棒的问题?

附加的文件:
 
YSCWL:
有谁能帮我解决这个指标超过950个计数棒的问题?

试试吧

附加的文件: