//1.12345 to 1.1234 // for Alpari client void tofour(double &value1, double &value2, double &value3, double &value4) { NormalizeDouble(value1, 4); NormalizeDouble(value2, 4); NormalizeDouble(value3, 4); NormalizeDouble(value4, 4); } void my_alert() { double iclose; double iopen; double ilow; double ihigh; //buy eurusd iclose = iClose("EURUSD", PERIOD_M5, 1); iopen = iOpen("EURUSD", PERIOD_M5, 1); ilow = iLow("EURUSD", PERIOD_M5, 1); ihigh = iHigh("EURUSD", PERIOD_M5, 1); tofour(iopen, iclose, ilow, ihigh); if(iclose > iopen) if(iopen == ilow) if(ihigh >= iclose) Alert("EURUSD M5 BUY"); iclose = iClose("EURUSD", PERIOD_M15, 1); iopen = iOpen("EURUSD", PERIOD_M15, 1); ilow = iLow("EURUSD", PERIOD_M15, 1); ihigh = iHigh("EURUSD", PERIOD_M15, 1); tofour(iopen, iclose, ilow, ihigh); if(iclose > iopen) if(iopen == ilow) if(ihigh >= iclose) Alert("EURUSD M15 BUY"); //buy eurjpy iclose = iClose("EURJPY", PERIOD_M5, 1); iopen = iOpen("EURJPY", PERIOD_M5, 1); ilow = iLow("EURJPY", PERIOD_M5, 1); ihigh = iHigh("EURJPY", PERIOD_M5, 1); NormalizeDouble(iopen, 2); NormalizeDouble(iclose, 2); NormalizeDouble(ilow, 2); NormalizeDouble(ihigh, 2); if(iclose > iopen) if(iopen == ilow) if(ihigh >= iclose) Alert("EURJPY M5 BUY"); iclose = iClose("EURJPY", PERIOD_M15, 1); iopen = iOpen("EURJPY", PERIOD_M15, 1); ilow = iLow("EURJPY", PERIOD_M15, 1); ihigh = iHigh("EURJPY", PERIOD_M15, 1); NormalizeDouble(iopen, 2); NormalizeDouble(iclose, 2); NormalizeDouble(ilow, 2); NormalizeDouble(ihigh, 2); if(iclose > iopen) if(iopen == ilow) if(ihigh >= iclose) Alert("EURJPY M15 BUY"); } int init() { my_alert(); return(0); } int deinit() { return(0); } int start() { init(); return(0); }вот у меня такой бред, примерно такой, щас изменила, но суть в том, разные тайм фреймы и разные валюты и если пятизначная система, преобразуем в четырех значную. Но! когда находит модель, дальше, при каждом тике вываливается сообщении, без умолку. и еще хорошо чтобы звук был, писк какой нить.
Просто суть в том, чтобы не листать таймфреймы и не циплять советника на все валютные пары
Melisa:
Просто суть в том, чтобы не листать таймфреймы и не циплять советника на все валютные пары
Просто суть в том, чтобы не листать таймфреймы и не циплять советника на все валютные пары
Во первых вы обратились не на тот форум, здесь идет обсуждение языка MQL5, а вы выложили код от MQL4. Это совершенно разные языки хотя много общего. Скорее всего вам сюда http://www.mql4.com/ru/.
Вот небольшой примерчик, не знаю точно работает или нет, в выходные нет возможности проверить. Можете попробовать в тестере в режиме визуализации,, только алерт работать не будет, он в тестере распечатывается в лог тестера.
datetime NewBar_EURUSD_M5; datetime NewBar_EURJPY_M5; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- if(NewBar("EURUSD",PERIOD_M5,NewBar_EURUSD_M5)) my_alert("EURUSD",PERIOD_M5,1); if(NewBar("EURJPY",PERIOD_M5,NewBar_EURJPY_M5)) my_alert("EURJPY",PERIOD_M5,1); //---- return(0); } //+------------------------------------------------------------------+ void my_alert(string symbol,int period,int shift) { double iclose= iClose(symbol,period,shift); double iopen = iOpen(symbol,period,shift); double ilow=iLow(symbol,period,shift); double ihigh=iHigh(symbol,period,shift); if(iclose>iopen && iopen==ilow && ihigh>iclose) Alert(symbol," ",PeriodToStr(period)," BUY"); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ string PeriodToStr(int period) { switch(period) { case 1: return("M1"); case 5: return("M5"); case 15: return("M15"); case 30: return("M30"); case 60: return("H1"); case 240: return("H4"); case 1440: return("D1"); case 10080: return("W1"); case 43200: return("MN1"); } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool NewBar(string symbol,int period,datetime &lastbar) { datetime curbar=iTime(symbol,period,0); if(lastbar!=curbar) { lastbar=curbar; return(true); } else return(false); } //+------------------------------------------------------------------+
Документация по MQL5 - языку автоматического трейдинга и тестированию торговых стратегий
- www.mql5.com
Справочник MetaQuotes Language 5 (MQL5) - Документация на MQL5.com
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Помогите пожалуйста в написание советника. Нужно чтобы советник издал звук(пробовала использовать "\a" в выводе сообщения, не помогает) при обнаружении свечной модели на разных тайм фреймах и на разных валютных парах. Я не прошу полностью написать, просто нужен старт, чтобы хотя бы на двух тайм фреймах искал вот эту модель(захват за пояс, так вроде называется) и на двух валютных парах(неважно каких). Просто пыталась, но увы( То найдет, но без остановки выдает сообщение, то вообще не видит, так как алпари, пятизначная система и последняя цифарка разная, хотя роли не играет, для меня) ну вы меня поняли. Пыталась делить на 10, чтобы избавится от 5 знака после запятой, все равно не выходит. Если не сложно, помогите чуть чуть=) Код выкладывать не буду, и смех и грех, неправильный, не работает.