编码帮助 - 页 326

 

对改变方向的提醒

你好。

在一个买入的EA中,例如,如果MA10>MA20(和卖出相反),如果买入和MA10<MA20(和相反),我怎样才能写一个警报?

谢谢。

 
Jovager:
你好。

在一个买入的EA中,例如,如果MA10>MA20(和卖出相反),如果买入和MA10<MA20(和相反),我怎样才能写一个警报?

谢谢。

试着这样做。

如果(MA10previousMA20)为第一个条件

如果(MA10previous>MA20previous && MA10<MA20)为第二个条件。

 
mladen:
你是在后面的测试中尝试警报吗? 如果是,那么这就是原因:警报在后面的测试中不起作用。

谢谢。以前是的,如Build 509。

 
Big Be:
谢谢。以前是这样的,如Build 509。

:):)

有很多东西以前是有效的,但现在在这个 "新的metatrader "中已经不工作了。在视觉回测中尝试多时间框架,你会在周末有一个 "娱乐"。

 
mladen:
看起来很熟悉 将检查它是否已经存在

姆拉登先生有什么收获吗?

你能找到它吗?

谢谢

 
mladen:
:):):):)很多东西以前是有效的,但现在在这个 "新的metatrader "中已经不工作了。在视觉回测中尝试多时间框架,你会在周末有一个 "娱乐 "

嗨,Mladen

我看到你是一个很有帮助的程序员,所以我想问问你是否有可能把新增的指标做成一个EA。这个指标没有重绘,而且提供令人震惊的好信号!:) :) :)

附加的文件:
 

你好,请帮助看一下这段代码,怎样才能使它在当前的蜡烛上发出警报并显示箭头。

谢谢

// B83A886A5C437CCD9AC15473FD6F1788

void f0_2(string As_0) {

if (IsTesting() == FALSE && IsOptimization() == FALSE && IsVisualMode() == FALSE) SendMail(WindowExpertName(), As_0) 。

}

// A8CFDE6331BD59EB2AC96F8911C4B666

void f0_1(string A_name_0, string A_text_8, string A_fontname_16, int A_fontsize_24, color A_color_28, int A_y_32, int A_x_36, int A_corner_40, int A_bool_44) {

ObjectCreate(A_name_0,OBJ_LABEL, 0, 0, 0)。

ObjectSetText(A_name_0, A_text_8, A_fontsize_24, A_fontname_16, A_color_28)。

ObjectSet(A_name_0, OBJPROP_CORNER, A_corner_40)。

ObjectSet(A_name_0, OBJPROP_XDISTANCE, A_x_36);

ObjectSet(A_name_0, OBJPROP_YDISTANCE, A_y_32);

ObjectSet(A_name_0, OBJPROP_BACK, A_bool_44);

}

// 085FEA7ABDC5D904FE69A3081EFD7398

void f0_0(string As_0, int GetBar) {

如果(IsTesting() == FALSE && IsOptimization() == FALSE && IsVisualMode() == FALSE) {

if (sound) PlaySound("News.wav");

if (alert) Alert("New signal " + As_0+ " @ Symbol:"+Symbol()+" & Period:M "+Period()+" & Time: "+TimeToString(GetBar,TIME_MINUTES|TIME_SECONDS))。

if (email) f0_2("New signal " + As_0+ " @ Symbol:"+Symbol()+" & Period:M "+Period()+" & Time: "+TimeToString(GetBar,TIME_MINUTES|TIME_SECONDS))。

}

}

// BE8F80182E0C983916DA7338C2C1C040

int f0_3(string A_name_0, string A_name_8) {

如果(ObjectFind(A_name_0) == -1) 返回(0)。

如果(ObjectFind(A_name_8) == -1) 返回(0)。

如果(ObjectGet(A_name_0, OBJPROP_XDISTANCE) > ObjectGet(A_name_8, OBJPROP_XDISTANCE) - 10.0 && ObjectGet(A_name_0, OBJPROP_XDISTANCE) < ObjectGet(A_name_8, OBJPROP_XDISTANCE) +

10.0) {

如果(ObjectGet(A_name_0, OBJPROP_YDISTANCE) > ObjectGet(A_name_8, OBJPROP_YDISTANCE) - 10.0 && ObjectGet(A_name_0, OBJPROP_YDISTANCE) < ObjectGet(A_name_8, OBJPROP_YDISTANCE)+.

10.0)返回(1)。

}

返回(0)。

}

// E4DB2306E8CC4DEB5830201DE61935CA

double f0_4() {

double Ld_ret_0 = 0;

for (int pos_8 = 0; pos_8 < OrdersTotal(); pos_8++) {

如果(OrderSelect(pos_8, SELECT_BY_POS, MODE_TRADES) == TRUE)

如果(OrderSymbol() == Symbol())Ld_ret_0 += OrderProfit()。

}

返回(Ld_ret_0)。

}

// EA2B2676C28C0DB26D39331A336C6B92

int start() {

字符串 Ls_0;

double iatr_20;

双倍Ld_28。

双倍Ld_36。

int TimeBar=0。

如果(f0_3("x", "r4") == 1) {

alert = FALSE。

ObjectDelete("r2")。

f0_1("x", "G", "Wingdings", 25, Pink, 160, 55, 1, FALSE);

PlaySound("Tick.wav")。

G_time_192 = 0;

RefreshRates()。

}

如果(f0_3("x", "t4") == 1) {

声音 = FALSE。

ObjectDelete("t2")。

f0_1("x", "G", "Wingdings", 25, Pink, 160, 55, 1, FALSE);

PlaySound("Tick.wav")。

G_time_192 = 0;

RefreshRates()。

}

如果(f0_3("x", "u4") == 1) {

email = FALSE。

ObjectDelete("u2");

f0_1("x", "G", "Wingdings", 25, Pink, 160, 55, 1, FALSE);

PlaySound("Tick.wav")。

G_time_192 = 0;

RefreshRates()。

}

如果(f0_3("x", "r3") == 1) {

alert = TRUE。

f0_1("r2", "þ", "Wingdings", 14, Red, 55, 65, 1, FALSE);

f0_1("x", "G", "Wingdings", 25, Pink, 160, 55, 1, FALSE);

PlaySound("Tick.wav")。

G_time_192 = 0;

RefreshRates()。

}

如果(f0_3("x", "t3") == 1) {

声音=TRUE。

f0_1("t2", "þ", "Wingdings", 14, Red, 80, 65, 1, FALSE);

f0_1("x", "G", "Wingdings", 25, Pink, 160, 55, 1, FALSE);

PlaySound("Tick.wav")。

G_time_192 = 0;

RefreshRates()。

}

如果(f0_3("x", "u3") == 1) {

email = TRUE;

f0_1("u2", "þ", "Wingdings", 14, Red, 105, 65, 1, FALSE);

f0_1("x", "G", "Wingdings", 25, Pink, 160, 55, 1, FALSE);

PlaySound("Tick.wav")。

G_time_192 = 0;

RefreshRates()。

}

for (int index_8 = 0; index_8 < 100; index_8++) {

如果(G_ibuf_108 < 1000.0) {

TimeBar=Time;

Ls_0 = "BUY";

休息。

}

如果(G_ibuf_112 < 1000.0) {

TimeBar=Time;

Ls_0 = "SELL";

break;

}

}

如果(Ls_0 == "BUY" && ObjectDescription("Signal1") != "BUY" ) {

f0_0("BUY",TimeBar);

f0_1("Signal1", "BUY", "Wingdings 3", 30, White, 80, 32, 1, FALSE);

}

如果(Ls_0 == "SELL" && ObjectDescription("Signal1") != "SELL" ) {

f0_0("SELL",TimeBar);

f0_1("Signal1", "SELL", "Wingdings 3", 30, White, 80, 25, 1, FALSE);

}

f0_1("r1", "Profit", "Arial", 10, Lime, 50, 80, 1, FALSE);

f0_1("Pr", DoubleToStr(f0_4(), 0), "Arial", 13, Yellow, 50, 35, 1, FALSE);

如果(Time[0] == G_time_192)返回(0)。

G_time_192 = Time[0];

int Li_12 = Bars - IndicatorCounted();

如果 (IndicatorCounted() > 0) Li_12++;

for (int bars_16 = Bars; bars_16 > 0; bars_16--) {

如果(bars_16 <= HistoriBar) {

iatr_20 = iATR(NULL, 0, 100, 0)。

Ld_28 = Close - iATR(NULL, 0, PeriodIndikator, bars_16) * Factor;

Ld_36 = Close + iATR(NULL, 0, PeriodIndikator, bars_16) * Factor;

如果(Ld_28 > Gd_156 && Gi_180 == 1) Gd_156 = Ld_28;

如果(Ld_36 < Gd_148 && Gi_180 == 2) Gd_148 = Ld_36;

如果(Gd_156 != 0.0 && Gi_180 == 1) Gd_unused_124 = Gd_156;

如果 (Gd_148 != 1000.0 && Gi_180 == 2) Gd_unused_132 = Gd_148;

如果(Close < Gd_156 && Gi_180 == 1) {

Gi_180 = 2。

如果(bars_16 < HistoriBar / 2.0)G_ibuf_112 = High + iatr_20。

Gd_156 = 0。

}

如果(Close > Gd_148 && Gi_180 == 2) {

Gi_180 = 1。

如果(bars_16 < HistoriBar / 2.0) G_ibuf_108 = Low - iatr_20。

Gd_148 = 1000;

}

}

}

返回(0)。

}

// 52D46093050F38C27267BCE42543EF60

int deinit() {

 
wolfsch:
嗨,Mladen,我看到你是那些有帮助的程序员之一,所以我可能会问你是否有可能把添加的指标做成一个EA。这个指标没有重绘,而且能提供令人震惊的好信号!

wolfsch

我必须让你失望,但那个指标使用的是T3清洁和蛇形指标。现在,T3并不重绘。但 "蛇 "是以TMA为中心的,它重新计算,这使该指标成为重新计算(重绘)的一种。

PS:这实际上是一个重新命名的 "T3 TMA组合 "指标,后来被重新命名为 "uni cross "指标。关于它的更多信息你可以在这里找到:https://www.mql5.com/en/forum/general

 
emmany4:
你好,请帮助看看这段代码,怎样才能使它在当前蜡烛上发出警报并显示箭头。

预先感谢

// B83A886A5C437CCD9AC15473FD6F1788

void f0_2(string As_0) {

if (IsTesting() == FALSE && IsOptimization() == FALSE && IsVisualMode() == FALSE) SendMail(WindowExpertName(), As_0)。

}

// A8CFDE6331BD59EB2AC96F8911C4B666

void f0_1(string A_name_0, string A_text_8, string A_fontname_16, int A_fontsize_24, color A_color_28, int A_y_32, int A_x_36, int A_corner_40, int A_bool_44) {

ObjectCreate(A_name_0, OBJ_LABEL, 0, 0, 0)。

ObjectSetText(A_name_0, A_text_8, A_fontsize_24, A_fontname_16, A_color_28)。

ObjectSet(A_name_0, OBJPROP_CORNER, A_corner_40)。

ObjectSet(A_name_0, OBJPROP_XDISTANCE, A_x_36);

ObjectSet(A_name_0, OBJPROP_YDISTANCE, A_y_32);

ObjectSet(A_name_0, OBJPROP_BACK, A_bool_44);

}

// 085FEA7ABDC5D904FE69A3081EFD7398

void f0_0(string As_0, int GetBar) {

如果(IsTesting() == FALSE && IsOptimization() == FALSE && IsVisualMode() == FALSE) {

if (sound) PlaySound("News.wav");

if (alert) Alert("New signal " + As_0+ " @ Symbol:"+Symbol()+" & Period:M "+Period()+" & Time: "+TimeToString(GetBar,TIME_MINUTES|TIME_SECONDS))。

if (email) f0_2("New signal " + As_0+ " @ Symbol:"+Symbol()+" & Period:M "+Period()+" & Time: "+TimeToString(GetBar,TIME_MINUTES|TIME_SECONDS))。

}

}

// BE8F80182E0C983916DA7338C2C1C040

int f0_3(string A_name_0, string A_name_8) {

如果(ObjectFind(A_name_0) == -1) 返回(0)。

如果(ObjectFind(A_name_8) == -1) 返回(0)。

如果(ObjectGet(A_name_0, OBJPROP_XDISTANCE) > ObjectGet(A_name_8, OBJPROP_XDISTANCE) - 10.0 && ObjectGet(A_name_0, OBJPROP_XDISTANCE) < ObjectGet(A_name_8, OBJPROP_XDISTANCE) +

10.0) {

如果(ObjectGet(A_name_0, OBJPROP_YDISTANCE) > ObjectGet(A_name_8, OBJPROP_YDISTANCE) - 10.0 && ObjectGet(A_name_0, OBJPROP_YDISTANCE) < ObjectGet(A_name_8, OBJPROP_YDISTANCE)+.

10.0)返回(1)。

}

返回(0)。

}

// E4DB2306E8CC4DEB5830201DE61935CA

double f0_4() {

double Ld_ret_0 = 0;

for (int pos_8 = 0; pos_8 < OrdersTotal(); pos_8++) {

如果(OrderSelect(pos_8, SELECT_BY_POS, MODE_TRADES) == TRUE)

如果(OrderSymbol() == Symbol())Ld_ret_0 += OrderProfit()。

}

返回(Ld_ret_0)。

}

// EA2B2676C28C0DB26D39331A336C6B92

int start() {

字符串 Ls_0;

double iatr_20;

双倍Ld_28。

双倍Ld_36。

int TimeBar=0。

如果(f0_3("x", "r4") == 1) {

alert = FALSE。

ObjectDelete("r2")。

f0_1("x", "G", "Wingdings", 25, Pink, 160, 55, 1, FALSE);

PlaySound("Tick.wav")。

G_time_192 = 0;

RefreshRates()。

}

如果(f0_3("x", "t4") == 1) {

声音 = FALSE。

ObjectDelete("t2")。

f0_1("x", "G", "Wingdings", 25, Pink, 160, 55, 1, FALSE);

PlaySound("Tick.wav")。

G_time_192 = 0;

RefreshRates()。

}

如果(f0_3("x", "u4") == 1) {

email = FALSE。

ObjectDelete("u2");

f0_1("x", "G", "Wingdings", 25, Pink, 160, 55, 1, FALSE);

PlaySound("Tick.wav")。

G_time_192 = 0;

RefreshRates()。

}

如果(f0_3("x", "r3") == 1) {

alert = TRUE。

f0_1("r2", "þ", "Wingdings", 14, Red, 55, 65, 1, FALSE);

f0_1("x", "G", "Wingdings", 25, Pink, 160, 55, 1, FALSE);

PlaySound("Tick.wav")。

G_time_192 = 0;

RefreshRates()。

}

如果(f0_3("x", "t3") == 1) {

声音=TRUE。

f0_1("t2", "þ", "Wingdings", 14, Red, 80, 65, 1, FALSE);

f0_1("x", "G", "Wingdings", 25, Pink, 160, 55, 1, FALSE);

PlaySound("Tick.wav")。

G_time_192 = 0;

RefreshRates()。

}

如果(f0_3("x", "u3") == 1) {

email = TRUE;

f0_1("u2", "þ", "Wingdings", 14, Red, 105, 65, 1, FALSE);

f0_1("x", "G", "Wingdings", 25, Pink, 160, 55, 1, FALSE);

PlaySound("Tick.wav")。

G_time_192 = 0;

RefreshRates()。

}

for (int index_8 = 0; index_8 < 100; index_8++) {

如果(G_ibuf_108 < 1000.0) {

TimeBar=Time;

Ls_0 = "BUY";

休息。

}

如果 (G_ibuf_112 < 1000.0) {

TimeBar=Time;

Ls_0 = "SELL";

break;

}

}

如果(Ls_0 == "BUY" && ObjectDescription("Signal1") != "BUY" ) {

f0_0("BUY",TimeBar);

f0_1("Signal1", "BUY", "Wingdings 3", 30, White, 80, 32, 1, FALSE);

}

如果(Ls_0 == "SELL" && ObjectDescription("Signal1") != "SELL" ) {

f0_0("SELL",TimeBar);

f0_1("Signal1", "SELL", "Wingdings 3", 30, White, 80, 25, 1, FALSE);

}

f0_1("r1", "Profit", "Arial", 10, Lime, 50, 80, 1, FALSE);

f0_1("Pr", DoubleToStr(f0_4(), 0), "Arial", 13, Yellow, 50, 35, 1, FALSE);

如果(Time[0] == G_time_192)返回(0)。

G_time_192 = Time[0];

int Li_12 = Bars - IndicatorCounted();

如果 (IndicatorCounted() > 0) Li_12++;

for (int bars_16 = Bars; bars_16 > 0; bars_16--) {

如果(bars_16 <= HistoriBar) {

iatr_20 = iATR(NULL, 0, 100, 0)。

Ld_28 = Close - iATR(NULL, 0, PeriodIndikator, bars_16) * Factor;

Ld_36 = Close + iATR(NULL, 0, PeriodIndikator, bars_16) * Factor;

如果(Ld_28 > Gd_156 && Gi_180 == 1) Gd_156 = Ld_28;

如果(Ld_36 < Gd_148 && Gi_180 == 2) Gd_148 = Ld_36;

如果(Gd_156 != 0.0 && Gi_180 == 1) Gd_unused_124 = Gd_156;

如果 (Gd_148 != 1000.0 && Gi_180 == 2) Gd_unused_132 = Gd_148;

如果(Close < Gd_156 && Gi_180 == 1) {

Gi_180 = 2。

如果(bars_16 < HistoriBar / 2.0)G_ibuf_112 = High + iatr_20。

Gd_156 = 0。

}

如果(Close > Gd_148 && Gi_180 == 2) {

Gi_180 = 1。

如果(bars_16 < HistoriBar / 2.0) G_ibuf_108 = Low - iatr_20。

Gd_148 = 1000;

}

}

}

返回(0)。

}

// 52D46093050F38C27267BCE42543EF60

int deinit() {

你好,Emmany4,如果你找到该EA的原始代码,可能会添加或修复买入和卖出的箭头和警报,但该版本是反编译的。

 
mrtools:
你好,Emmany4,如果你找到该EA的原始代码,可能会添加或修复箭头和买卖警报,但该版本是反编译的。

在我看来,那是一个不完整的反编译代码,是一些超级趋势的变体(使用ATR的那个,不是CCI版本)。没有其他东西。不管怎么说,这段代码是不可能工作的(它的大部分内容都丢失了)。

原因: