omissamf: Я хотел бы изменить этот код
- Так что же вас останавливает. Научитесь кодировать или заплатите кому-нибудь. Мы не собираемся кодировать это за вас. Мы готовы помочь вам, если вы опубликуете свою попытку (используя SRC) и суть вашей проблемы.
- Пробовали ли вы
BarStart = Time[0]; Sleep(3000); RefreshRates();
Здравствуйте, WHRoeder, спасибо за ответ. Я прошу прощения за свое поведение, но я не хотел никого обидеть и проявить неуважение. Я весь день пытался изменить код, чтобы добиться этого, но у меня ничего не получилось. Это начало изучения MQL4 . Я снова прошу прощения у администраторов. Приветствую, Массимо
Здравствуйте WHRoeder, я пытался, но не получается!!! я пробовал всеми способами, но не понимаю где я ошибаюсь!!!
В любом случае, спасибо за все, Массимо.
Я не вижу предупреждения в вашем коде.
Здравствуйте GunRai, я вам выслал полный код, поэтому объясню. Я не смог отложить подтверждение условий открытия свечи (как это делает сейчас), но через 3 секунды, даже по предложению WHRoeder. Я не могу понять где я ошибаюсь !!!
Спасибо, Макс.
//+------------------------------------------------------------------+ //| RSI 70-30.mq4 | //| Massimo | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Massimo" #property link "https://www.mql5.com" #property version "1.00" #include <stdlib.mqh> #include <stderror.mqh> //--- indicator settings #property indicator_chart_window #property indicator_buffers 2 #property indicator_type1 DRAW_ARROW #property indicator_width1 1 #property indicator_color1 0xFFAA00 #property indicator_label1 "Buy" #property indicator_type2 DRAW_ARROW #property indicator_width2 1 #property indicator_color2 0x0000FF #property indicator_label2 "Sell" static datetime BarStart=0; //--- indicator buffers double Buffer1[]; double Buffer2[]; datetime time_alert; //used when sending alert extern bool Audible_Alerts = true; double myPoint; //initialized in OnInit void myAlert(string type, string message) { if(type == "print") Print(message); else if(type == "error") { Print(type+" | RSI 30-70 @ "+Symbol()+","+Period()+" | "+message); } else if(type == "order") { } else if(type == "modify") { } else if(type == "indicator") { if(Audible_Alerts) Alert(type+" | RSI 30-70 @ "+Symbol()+","+Period()+" | "+message); } } //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { IndicatorBuffers(2); SetIndexBuffer(0, Buffer1); SetIndexEmptyValue(0, 0); SetIndexArrow(0, 241); SetIndexBuffer(1, Buffer2); SetIndexEmptyValue(1, 0); SetIndexArrow(1, 242); //initialize myPoint myPoint = Point(); if(Digits() == 5 || Digits() == 3) { myPoint *= 10; } return(INIT_SUCCEEDED); } //_____________________________________________ //_____________________________________________ int start(){ if (BarStart !=Time[0]) { BarStart = Time[0]; Sleep(3000); RefreshRates(); //this code don't work // //Indicator Buffer 1 if(iRSI(NULL, PERIOD_CURRENT, 2, PRICE_CLOSE, 0) < 30 ) { Buffer1[0] = Low[0] - iATR(NULL, PERIOD_CURRENT, 14, 0); //Set indicator value at Candlestick Low - Average True Range if(0 == 0 && Time[0] != time_alert) { myAlert("indicator", "Buy"); time_alert = Time[0]; } //Instant alert, only once per bar } else { Buffer1[0] = 0; } //Indicator Buffer 2 if(iRSI(NULL, PERIOD_CURRENT, 2, PRICE_CLOSE, 0) > 70 ) { Buffer2[0] = High[0] + iATR(NULL, PERIOD_CURRENT, 14, 0); //Set indicator value at Candlestick High + Average True Range if(0 == 0 && Time[0] != time_alert) { myAlert("indicator", "Sell"); time_alert = Time[0]; } //Instant alert, only once per bar } else { Buffer2[0] = 0; } } return(0); } //+------------------------------------------------------------------+
Вы правы; вы запускаете индикатор. | int start(){ if (BarStart !=Time[0]) { BarStart = Time[0]; Sleep(3000); RefreshRates(); //this code don't work |
Попробуйте следующее | #define MAX_DATETIME D'3000.12.31 23:59:59' // 32,535,215,999 #define MIN_DATETIME D'1970.01.01 00:00:00' // Zero. int start(){ static datetime alertTime = MAX_DATETIME; if(TimeCurrent() > alertTime){ alertTime = MAX_DATETIME; Alert(...); } if (BarStart !=Time[0]) { BarStart = Time[0]; : if(condition) alertTime = TimeCurrent() + 3; // Delay |
WHRoeder:
Спасибо, сейчас я изучу код, который вы мне выложили, а потом сообщу вам.Вы правы; вы запускаете индикатор. | |
Попробуйте следующее |
А пока- бесконечная благодарность, Массимо.
WHRoeder:
WHRoeder Здравствуйте, я попытался изменить код с помощью ваших инструкций. Я пробовал разные способы и вот то , что вы присылаете это то, что у вас не ошибки, но задержка около пяти секунд есть только звук sull'alert, в то время как стрелки продолжают появляться точное открытие свечи.Вы правы; вы используете индикатор. | |
y thi |
Здравствуйте и спасибо, Массимо.
#define MAX_DATETIME D'3000.12.31 23:59:59' // 32,535,215,999 #define MIN_DATETIME D'1970.01.01 00:00:00' // Zero. int start(){ static datetime alertTime = MAX_DATETIME; if (TimeCurrent() > alertTime) { alertTime = MAX_DATETIME; Alert(“ ATTENTION!!!!); } if (BarStart !=Time[0]) { BarStart = Time[0]; // //Indicator Buffer 1 if(iRSI(NULL, PERIOD_CURRENT, 2, PRICE_CLOSE, 0) < 30 ) { alertTime = TimeCurrent() + 3; Buffer1[0] = Low[0] - iATR(NULL, PERIOD_CURRENT, 14, 0); } else { Buffer1[0] = 0; } //Indicator Buffer 2 if(iRSI(NULL, PERIOD_CURRENT, 2, PRICE_CLOSE, 0) > 70 ) { alertTime = TimeCurrent() + 3; Buffer2[0] = High[0] + iATR(NULL, PERIOD_CURRENT, 14, 0); } else { Buffer2[0] = 0; } } return(0); } //+------------------------------------------------------------------+
omissamf: есть только звук sull'alert,
- Не знаю, что вы имели в виду.
Alert(“ ATTENTION!!!!); }
Попробуйте/выложите код, который компилируется.
WHRoeder:
Я поставил ATTENTION !!! потому что именно он появляется при звуковом/визуальном оповещении, но я пытаюсь, с вашей помощью, задержать наступление Стрелки на несколько секунд. В этом случае. Внимание !!! Он появится через 5 секунд, в то время как Стрелки появляются только открыть свечу.- Не знаю, что вы имели в виду.
- Попробуйте/выложите код, который компилируется.
Спасибо за все, Массимо.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я хотел бы модифицировать этот код таким образом, чтобы алерт, вместо того, чтобы появляться на открытии свечи, определял условия через несколько секунд.
Спасибо за все, Массимо.