南海 2008-6-14 23:37
请教版主问题
请版主帮我编一小段代码
条件是这样的:
[size=4]如果当前最高价大于前五个周期最高价时取当前最高价,否则取前一次条件成立的值(也就是说取前一个最高价大于前五个周期最高价时取得的最高价)。[/size]按条件我该怎么编译了??
还有下面是我自己编的指标,不能显示,请版主花点时间帮我看下是哪里错了,谢谢
#property copyright "Copyright ?2008, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
double ExtMapBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
double hh1[];
double ll1[];
int i=0;
double hh2[];
double ll2[];
double k1[];
double k3[];
double k2[];
double b1[];
int limt = Bars-counted_bars;
for (i=0;i<limt;i++)
if (High[i]<High[i+2]&&High[i+1]<High[i+2]) hh1[i]=High[i+2]; else hh1[i]=0;
if (Low[i]>Low[i+2]&&Low[i+1]>Low[i+2]) ll1[i]=Low[i+2]; else ll1[i]=0;
if (hh1[i]>0) hh2[i]=hh1[i];
else hh2[i]=ArrayBsearch(hh1[i],hh1[i+1]>0,WHOLE_ARRAY,0,MODE_DESCEND);
if (ll1[i]>0) ll2[i]=ll1[i];
else ll2[i]=ArrayBsearch(ll1[i],ll1[i+1]>0,WHOLE_ARRAY,0,MODE_DESCEND);
if (Close[i]<ll2[i]) k3[i]=1; else k3[i]=0;
if (Close[i]>hh2[i]) k1[i]=-3; else k1[i]=k3[i];
if (k1[i]!=0) k2[i]=k1[i];
else k2[i]=ArrayBsearch(k1[i],k1[i+1]!=0,WHOLE_ARRAY,0,MODE_DESCEND);
if (k2[i]>1) b1[i]=hh2[i];
else b1[i]=ll2[i];
ExtMapBuffer[i]=b1[i];
}
//+------------------------------------------------------------------+
[[i] 本帖最后由 南海 于 2008-6-14 23:39 编辑 [/i]]
startexcel 2008-6-15 10:10
你这代码写错了
hh1=High[i+2];
hh1是数组
南海 2008-6-15 11:39
没有错,我是写数组了,但复制不上,发上去变得弯弯曲曲的了,我重写一遍还是发不了,请版主就当有数组的再帮忙看,谢谢了
int limt = Bars-counted_bars;
for (i=0;i<limt;i++)
if (High[i]<High[i+2]&&High[i+1]<High[i+2]) hh1[i][i]=High[i+2]; else hh1[i][i]=0;
if (Low[i]>Low[i+2]&&Low[i+1]>Low[i+2]) ll1[i][i]=Low[i+2]; else ll1[i][i]=0;
if (hh1[i][i]>0) hh2[i][i]=hh1[i][i];
else hh2[i][i]=ArrayBsearch(hh1[i][i],hh1[i+1]>0,WHOLE_ARRAY,0,MODE_DESCEND);
if (ll1[i][i]>0) ll2[i][i]=ll1[i][i];
else ll2[i][i]=ArrayBsearch(ll1[i][i],ll1[i+1]>0,WHOLE_ARRAY,0,MODE_DESCEND);
if (Close[i]<ll2[i][i]) k3[i][i]=1; else k3[i][i]=0;
if (Close[i]>hh2[i][i]) k1[i][i]=-3; else k1[i][i]=k3[i][i];
if (k1[i][i]!=0) k2[i][i]=k1[i][i];
else k2[i][i]=ArrayBsearch(k1[i][i],k1[i+1]!=0,WHOLE_ARRAY,0,MODE_DESCEND);
if (k2[i][i]>1) b1[i][i]=hh2[i][i];
else b1[i][i]=ll2[i][i];
ExtMapBuffer[i]=b1[i][i];
}
//+------------------------------------------------------------------+[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
[[i] 本帖最后由 南海 于 2008-6-15 11:56 编辑 [/i]]
startexcel 2008-6-15 15:35
那你做为附件发吧
南海 2008-6-15 21:53
:yct35 :yct35 :yct35 :yct35
[[i] 本帖最后由 南海 于 2008-6-17 18:14 编辑 [/i]]