Помощь в кодировании - страница 326

 

Предупреждение о смене направления движения

Здравствуйте,

В советнике, который покупает, например, если MA10>MA20 (и продает напротив), как я могу написать алерт, если Buy и MA10<MA20 (и напротив)?

Спасибо.

Jo

 
Jovager:
Здравствуйте,

В советнике, который покупает, например, если MA10>MA20 (и продает напротив), как я могу написать алерт, если Buy и MA10<MA20 (и напротив)?

Спасибо.

Джо

Попробуйте так :

if (MA10previousMA20) для первого условия

if (MA10previous>MA20previous && MA10<MA20) для второго условия

 
mladen:
Вы пробуете оповещения в обратном тесте? Если да, то причина в этом: оповещения не работают в обратном тесте.

Спасибо. Раньше они работали, как в Build 509.

 
Big Be:
Спасибо. Раньше они работали, как в Build 509.

:):)

Многое из того, что раньше работало, теперь не работает в этом "новом метатрейдере". Попробуйте использовать мультитаймфрейм в визуальном бэктесте и у вас будет "развлечение" на выходные.

 
mladen:
Выглядит знакомо. Я проверю, существует ли он уже.

Есть ли успехи в этом, господин Младен...

Смогли ли вы найти его????

Спасибо

 
mladen:
:):):):) Многое из того, что раньше работало, теперь не работает в этом "новом метатрейдере". Попробуйте использовать мультитаймфрейм в визуальном бэктесте и у вас будет "развлечение" на выходные .

Привет Младен

Я вижу, что вы один из тех полезных программистов, поэтому я могу спросить, не могли бы вы сделать советник из добавленного индикатора. Этот не перерисовывается и дает поразительно хорошие сигналы!

Файлы:
 

Здравствуйте ребята, помогите пожалуйста посмотреть на этот код, что можно сделать чтобы он алертил и показывал стрелки на текущей свече.

Заранее спасибо

// 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, 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) {

if (IsTesting() == FALSE && IsOptimization() == FALSE && IsVisualMode() == FALSE) {

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

if (alert) Alert("Новый сигнал " + As_0+ " @ Symbol: "+Symbol()+" & Period: "+Period()+" & Time: "+TimeToString(GetBar,TIME_MINUTES|TIME_SECONDS));

if (email) f0_2("Новый сигнал " + As_0+ " @ Symbol: "+Symbol()+" & Period: "+Period()+" & Time: "+TimeToString(GetBar,TIME_MINUTES|TIME_SECONDS));

}

}

// BE8F80182E0C983916DA7338C2C1C040

int f0_3(string A_name_0, string A_name_8) {

if (ObjectFind(A_name_0) == -1) return (0);

if (ObjectFind(A_name_8) == -1) return (0);

if (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) {

if (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) return (1);

}

return (0);

}

// E4DB2306E8CC4DEB5830201DE61935CA

double f0_4() {

double Ld_ret_0 = 0;

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

if (OrderSelect(pos_8, SELECT_BY_POS, MODE_TRADES) == TRUE)

if (OrderSymbol() == Symbol()) Ld_ret_0 += OrderProfit();

}

return (Ld_ret_0);

}

// EA2B2676C28C0DB26D39331A336C6B92

int start() {

строка Ls_0;

double iatr_20;

double Ld_28;

double Ld_36;

int TimeBar=0;

if (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();

}

if (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();

}

if (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();

}

if (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();

}

if (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();

}

if (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++) {

if (G_ibuf_108 < 1000.0) {

TimeBar=Time;

Ls_0 = "BUY";

break;

}

if (G_ibuf_112 < 1000.0) {

TimeBar=Time;

Ls_0 = "ПРОДАВАТЬ";

break;

}

}

if (Ls_0 == "BUY" && ObjectDescription("Signal1") != "BUY") {

f0_0("BUY",TimeBar);

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

}

if (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);

if (Time[0] == G_time_192) return (0);

G_time_192 = Time[0];

int Li_12 = Bars - IndicatorCounted();

if (IndicatorCounted() > 0) Li_12++;

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

if (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;

if (Ld_28 > Gd_156 && Gi_180 == 1) Gd_156 = Ld_28;

if (Ld_36 < Gd_148 && Gi_180 == 2) Gd_148 = Ld_36;

если (Gd_156 != 0.0 && Gi_180 == 1) Gd_unused_124 = Gd_156;

if (Gd_148 != 1000.0 && Gi_180 == 2) Gd_unused_132 = Gd_148;

if (Close < Gd_156 && Gi_180 == 1) {

Gi_180 = 2;

if (bars_16 < HistoriBar / 2.0) G_ibuf_112 = High + iatr_20;

Gd_156 = 0;

}

if (Close > Gd_148 && Gi_180 == 2) {

Gi_180 = 1;

if (bars_16 < HistoriBar / 2.0) G_ibuf_108 = Low - iatr_20;

Gd_148 = 1000;

}

}

}

return (0);

}

// 52D46093050F38C27267BCE42543EF60

int deinit() {

 
wolfsch:
Привет Младен Я вижу, что вы один из тех полезных программистов, поэтому я могу спросить, не могли бы вы сделать советника из добавленного индикатора. Этот индикатор не перерисовывается и дает поразительно хорошие сигналы!

wolfsch

Должен вас разочаровать, но этот индикатор использует T3 clean and snake indicator. Так вот, T3 не перерисовывает. Но "змея" является центрированной tma и пересчитывается, что делает этот индикатор пересчитывающимся (перерисовывающимся).

PS: на самом деле это переименованный индикатор "T3 TMA combination", который затем был переименован в индикатор "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, 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) {

if (IsTesting() == FALSE && IsOptimization() == FALSE && IsVisualMode() == FALSE) {

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

if (alert) Alert("Новый сигнал " + As_0+ " @ Symbol: "+Symbol()+" & Period: "+Period()+" & Time: "+TimeToString(GetBar,TIME_MINUTES|TIME_SECONDS));

if (email) f0_2("Новый сигнал " + As_0+ " @ Symbol: "+Symbol()+" & Period: "+Period()+" & Time: "+TimeToString(GetBar,TIME_MINUTES|TIME_SECONDS));

}

}

// BE8F80182E0C983916DA7338C2C1C040

int f0_3(string A_name_0, string A_name_8) {

if (ObjectFind(A_name_0) == -1) return (0);

if (ObjectFind(A_name_8) == -1) return (0);

if (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) {

if (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) return (1);

}

return (0);

}

// E4DB2306E8CC4DEB5830201DE61935CA

double f0_4() {

double Ld_ret_0 = 0;

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

if (OrderSelect(pos_8, SELECT_BY_POS, MODE_TRADES) == TRUE)

if (OrderSymbol() == Symbol()) Ld_ret_0 += OrderProfit();

}

return (Ld_ret_0);

}

// EA2B2676C28C0DB26D39331A336C6B92

int start() {

строка Ls_0;

double iatr_20;

double Ld_28;

double Ld_36;

int TimeBar=0;

if (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();

}

if (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();

}

if (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();

}

if (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();

}

if (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();

}

if (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++) {

if (G_ibuf_108 < 1000.0) {

TimeBar=Time;

Ls_0 = "BUY";

break;

}

if (G_ibuf_112 < 1000.0) {

TimeBar=Time;

Ls_0 = "ПРОДАВАТЬ";

break;

}

}

if (Ls_0 == "BUY" && ObjectDescription("Signal1") != "BUY") {

f0_0("BUY",TimeBar);

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

}

if (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);

if (Time[0] == G_time_192) return (0);

G_time_192 = Time[0];

int Li_12 = Bars - IndicatorCounted();

if (IndicatorCounted() > 0) Li_12++;

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

if (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;

if (Ld_28 > Gd_156 && Gi_180 == 1) Gd_156 = Ld_28;

if (Ld_36 < Gd_148 && Gi_180 == 2) Gd_148 = Ld_36;

если (Gd_156 != 0.0 && Gi_180 == 1) Gd_unused_124 = Gd_156;

if (Gd_148 != 1000.0 && Gi_180 == 2) Gd_unused_132 = Gd_148;

if (Close < Gd_156 && Gi_180 == 1) {

Gi_180 = 2;

if (bars_16 < HistoriBar / 2.0) G_ibuf_112 = High + iatr_20;

Gd_156 = 0;

}

if (Close > Gd_148 && Gi_180 == 2) {

Gi_180 = 1;

if (bars_16 < HistoriBar / 2.0) G_ibuf_108 = Low - iatr_20;

Gd_148 = 1000;

}

}

}

return (0);

}

// 52D46093050F38C27267BCE42543EF60

int deinit() {

Здравствуйте Emmany4, если вы найдете оригинальный код для этого советника, то вероятно сможете добавить или исправить стрелки и алерты на покупку и продажу, но эта версия декомпилирована.

 
mrtools:
Здравствуйте Emmany4, если бы вы нашли оригинальный код этого советника, то, вероятно, смогли бы добавить или исправить стрелки и алерты на покупку и продажу, но эта версия декомпилирована.

Насколько я понимаю, это неполный декомпилированный код какой-то супертрендовой вариации (той, что использует atr, а не версию cci). Больше ничего. В любом случае, этот код, как он есть, не может работать (большие части его отсутствуют).