Programmer 33 Author Share Posted September 3, 2008 To касса: помогите пожалуйста вставить звуковой сигнал на бай и на селл с регулировкой количества повторений по нулевому бару в этот индикатор это моё первое знакомство с языком.не могу разобраться. Немного терпения... Делается это так: //+------------------------------------------------------------------+ //| Lutor_stop.mq4 | //| [url]http://www.indic.ru[/url] | //| 2006 | //+------------------------------------------------------------------+ #property copyright "[url]http://www.indic.ru[/url]" #property link "[url]http://www.indic.ru[/url]" #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 Lime // up #property indicator_color2 Red // down extern double KirPER=10; [b]extern int AlertCount = 5;[/b] double cb,valuel,valueh,CurrentBar; double Kir ,Hi, Lo, KirUp, KirDn,mode,cnt,cnt1,cur,kr,no; double ExtMapBuffer1[]; // up double ExtMapBuffer2[]; // down int loopbegin; [b]datetime lastbar = 0; int AlertCountTemp = 0;[/b] //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { IndicatorBuffers(2); //---- drawing settings SetIndexBuffer(0,ExtMapBuffer1);//bbMacd line SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2); SetIndexBuffer(1,ExtMapBuffer2);//Upperband line SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,2); IndicatorShortName("Lutor ("+KirPER+"), "+valueh+","+valuel); SetIndexLabel(0,"Lutor Up"); SetIndexLabel(1,"Lutor Down"); //---- indicators //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int limit; int counted_bars=IndicatorCounted(); //---- check for possible errors if(counted_bars<0) return(-1); //---- last counted bar will be recounted if(counted_bars>0) counted_bars--; [b] if(lastbar < Time[0]) { AlertCountTemp = AlertCount; lastbar = Time[0]; }[/b] loopbegin = Bars-1; for(int i = loopbegin; i >= 0; i--) { if (Kir<1) { Hi=Close[i]; Lo=Close[i]; Kir=1; } cur=(Close[i]); if (cur > (Hi+KirPER * Point)) { Kir=Kir+1; Hi=cur; Lo=cur-KirPER*Point; KirUp=1; KirDn=0; kr=kr+1; no=0; } if (cur < (Lo-KirPER*Point)) { Lo=cur; Hi=cur+KirPER*Point; KirUp=0; KirDn=1; Kir=Kir+1; no=no+1; kr=0; } valueh=kr; ExtMapBuffer1[i]=valueh;//XO up if (valueh < 0) { ExtMapBuffer1[i] = 0; } if (valueh > 0) { ExtMapBuffer1[i] = 1; [b]if(i==0 && AlertCountTemp > 0) {Alert("BUY SIGNAL"); AlertCountTemp --;}[/b] } valuel=0-no; ExtMapBuffer2[i]=valuel;// XO down if (valuel > 0) { ExtMapBuffer2[i] = 0; } if (valuel < 0) { ExtMapBuffer2[i] = -1; [b]if(i==0 && AlertCountTemp > 0) {Alert("SELL SIGNAL"); AlertCountTemp --;}[/b] } } //---- return(0); } //+------------------------------------------------------------------+ Platinum_stop v2.0.mq4 Quote Link to post Share on other sites
woldemar 0 Share Posted September 5, 2008 Здравствуйте, господа! Может ктонибудь может пролить свет на следующий вопрос(пробовал связаться с тех. поддержкой Альпари, но меня оттуда отправили на форум). В торговой платформе у меня установлен эксперт , до недавнего времени эксперт "светился" , но потом вдруг, "светится" перестал (стал серым , но сигналы продолжает подавать), какая может быть причина данному явлению, и стоит ли на нее заострять внимание? Да, небольшое "но", у данного эксперта отсутствует файл с расширением mq4. Спасибо Quote Link to post Share on other sites
Igonter 404 Share Posted September 5, 2008 Да, небольшое "но", у данного эксперта отсутствует файл с расширением mq4. Спасибо Вот в этом и причина... Проблемы будут в будущем, когда версия терминала сменится - а это обычно происходит раз в пару месяцев - то, возможно, перестанет работать эксперт. Потому что исходного кода нет для перекомпиляции (mq4) Quote Link to post Share on other sites
Programmer 33 Author Share Posted September 8, 2008 To касса: Перенёс в http://forum.alpari-idc.ru/showthread.php?t=30571 Quote Link to post Share on other sites
vector77 0 Share Posted September 8, 2008 Подскажите начинающему. MQL4 - может ли вызывать DLL, написанную на C++ для дальнейшего использования ? Спасибо. Quote Link to post Share on other sites
CrazyMama 0 Share Posted September 8, 2008 Достал импортер котировок в Investor Dreams, и не могу понять почему он не пашет... Может кто подскажет? #property copyright #property link " #property indicator_chart_window int init() { return(0); } int deinit() { return(0); } int start() { int counted_bars=IndicatorCounted(); int handle, bars=Bars; handle = FileOpen( Symbol()+"_"+Period()+".prn", FILE_CSV|FILE_WRITE, ","); if(handle>0) { FileWrite(handle, "<DTYYYYMMDD>","<TIME>","<OPEN>","<HIGH>","<LOW>","<CLOSE>","<VOL>" ); for(int i=(bars-1); i>=0; i--){ int YYYY=TimeYear( Time ); int MM=TimeMonth( Time ); int DD=TimeDay( Time ); int H=TimeHour( Time ); int M=TimeMinute( Time ); int S=TimeSeconds( Time ); if( MM<10 ) string MMM="0"+MM; else MMM=MM; if( DD<10 ) string DDD="0"+DD; else DDD=DD; if( H<10 ) string HOUR="0"+H; else HOUR=H; if( M<10 ) string MINUTE="0"+M; else MINUTE=M; if( S<10 ) string SECONDS="0"+S; else SECONDS=S; FileWrite(handle, YYYY+MMM+DDD, HOUR+MINUTE+SECONDS, Open, High, Low, Close, Volume); } FileClose(handle); // Print( "\t В каталоге MetaTraider4\Experts\files создан файл "+Symbol()+"_"+Period()+".prn" ); Sleep(10000); } return(0); } //+------------------------------------------------------------------+ Quote Link to post Share on other sites
Wowa 8 Share Posted September 8, 2008 Подскажите начинающему.MQL4 - может ли вызывать DLL, написанную на C++ для дальнейшего использования ? Спасибо. Могут. Справочник MQL4-Выполнение программ-Вызов импортируемых функций Quote Мы сами знаем, что проблема не имеет решения. Мы хотим знать, как ее решать. (с) К. Хунта Link to post Share on other sites
vector77 0 Share Posted September 9, 2008 Спасибо Wowa. Подскажи чайнику откуда можно закачать документацию по языку, хотя бы тот же Справочник MQL4 или какие-нить полезные примочки ввиде примеров. Quote Link to post Share on other sites
Wowa 8 Share Posted September 9, 2008 В Метатрейдере выбираете пункт меню Сервис-Редактор MetaQuotes Language или кнопку на тулбаре или F4. Откроется Метаэдитор, внизу окно с закладкой справка Quote Мы сами знаем, что проблема не имеет решения. Мы хотим знать, как ее решать. (с) К. Хунта Link to post Share on other sites
inco 0 Share Posted September 9, 2008 привет подскажите, как узнать, открывался ли в конкретный день ордер, и его данные (время, в какую сторону и т.д.) по какой функции почитать? спасибо Quote Link to post Share on other sites
Shu 0 Share Posted September 9, 2008 привет подскажите, как узнать, открывался ли в конкретный день ордер, и его данные (время, в какую сторону и т.д.) по какой функции почитать? OrdersHistoryTotal() OrderSelect(int index, int select, int pool=MODE_HISTORY) OrderOpenTime() OrderType() Quote люблю пиво, стреляю, пишу советники Link to post Share on other sites
касса 2 Share Posted September 12, 2008 люди.подскажите плиз где найти советника выставляющего отложенные ордера вместо тех которые исполнились по тейк профиту.изначально ордера выставляются вручную. Quote Link to post Share on other sites
касса 2 Share Posted September 13, 2008 люди.подскажите плиз где найти советника выставляющего отложенные ордера вместо тех которые исполнились по тейк профиту.изначально ордера выставляются вручную. неужели таких не существует? Quote Link to post Share on other sites
Shu 0 Share Posted September 13, 2008 неужели таких не существует? да, может и существует! просто не очень конкретно поставлена задача. в реальной работе "условий" гораздо больше выплывет.. вон - совсем недавно Programmer в одном из советников реализовал установку отложенного ордера вместо закрытого по стоп-лоссу (если я путаю - заранее прошу прощения), чего ж тут - можно написать что угодно. Quote люблю пиво, стреляю, пишу советники Link to post Share on other sites
inco 0 Share Posted September 15, 2008 Можно ли одновременно запустить несколько метатрейдеров на разных счетах? Например, мне нужно потестить разные параметры одной системы. хотелось бы это сделать одновременно. Quote Link to post Share on other sites
~~SOM~~ 1 Share Posted September 15, 2008 Можно. Просто скопируйте директорию, в которой он установлен. Quote Link to post Share on other sites
inco 0 Share Posted September 18, 2008 спасибо! еще такой вопрос... Нужно учитывать в программе определенную переменную, которую можно задать внутри самой программы. Эта переменная должна работать весь день и не меняться при инициализации программы. Кроме этого, она должна быть различная для разных запущенных копий метатрейдера. подскажите, пожалуйста, какую функцию использовать в таком случае? спасибо Quote Link to post Share on other sites
Shu 0 Share Posted September 18, 2008 спасибо!Нужно учитывать в программе определенную переменную, которую можно задать внутри самой программы. Эта переменная должна работать весь день и не меняться при инициализации программы. Кроме этого, она должна быть различная для разных запущенных копий метатрейдера. подскажите, пожалуйста, какую функцию использовать в таком случае? спасибо глобальные переменные и используйте! :wink: datetime GlobalVariableSet(string name, double value) Quote люблю пиво, стреляю, пишу советники Link to post Share on other sites
inco 0 Share Posted September 18, 2008 а как можно из кода программы выключить советника из торговли? Quote Link to post Share on other sites
Programmer 33 Author Share Posted September 18, 2008 To inco: Поставить переменную-флаг и проверять её в начале ф-ии start(). Quote Link to post Share on other sites
Yudjin78 9 Share Posted September 20, 2008 Подскажите Кирилл, как осуществить что-бы ,открытие второго ордера происходило не ранее чем через Х минут от открытия первого, даже если критерий по открытию второго ордера получен ранее. Quote Link to post Share on other sites
Programmer 33 Author Share Posted September 20, 2008 To Yudjin78: Создать переменную-flag (static или глобальную) и записывать в неё время открытия последнего ордера. Перед открытием очередного ордера вставить код: if(TimeCurrent() < flag+X*60) Sleep( (flag+X*60 - TimeCurrent())*1000 ); Если же Вам нужна не просто задержка, а для Вас критичны показания эксперта именно в момент открытия сделки, то можно поставить временной фильтр. Просто прямо перед ф-ей выставления ордера поставьте условие: if(TimeCurrent() >= flag+X*60) Quote Link to post Share on other sites
AndreyAn 0 Share Posted September 21, 2008 Здравствуйте. Прошу подсказки на такой вопрос. Программа выставляет отложенный ордер, после его активации, через определённый промежуток времени (например через час после активации) , возникает необходимость его закрыть не дожидаясь срабатывания StopLoss или TakeProfit. Помогите пожалуйста,если можно, примером кода. Спасибо. Quote :cowboy:www.forexfvt.16mb.com Link to post Share on other sites
Shu 0 Share Posted September 21, 2008 Здравствуйте. Прошу подсказки на такой вопрос. Программа выставляет отложенный ордер, после его активации, через определённый промежуток времени (например через час после активации) , возникает необходимость его закрыть не дожидаясь срабатывания StopLoss или TakeProfit. Помогите пожалуйста,если можно, примером кода.Спасибо. сравнивай текущее время со временем открытия ордера! datetime TimeCurrent() datetime OrderOpenTime() Quote люблю пиво, стреляю, пишу советники Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.