커뮤니티
문의드립니다
2013-11-15 16:03:50
472
글번호 69538
메타로 짜여진 수식을 예스로 변경을 할려고 하는데 어렵네요
좀 도와주세요
메타로 단순 매수 매도식으로 나오는것인데요
=========================================
#property copyright "Copyright ?2010, FX Turbo Marksman"
#property link "http://www.fxturbomarksman.com"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Yellow
#property indicator_width1 1
#property indicator_width2 1
extern int gi_76 = 4;
extern int gi_80 = 500;
extern bool SoundAlarm = FALSE;
extern bool EmailAlarm = FALSE;
double g_ibuf_92[];
double g_ibuf_96[];
int gi_100 = 0;
int gi_104 = 0;
int init() {
IndicatorBuffers(2);
SetIndexStyle(0, DRAW_ARROW);
SetIndexArrow(0, 164);
SetIndexStyle(1, DRAW_ARROW);
SetIndexArrow(1, 164);
SetIndexBuffer(0, g_ibuf_92);
SetIndexBuffer(1, g_ibuf_96);
GlobalVariableSet("AlertTime" + Symbol() + Period(), TimeCurrent());
GlobalVariableSet("SignalType" + Symbol() + Period(), 5);
return (0);
}
int deinit() {
GlobalVariableDel("AlertTime" + Symbol() + Period());
GlobalVariableDel("SignalType" + Symbol() + Period());
return (0);
}
int start() {
int li_12;
double ld_52;
double ld_60;
double ld_68;
double ld_76;
double ld_84;
double ld_92;
double ld_100;
double lda_108[1000];
double ld_120;
if (gi_80 >= 1000) gi_80 = 950;
SetIndexDrawBegin(0, Bars - gi_80 + 11 + 1);
SetIndexDrawBegin(1, Bars - gi_80 + 11 + 1);
int l_ind_counted_8 = IndicatorCounted();
double ld_112 = 0;
int li_20 = gi_76 * 2 + 3;
double ld_36 = gi_76 + 67;
double ld_44 = 33 - gi_76;
int l_period_24 = li_20;
if (Bars <= 12) return (0);
if (l_ind_counted_8 < 12) {
for (int li_0 = 1; li_0 <= 0; li_0++) g_ibuf_92[gi_80 - li_0] = 0.0;
for (li_0 = 1; li_0 <= 0; li_0++) g_ibuf_96[gi_80 - li_0] = 0.0;
}
for (int li_4 = gi_80 - 11 - 1; li_4 >= 0; li_4--) {
li_12 = li_4;
ld_76 = 0.0;
ld_84 = 0.0;
for (li_12 = li_4; li_12 <= li_4 + 9; li_12++) ld_84 += MathAbs(High[li_12] - Low[li_12]);
ld_76 = ld_84 / 10.0;
li_12 = li_4;
ld_68 = 0;
while (li_12 < li_4 + 9 && ld_68 < 1.0) {
if (MathAbs(Open[li_12] - (Close[li_12 + 1])) >= 2.0 * ld_76) ld_68 += 1.0;
li_12++;
}
if (ld_68 >= 1.0) ld_92 = li_12;
else ld_92 = -1;
li_12 = li_4;
ld_68 = 0;
while (li_12 < li_4 + 6 && ld_68 < 1.0) {
if (MathAbs(Close[li_12 + 3] - Close[li_12]) >= 4.6 * ld_76) ld_68 += 1.0;
li_12++;
}
if (ld_68 >= 1.0) ld_100 = li_12;
else ld_100 = -1;
if (ld_92 > -1.0) l_period_24 = 3;
else l_period_24 = li_20;
if (ld_100 > -1.0) l_period_24 = 4;
else l_period_24 = li_20;
ld_52 = 100 - MathAbs(iWPR(NULL, 0, l_period_24, li_4));
lda_108[li_4] = ld_52;
g_ibuf_92[li_4] = 0;
g_ibuf_96[li_4] = 0;
ld_60 = 0;
if (ld_52 < ld_44) {
for (int li_16 = 1; lda_108[li_4 + li_16] >= ld_44 && lda_108[li_4 + li_16] <= ld_36; li_16++) {
}
if (lda_108[li_4 + li_16] > ld_36) {
ld_60 = High[li_4] + ld_76 / 2.0;
if (li_4 == 1 && gi_100 == FALSE) {
gi_100 = TRUE;
gi_104 = FALSE;
}
g_ibuf_92[li_4] = ld_60;
}
}
if (ld_52 > ld_36) {
for (li_16 = 1; lda_108[li_4 + li_16] >= ld_44 && lda_108[li_4 + li_16] <= ld_36; li_16++) {
}
if (lda_108[li_4 + li_16] < ld_44) {
ld_60 = Low[li_4] - ld_76 / 2.0;
if (li_4 == 1 && gi_104 == FALSE) {
gi_104 = TRUE;
gi_100 = FALSE;
}
g_ibuf_96[li_4] = ld_60;
}
}
}
if (gi_100 == TRUE && TimeCurrent() > GlobalVariableGet("AlertTime" + Symbol() + Period()) && GlobalVariableGet("SignalType" + Symbol() + Period()) != 0.0) {
ld_120 = High[iHighest(Symbol(), 0, MODE_HIGH, 3, 0)] + 5.0 * Point;
if (SoundAlarm) Alert("Sell signal @ ", Symbol(), " Period ", Period(), " Stop Loss @", ld_120);
if (EmailAlarm) SendMail("Sell Signal FX Marksman", "Sell signal @ " + Symbol() + " Period " + Period() + " Stop Loss @ " + ld_120);
ld_112 = TimeCurrent() + 60.0 * (Period() - MathMod(Minute(), Period()));
GlobalVariableSet("AlertTime" + Symbol() + Period(), ld_112);
GlobalVariableSet("SignalType" + Symbol() + Period(), 0);
}
if (gi_104 == TRUE && TimeCurrent() > GlobalVariableGet("AlertTime" + Symbol() + Period()) && GlobalVariableGet("SignalType" + Symbol() + Period()) != 1.0) {
ld_120 = Low[iLowest(Symbol(), 0, MODE_LOW, 3, 0)] - 5.0 * Point;
if (SoundAlarm) Alert("Buy signal @ ", Symbol(), " Period ", Period(), " Stop Loss @", ld_120);
if (EmailAlarm) SendMail("BUY Signal FX Marksman", "Buy signal @ " + Symbol() + " Period " + Period() + " Stop Loss @ " + ld_120);
ld_112 = TimeCurrent() + 60.0 * (Period() - MathMod(Minute(), Period()));
GlobalVariableSet("AlertTime" + Symbol() + Period(), ld_112);
GlobalVariableSet("SignalType" + Symbol() + Period(), 1);
}
return (0);
}
부탁드립니다.
답변 1
예스스탁 예스스탁 답변
2013-11-15 16:06:56
안녕하세요
예스스탁입니다
메타는 사용해본 경험이 없어 해당식의 내용을 알수가 없어
예스랭귀지로 변경을 해드릴수가 없습니다.
도움을 드리지 못해 죄송합니다.
즐거운 하루되세요
> 드림컴트루1 님이 쓴 글입니다.
> 제목 : 문의드립니다
> 메타로 짜여진 수식을 예스로 변경을 할려고 하는데 어렵네요
좀 도와주세요
메타로 단순 매수 매도식으로 나오는것인데요
=========================================
#property copyright "Copyright ?2010, FX Turbo Marksman"
#property link "http://www.fxturbomarksman.com"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Yellow
#property indicator_width1 1
#property indicator_width2 1
extern int gi_76 = 4;
extern int gi_80 = 500;
extern bool SoundAlarm = FALSE;
extern bool EmailAlarm = FALSE;
double g_ibuf_92[];
double g_ibuf_96[];
int gi_100 = 0;
int gi_104 = 0;
int init() {
IndicatorBuffers(2);
SetIndexStyle(0, DRAW_ARROW);
SetIndexArrow(0, 164);
SetIndexStyle(1, DRAW_ARROW);
SetIndexArrow(1, 164);
SetIndexBuffer(0, g_ibuf_92);
SetIndexBuffer(1, g_ibuf_96);
GlobalVariableSet("AlertTime" + Symbol() + Period(), TimeCurrent());
GlobalVariableSet("SignalType" + Symbol() + Period(), 5);
return (0);
}
int deinit() {
GlobalVariableDel("AlertTime" + Symbol() + Period());
GlobalVariableDel("SignalType" + Symbol() + Period());
return (0);
}
int start() {
int li_12;
double ld_52;
double ld_60;
double ld_68;
double ld_76;
double ld_84;
double ld_92;
double ld_100;
double lda_108[1000];
double ld_120;
if (gi_80 >= 1000) gi_80 = 950;
SetIndexDrawBegin(0, Bars - gi_80 + 11 + 1);
SetIndexDrawBegin(1, Bars - gi_80 + 11 + 1);
int l_ind_counted_8 = IndicatorCounted();
double ld_112 = 0;
int li_20 = gi_76 * 2 + 3;
double ld_36 = gi_76 + 67;
double ld_44 = 33 - gi_76;
int l_period_24 = li_20;
if (Bars <= 12) return (0);
if (l_ind_counted_8 < 12) {
for (int li_0 = 1; li_0 <= 0; li_0++) g_ibuf_92[gi_80 - li_0] = 0.0;
for (li_0 = 1; li_0 <= 0; li_0++) g_ibuf_96[gi_80 - li_0] = 0.0;
}
for (int li_4 = gi_80 - 11 - 1; li_4 >= 0; li_4--) {
li_12 = li_4;
ld_76 = 0.0;
ld_84 = 0.0;
for (li_12 = li_4; li_12 <= li_4 + 9; li_12++) ld_84 += MathAbs(High[li_12] - Low[li_12]);
ld_76 = ld_84 / 10.0;
li_12 = li_4;
ld_68 = 0;
while (li_12 < li_4 + 9 && ld_68 < 1.0) {
if (MathAbs(Open[li_12] - (Close[li_12 + 1])) >= 2.0 * ld_76) ld_68 += 1.0;
li_12++;
}
if (ld_68 >= 1.0) ld_92 = li_12;
else ld_92 = -1;
li_12 = li_4;
ld_68 = 0;
while (li_12 < li_4 + 6 && ld_68 < 1.0) {
if (MathAbs(Close[li_12 + 3] - Close[li_12]) >= 4.6 * ld_76) ld_68 += 1.0;
li_12++;
}
if (ld_68 >= 1.0) ld_100 = li_12;
else ld_100 = -1;
if (ld_92 > -1.0) l_period_24 = 3;
else l_period_24 = li_20;
if (ld_100 > -1.0) l_period_24 = 4;
else l_period_24 = li_20;
ld_52 = 100 - MathAbs(iWPR(NULL, 0, l_period_24, li_4));
lda_108[li_4] = ld_52;
g_ibuf_92[li_4] = 0;
g_ibuf_96[li_4] = 0;
ld_60 = 0;
if (ld_52 < ld_44) {
for (int li_16 = 1; lda_108[li_4 + li_16] >= ld_44 && lda_108[li_4 + li_16] <= ld_36; li_16++) {
}
if (lda_108[li_4 + li_16] > ld_36) {
ld_60 = High[li_4] + ld_76 / 2.0;
if (li_4 == 1 && gi_100 == FALSE) {
gi_100 = TRUE;
gi_104 = FALSE;
}
g_ibuf_92[li_4] = ld_60;
}
}
if (ld_52 > ld_36) {
for (li_16 = 1; lda_108[li_4 + li_16] >= ld_44 && lda_108[li_4 + li_16] <= ld_36; li_16++) {
}
if (lda_108[li_4 + li_16] < ld_44) {
ld_60 = Low[li_4] - ld_76 / 2.0;
if (li_4 == 1 && gi_104 == FALSE) {
gi_104 = TRUE;
gi_100 = FALSE;
}
g_ibuf_96[li_4] = ld_60;
}
}
}
if (gi_100 == TRUE && TimeCurrent() > GlobalVariableGet("AlertTime" + Symbol() + Period()) && GlobalVariableGet("SignalType" + Symbol() + Period()) != 0.0) {
ld_120 = High[iHighest(Symbol(), 0, MODE_HIGH, 3, 0)] + 5.0 * Point;
if (SoundAlarm) Alert("Sell signal @ ", Symbol(), " Period ", Period(), " Stop Loss @", ld_120);
if (EmailAlarm) SendMail("Sell Signal FX Marksman", "Sell signal @ " + Symbol() + " Period " + Period() + " Stop Loss @ " + ld_120);
ld_112 = TimeCurrent() + 60.0 * (Period() - MathMod(Minute(), Period()));
GlobalVariableSet("AlertTime" + Symbol() + Period(), ld_112);
GlobalVariableSet("SignalType" + Symbol() + Period(), 0);
}
if (gi_104 == TRUE && TimeCurrent() > GlobalVariableGet("AlertTime" + Symbol() + Period()) && GlobalVariableGet("SignalType" + Symbol() + Period()) != 1.0) {
ld_120 = Low[iLowest(Symbol(), 0, MODE_LOW, 3, 0)] - 5.0 * Point;
if (SoundAlarm) Alert("Buy signal @ ", Symbol(), " Period ", Period(), " Stop Loss @", ld_120);
if (EmailAlarm) SendMail("BUY Signal FX Marksman", "Buy signal @ " + Symbol() + " Period " + Period() + " Stop Loss @ " + ld_120);
ld_112 = TimeCurrent() + 60.0 * (Period() - MathMod(Minute(), Period()));
GlobalVariableSet("AlertTime" + Symbol() + Period(), ld_112);
GlobalVariableSet("SignalType" + Symbol() + Period(), 1);
}
return (0);
}
부탁드립니다.