顺水外汇EA交易网MT4
标题:
希望万能版主和编程高手解析一下这个指标
[打印本页]
作者:
冷眼观局_笑而不
时间:
2018-1-11 16:39
标题:
希望万能版主和编程高手解析一下这个指标
我自学编程一段时间了 一些简单的指标 都能看懂 而且会编一些简单的工具。 但是菜鸟碰到老鸟写的指标就一头雾水了。希望高手给这个指标做一些注解。这个指标代码比较复杂。
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 Fuchsia
#property indicator_color2 Fuchsia
#property indicator_color3 Fuchsia
#property indicator_color4 Fuchsia
#property indicator_color5 Fuchsia
#property indicator_color6 Fuchsia
#property indicator_color7 Fuchsia
#property indicator_color8 Fuchsia
extern int FindLen = 100;
extern int RSIPeriod = 14;
extern int ibars=1000;
extern bool AlertFlag = TRUE;
double G_ibuf_84[];
double G_ibuf_88[];
double G_ibuf_92[];
double G_ibuf_96[];
double G_ibuf_100[];
double G_ibuf_104[];
double G_ibuf_108[];
double G_ibuf_112[];
int Gia_116[];
int Gi_120 = 0;
int Gia_124[];
int Gi_128 = 0;
int Gia_132[];
int Gia_136[];
int Gi_140 = 0;
int Gia_144[];
int Gia_148[];
int Gi_152 = 0;
int ii = 0;
int iii = 0;
int init()
{
IndicatorBuffers(8);
SetIndexStyle(0, DRAW_LINE);
SetIndexBuffer(0, G_ibuf_84);
SetIndexStyle(1, DRAW_LINE);
SetIndexBuffer(1, G_ibuf_88);
SetIndexStyle(2, DRAW_LINE);
SetIndexBuffer(2, G_ibuf_92);
SetIndexStyle(3, DRAW_LINE);
SetIndexBuffer(3, G_ibuf_96);
SetIndexStyle(4, DRAW_LINE);
SetIndexBuffer(4, G_ibuf_100);
SetIndexStyle(5, DRAW_LINE);
SetIndexBuffer(5, G_ibuf_104);
SetIndexStyle(6, DRAW_ARROW);
SetIndexBuffer(6, G_ibuf_108);
SetIndexArrow(6, 218);
SetIndexStyle(7, DRAW_ARROW);
SetIndexBuffer(7, G_ibuf_112);
SetIndexArrow(7, 217);
SetIndexEmptyValue(0, 0.0);
SetIndexEmptyValue(1, 0.0);
SetIndexEmptyValue(2, 0.0);
SetIndexEmptyValue(3, 0.0);
SetIndexEmptyValue(4, 0.0);
SetIndexEmptyValue(5, 0.0);
SetIndexEmptyValue(6, 0.0);
SetIndexEmptyValue(7, 0.0);
return (0);
}
int start()
{
int Li_4;
int Li_8;
int Li_12;
double Ld_20;
CalculateData();
ArrayInitialize(G_ibuf_84, 0.0);
ArrayInitialize(G_ibuf_88, 0.0);
ArrayInitialize(G_ibuf_92, 0.0);
ArrayInitialize(G_ibuf_96, 0.0);
ArrayInitialize(G_ibuf_100, 0.0);
ArrayInitialize(G_ibuf_104, 0.0);
ArrayInitialize(G_ibuf_108, 0.0);
ArrayInitialize(G_ibuf_112, 0.0);
for (int index_0 = 0; index_0 = Li_8; Li_16--)
{
if (Li_12 == 1 && G_ibuf_84[Li_16] != 0.0) Li_12 = 2;
if (Li_12 == 2 && G_ibuf_88[Li_16] != 0.0) Li_12 = 3;
if (Li_12 == 3 && G_ibuf_92[Li_16] != 0.0) Li_12 = 4;
if (Li_12 == 4 && G_ibuf_96[Li_16] != 0.0) Li_12 = 5;
if (Li_12 == 5 && G_ibuf_100[Li_16] != 0.0) Li_12 = 6;
if (Li_12 == 6 && G_ibuf_104[Li_16] != 0.0) Li_12 = -1;
}
Ld_20 = (High[Li_8] - High[Li_4]) / (Li_4 - Li_8);
switch (Li_12)
{
case 1:
for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
G_ibuf_84[Li_16] = High[Li_4] + (Li_4 - Li_16) * Ld_20;
break;
case 2:
for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
G_ibuf_88[Li_16] = High[Li_4] + (Li_4 - Li_16) * Ld_20;
break;
case 3:
for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
G_ibuf_92[Li_16] = High[Li_4] + (Li_4 - Li_16) * Ld_20;
break;
case 4:
for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
G_ibuf_96[Li_16] = High[Li_4] + (Li_4 - Li_16) * Ld_20;
break;
case 5:
for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
G_ibuf_100[Li_16] = High[Li_4] + (Li_4 - Li_16) * Ld_20;
break;
case 6:
for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
G_ibuf_104[Li_16] = High[Li_4] + (Li_4 - Li_16) * Ld_20;
}
G_ibuf_108[Li_8] = High[Li_8];
if (AlertFlag)
{
if(Li_16 == 0 && ii == FALSE)
{
Alert(Symbol() + " " + Period() + " RSI背离" "!" );
ii = TRUE;
iii = FALSE;
}
}
}
for (index_0 = 0; index_0 = Li_8; Li_16--)
{
if (Li_12 == 1 && G_ibuf_84[Li_16] != 0.0) Li_12 = 2;
if (Li_12 == 2 && G_ibuf_88[Li_16] != 0.0) Li_12 = 3;
if (Li_12 == 3 && G_ibuf_92[Li_16] != 0.0) Li_12 = 4;
if (Li_12 == 4 && G_ibuf_96[Li_16] != 0.0) Li_12 = 5;
if (Li_12 == 5 && G_ibuf_100[Li_16] != 0.0) Li_12 = 6;
if (Li_12 == 6 && G_ibuf_104[Li_16] != 0.0) Li_12 = -1;
}
Ld_20 = (Low[Li_8] - Low[Li_4]) / (Li_4 - Li_8);
switch (Li_12)
{
case 1:
for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
G_ibuf_84[Li_16] = Low[Li_4] + (Li_4 - Li_16) * Ld_20;
break;
case 2:
for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
G_ibuf_88[Li_16] = Low[Li_4] + (Li_4 - Li_16) * Ld_20;
break;
case 3:
for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
G_ibuf_92[Li_16] = Low[Li_4] + (Li_4 - Li_16) * Ld_20;
break;
case 4:
for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
G_ibuf_96[Li_16] = Low[Li_4] + (Li_4 - Li_16) * Ld_20;
break;
case 5:
for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
G_ibuf_100[Li_16] = Low[Li_4] + (Li_4 - Li_16) * Ld_20;
break;
case 6:
for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
G_ibuf_104[Li_16] = Low[Li_4] + (Li_4 - Li_16) * Ld_20;
}
G_ibuf_112[Li_8] = Low[Li_8];
if (AlertFlag)
{
if(Li_16== 0 && iii == FALSE)
{
Alert(Symbol() + " " + Period() + " RSI背离" "!" );
iii = TRUE;
ii = FALSE;
}
}
}
return (0);
}
void CalculateData()
{
int count_4;
int Lia_20[10];
int Lia_24[10];
bool Li_28;
double Ld_32;
double Ld_40;
double Ld_48;
// int Li_16 = 2;
bool Li_56 = FALSE;
Gi_120 = 0;
Gi_128 = 0;
Gi_140 = 0;
Gi_152 = 0;
for (int Li_0 = ibars- 1; Li_0 >= -1; Li_0--)
{
Ld_40 = (iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_0) - 50.0) / 100.0;
if (Ld_32 * Ld_40 = 2 * 2 + 1 || Li_0 == -1) Li_56 = TRUE;
if (Li_56 == TRUE)
{
if (Ld_32 > 0.0)
{
for (int Li_8 = Li_0 + count_4 + 1; Li_8 > Li_0; Li_8--)
{
for (int Li_12 = 0; Li_12 = Li_8 - 2; Li_12--)
if (Ld_48 Li_0; Li_8--)
{
for (Li_12 = 0; Li_12 = (iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_12) - 50.0) / 100.0)
Lia_20[Li_12 - Li_8 - 1] = 0;
for (Li_12 = Li_8 - 1; Li_12 >= Li_8 - 2; Li_12--)
if (Ld_48 >= (iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_12) - 50.0) / 100.0)
Lia_24[StrToInteger(DoubleToStr(MathAbs(Li_12 - Li_8 + 1), 0))] = 0;
for (Li_12 = 0; Li_12 High[Li_16] && (iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_20) - 50.0) / 100.0 = Li_20 + 1; Li_12--)
{
Ld_32 = (iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_16) - 50.0) / 100.0 + (Li_16 - Li_12) * Ld_24;
if (Ld_32 + 0.018 (iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_16) - 50.0) / 100.0)
{
Ld_24 = ((iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_20) - 50.0) / 100.0 - (iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_16) - 50.0) / 100.0) / (Li_16 - Li_20);
Ld_40 = 1;
for (Li_12 = Li_16 - 1; Li_12 >= Li_20 + 1; Li_12--)
{
Ld_32 = (iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_16) - 50.0) / 100.0 + (Li_16 - Li_12) * Ld_24;
if (Ld_32 - 0.018 > (iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_12) - 50.0) / 100.0) Ld_40 = 0;
}
if (Ld_40 == 1.0)
{
Gi_152++;
ArrayResize(Gia_144, Gi_152);
ArrayResize(Gia_148, Gi_152);
Gia_144[Gi_152 - 1] = Li_16;
Gia_148[Gi_152 - 1] = Li_20;
}
}
}
}
}
作者:
冷眼观局_笑而不
时间:
2018-1-11 17:39
注解越详细越好。 这个框架我能看懂 但是里面处理 问题的哪些方法逻辑 不懂。 还有就是我对 ArrayResize(Gia_144, Gi_152);和 ArrayInitialize(G_ibuf_84, 0.0); 这两句话 不太懂 看了命令帮助文件了 也不懂 上面说的太专业。
作者:
熙羽
时间:
2018-1-11 19:15
苦力活!我想没多少人愿意,你还是自己一步一个脚印的来吧。
作者:
冷眼观局_笑而不
时间:
2018-1-11 20:14
[attach]22251[/attach]
for (Li_12 = Li_8 + 1; Li_12 = (iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_12) - 50.0) / 100.0)
Lia_20[Li_12 - Li_8 - 1] = 0;
for (Li_12 = Li_8 - 1; Li_12 >= Li_8 - 2; Li_12--)
if (Ld_48 >= (iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_12) - 50.0) / 100.0)
Lia_24[StrToInteger(DoubleToStr(MathAbs(Li_12 - Li_8 + 1), 0))] = 0;
为什么这两个for语句后面 连个大括号都没有 而且还不能屏蔽? 有什么作用?
作者:
yangsluo
时间:
2018-1-11 20:47
一看就是**文件。。
作者:
digit
时间:
2018-1-11 21:54
而且还是反编译的...
[attach]22252[/attach]
作者:
digit
时间:
2018-1-11 22:58
谁说 for 语句一定要大括号
作者:
冷眼观局_笑而不
时间:
2018-1-12 00:17
那有什么作用? 10天学会mql4 上没讲呀。
作者:
ayng
时间:
2018-1-12 00:49
闲来无事看看
作者:
暘光bingosy
时间:
2018-1-12 01:18
支持楼主 顶
作者:
暘光bingosy
时间:
2018-1-12 02:54
再订 为了金币 为了金币呀
作者:
153083486
时间:
2018-1-12 03:36
谢谢分享
作者:
seismic
时间:
2018-1-12 04:54
学习 后排坐起
作者:
宋俊廷
时间:
2018-1-12 06:01
实在太深奥了
作者:
小飞鱼常春
时间:
2018-1-12 07:35
实在太深奥了
欢迎光临 顺水外汇EA交易网MT4 (http://www.waterforex.com/)
Powered by Discuz! X3.2