заглянувший Опубликовано 17 апреля, 2009 Жалоба Поделиться Опубликовано 17 апреля, 2009 (изменено) Помогите пожалуйста с куском кода ! заранее благодарен. if (cci<cci1 && canal > zazor && 8<Hour() && 16>Hour() && (**сюда?**>=**сюда?**)) OrderSend(Symbol(), OP_SELL, 0.1,Bid, 3, Bid + SL*Point, Bid - TP*Point,"Pips", 0, 0, Red); }} if (cci>cci1 && canal > zazor && 8<Hour() && 16>Hour() && (**сюда?**>=**сюда?**)) OrderSend(Symbol(), OP_BUY, 0.1,Ask, 3, Ask - SL*Point, Ask + TP*Point,"Pips", 0, 0, Blue); } Эксперт должен открывать две сделки в день с 8ч до 16ч,что он и делает,но сделок 5-8шт в день, а надо одну BUY и одну SELL, по каждой пере но как прописать в коде не знаю. что-то вроде этого &&(OrdersHistoryTotal() < Day(одна любая) *Symbol() но как написать Да и еще если есть у кого нибудь любой советник с такими функциями можете дать,а дальше я сам вставлю все свое Изменено 19 апреля, 2009 пользователем заглянувший Ссылка на комментарий Поделиться на другие сайты Поделиться
VADIMOFF Опубликовано 20 апреля, 2009 Жалоба Поделиться Опубликовано 20 апреля, 2009 У меня возник такой вопрос. Советник есть, но вот как его протестировать на истории? Ссылка на комментарий Поделиться на другие сайты Поделиться
dim3535dim Опубликовано 23 апреля, 2009 Жалоба Поделиться Опубликовано 23 апреля, 2009 Доброго времени суток.подскажите пожалуста, как в эксперте задать работу в определенное время, ну например с 14-00 до 18-00.Спасибо Ссылка на комментарий Поделиться на другие сайты Поделиться
bow Опубликовано 23 апреля, 2009 Жалоба Поделиться Опубликовано 23 апреля, 2009 Здравствуте! int start() { if(Hour() < 14 || Hour() >= 18) return (0); } Ссылка на комментарий Поделиться на другие сайты Поделиться
заглянувший Опубликовано 25 апреля, 2009 Жалоба Поделиться Опубликовано 25 апреля, 2009 (изменено) помогите пожалуйста!!! эксперт выдает ошибку Вот кусок кода void Open_Oder1(){if((m4+m5+m6+m1)-(m7+m8+m9+m2)>0){if(m4>m7 && SB_openEU==0){fm=OrderSend("EURUSD",OP_BUY,0.1,Ask,3,0,0,NULL,0,0,MediumBlue);}}if((m4+m5+m6+m1)-(m7+m8+m9+m2)<0){if(m4<m7 && SB_openEU==0){fm=OrderSend("EURUSD",OP_SELL,0.1,Bid,3,0,0,NULL,0,0,Gold);}}}void Open_Oder2(){if((m4+m5+m6+m1)-(m7+m8+m9+m2)>0){if(m5>m8 && SB_openGU==0){fm=OrderSend("GBPUSD",OP_BUY,0.1,Ask,3,0,0,NULL,0,0,MediumBlue);}}if((m4+m5+m6+m1)-(m7+m8+m9+m2)<0){if(m5<m8 && SB_openGU==0){fm=OrderSend("GBPUSD",OP_SELL,0.1,Bid,3,0,0,NULL,0,0,Gold);}}} Изменено 27 апреля, 2009 пользователем заглянувший Ссылка на комментарий Поделиться на другие сайты Поделиться
заглянувший Опубликовано 27 апреля, 2009 Жалоба Поделиться Опубликовано 27 апреля, 2009 Все спасибо разобрался! Ссылка на комментарий Поделиться на другие сайты Поделиться
nikkola Опубликовано 2 мая, 2009 Жалоба Поделиться Опубликовано 2 мая, 2009 Большая просьба, помогите плз! Хочу поменять в советнике OP_BUY & OP_SELL на OP_SELLIMIT & OP_BUYLIMIT соответственно. Однако получается ерунда. И еще: он не дает работать другому советнику в том же терминале. Не справлюсь сам :(Вот код : //---- input parametersextern int start=21;extern int end=9;extern int period=36; extern double SLpp=300; //+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int spread, stoplevel, freeze;int handle;int init() {//---- stoplevel=MarketInfo(Symbol(), MODE_STOPLEVEL)+1; spread=MarketInfo(Symbol(), MODE_SPREAD); freeze=MarketInfo(Symbol(), MODE_FREEZELEVEL)+1; SLpp/=100; //---- return(0); }//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit() {//----//---- return(0); }//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int tmp, tc, st, et, dtmp;int objs=0;double high, low, raz;bool op=false, work=false;int start() {//---- tc=TimeCurrent(); //*********************** int d1bars=iBars(NULL,PERIOD_D1); if(tc>=et) { if(dtmp!=d1bars) { int dow=0; if(start+end > 24) {dow=DayOfWeek();} int dt=iTime(NULL,PERIOD_D1,0); st=dt+start*3600; et=dt+(start+end)*3600; if(dow==5) et+=172800; } dtmp=d1bars; } if(tc>=st && tc<=et) work=true; else work=false; //*********************** if(tmp!=Bars) { high=High[iHighest(NULL,0,MODE_HIGH,period,1)]; low=Low[iLowest(NULL,0,MODE_LOW,period,1)]; raz=((high-low)/Point)*SLpp; if(raz<stoplevel) raz=stoplevel; } tmp=Bars; if(Bid>=high) { close_all(true); if(work && OrdersTotal()==0) sell(); } if(Bid<=low) { close_all(false); if(work && OrdersTotal()==0) buy(); } //---- return(0); }//+------------------------------------------------------------------+int sell(){int t=-1; t=OrderSend(Symbol(),OP_SELLLIMIT,Lots,Ask+Point*16,0,NormalizeDouble(Ask+raz*Point+SLmargin*Point, Digits),TPP,"order_sell",29072007,0,0x0000FF);return(t);} int buy(){int t=-1;t=OrderSend(Symbol(),OP_BUYLIMIT,Lots,Bid-Point*16,0,NormalizeDouble(Bid-raz*Point-SLmargin*Point, Digits),TPP,"order_buy",19072007,0,0xFF0000);return(t);} void close_all(bool fl){int tot=OrdersTotal();for(int i=0;i<tot;i++) { OrderSelect(i,SELECT_BY_POS); if(OrderType()==0 && fl) OrderClose(OrderTicket(),OrderLots(),Bid,0); if(OrderType()==1 && !fl) OrderClose(OrderTicket(),OrderLots(),Ask,0); if(OrderType()==3 && fl) OrderClose(OrderTicket(); if(OrderType()==4 && !fl) OrderClose(OrderTicket(); }} Ссылка на комментарий Поделиться на другие сайты Поделиться
dim3535dim Опубликовано 14 мая, 2009 Жалоба Поделиться Опубликовано 14 мая, 2009 Доброго времениПодскажите пожалуста, я в коде эксперта указываю время работыif (BuySignal==1&& AlterBuy!=Time[0]&& Hour()>=7 || Hour()<14)но эксперт не реагирует на это выдавая результат за целые сутки, мож надо как то по другомуСпасибо Ссылка на комментарий Поделиться на другие сайты Поделиться
Лорд Опубликовано 14 мая, 2009 Жалоба Поделиться Опубликовано 14 мая, 2009 Здравствуйте. Помогите нарисовать в MQL отрезок ( не линию! ) по двум точкам (время1, цена1) - (время2, цена2).В хелпе нашел только как рисовать линию, отрезок не получается Ссылка на комментарий Поделиться на другие сайты Поделиться
Лорд Опубликовано 14 мая, 2009 Жалоба Поделиться Опубликовано 14 мая, 2009 Вопрос снят. Нашел всё-таки: нужно добавить строку ObjectSet("trend" ,OBJPROP_RAY,false) Ссылка на комментарий Поделиться на другие сайты Поделиться
max_xxx Опубликовано 18 мая, 2009 Жалоба Поделиться Опубликовано 18 мая, 2009 Доброго времениПодскажите пожалуста, я в коде эксперта указываю время работыif (BuySignal==1&& AlterBuy!=Time[0]&& Hour()>=7 || Hour()<14)но эксперт не реагирует на это выдавая результат за целые сутки, мож надо как то по другомуСпасибоНа самом деле, условия (Час больше 7) и (Меньше 14) должно выполняться одновременно, поэтому везде должен быть предикат &&Лучше написать вот такif (BuySignal==1&& AlterBuy!=Time[0] && Hour()>=7 && Hour()<14) Ссылка на комментарий Поделиться на другие сайты Поделиться
makskeep Опубликовано 8 июня, 2009 Жалоба Поделиться Опубликовано 8 июня, 2009 Уважаемые дамы и господа, прошу Вашей помощи! Не мог бы кто-нибудь изменить нижеприведенный код неперерисовывающего фрактала, так что бы он сигнализировал в отдельном окошке появление нового фрактала и указывал в каком окне произошло событие? Очень надо Вот код неперерисовывающегося фрактала: //+------------------------------------------------------------------+//| Fractals.mq4 |//| Copyright © 2005, MetaQuotes Software Corp. |//| Update by Kharko |//+------------------------------------------------------------------+#property copyright "Copyright © 2005, MetaQuotes Software Corp."#property link "http://www.metaquotes.net" #property indicator_chart_window#property indicator_buffers 2#property indicator_color1 Red#property indicator_color2 Blue#property indicator_width1 1#property indicator_width2 1//---- input parameters //---- buffersdouble ExtUpFractalsBuffer[];double ExtDownFractalsBuffer[];//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init() {//---- indicator buffers mapping SetIndexBuffer(0,ExtUpFractalsBuffer); SetIndexBuffer(1,ExtDownFractalsBuffer); //---- drawing settings SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,217); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,218);//---- SetIndexEmptyValue(0,0.0); SetIndexEmptyValue(1,0.0);//---- name for DataWindow SetIndexLabel(0,"Fractal Up"); SetIndexLabel(1,"Fractal Down");//---- initialization done return(0); }//+------------------------------------------------------------------+//| Custor indicator deinitialization function |//+------------------------------------------------------------------+int deinit() {//---- TODO: add your code here //---- return(0); }//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+int start() { int i,nCountedBars; bool bFound; double dCurrent; nCountedBars=IndicatorCounted();//---- last counted bar will be recounted i=Bars-nCountedBars+3;//----Up and Down Fractals while(i>=3) { //----Fractals up bFound=false; dCurrent=High; if(dCurrent>High[i+1] && dCurrent>High[i+2] && dCurrent>High[i-1] && dCurrent>High[i-2] && Volume[i-3]>0) { bFound=true; ExtUpFractalsBuffer=dCurrent; } //----6 bars Fractal if(!bFound && (Bars-i-1)>=3) { if(dCurrent==High[i+1] && dCurrent>High[i+2] && dCurrent>High[i+3] && dCurrent>High[i-1] && dCurrent>High[i-2] && Volume[i-3]>0) { bFound=true; ExtUpFractalsBuffer=dCurrent; } } //----7 bars Fractal if(!bFound && (Bars-i-1)>=4) { if(dCurrent>=High[i+1] && dCurrent==High[i+2] && dCurrent>High[i+3] && dCurrent>High[i+4] && dCurrent>High[i-1] && dCurrent>High[i-2] && Volume[i-3]>0) { bFound=true; ExtUpFractalsBuffer=dCurrent; } } //----8 bars Fractal if(!bFound && (Bars-i-1)>=5) { if(dCurrent>=High[i+1] && dCurrent==High[i+2] && dCurrent==High[i+3] && dCurrent>High[i+4] && dCurrent>High[i+5] && dCurrent>High[i-1] && dCurrent>High[i-2] && Volume[i-3]>0) { bFound=true; ExtUpFractalsBuffer=dCurrent; } } //----9 bars Fractal if(!bFound && (Bars-i-1)>=6) { if(dCurrent>=High[i+1] && dCurrent==High[i+2] && dCurrent>=High[i+3] && dCurrent==High[i+4] && dCurrent>High[i+5] && dCurrent>High[i+6] && dCurrent>High[i-1] && dCurrent>High[i-2] && Volume[i-3]>0) { bFound=true; ExtUpFractalsBuffer=dCurrent; } } //----Fractals down bFound=false; dCurrent=Low; if(dCurrent<Low[i+1] && dCurrent<Low[i+2] && dCurrent<Low[i-1] && dCurrent<Low[i-2] && Volume[i-3]>0) { bFound=true; ExtDownFractalsBuffer=dCurrent; } //----6 bars Fractal if(!bFound && (Bars-i-1)>=3) { if(dCurrent==Low[i+1] && dCurrent<Low[i+2] && dCurrent<Low[i+3] && dCurrent<Low[i-1] && dCurrent<Low[i-2] && Volume[i-3]>0) { bFound=true; ExtDownFractalsBuffer=dCurrent; } } //----7 bars Fractal if(!bFound && (Bars-i-1)>=4) { if(dCurrent<=Low[i+1] && dCurrent==Low[i+2] && dCurrent<Low[i+3] && dCurrent<Low[i+4] && dCurrent<Low[i-1] && dCurrent<Low[i-2] && Volume[i-3]>0) { bFound=true; ExtDownFractalsBuffer=dCurrent; } } //----8 bars Fractal if(!bFound && (Bars-i-1)>=5) { if(dCurrent<=Low[i+1] && dCurrent==Low[i+2] && dCurrent==Low[i+3] && dCurrent<Low[i+4] && dCurrent<Low[i+5] && dCurrent<Low[i-1] && dCurrent<Low[i-2] && Volume[i-3]>0) { bFound=true; ExtDownFractalsBuffer=dCurrent; } } //----9 bars Fractal if(!bFound && (Bars-i-1)>=6) { if(dCurrent<=Low[i+1] && dCurrent==Low[i+2] && dCurrent<=Low[i+3] && dCurrent==Low[i+4] && dCurrent<Low[i+5] && dCurrent<Low[i+6] && dCurrent<Low[i-1] && dCurrent<Low[i-2] && Volume[i-3]>0) { bFound=true; ExtDownFractalsBuffer=dCurrent; } } i--; }//---- return(0); }//+------------------------------------------------------------------+ Ссылка на комментарий Поделиться на другие сайты Поделиться
alex68rus Опубликовано 9 июня, 2009 Жалоба Поделиться Опубликовано 9 июня, 2009 подскажите пожалуйста новичку!!!Если открыто 10 графиков, то можно чтобы один советник работал на всех по очереди сам. Или один и тотже советник применить к каждому графику??? Ссылка на комментарий Поделиться на другие сайты Поделиться
Shu Опубликовано 10 июня, 2009 Жалоба Поделиться Опубликовано 10 июня, 2009 подскажите пожалуйста новичку!!!Если открыто 10 графиков, то можно чтобы один советник работал на всех по очереди сам. Или один и тотже советник применить к каждому графику??? Да, нужно один и тот же советник "навесить" на каждый график. На каждом графике он будет реагировать на каждый приходящий тик инструмента данного графика. Конечно, можно "заставить" работать советник на многих инструментах (валютах), а не только на том, на который он поставлен, но это имеет свои особенности и минусы. Ссылка на комментарий Поделиться на другие сайты Поделиться
MORR Опубликовано 20 июня, 2009 Жалоба Поделиться Опубликовано 20 июня, 2009 (изменено) Подскажите пожалуста, мне нужно чтобы открывались две позиции в обе стороны, бай и сел, и чтоб они так о стояли пока обе незакроются, после чего опять две открывались в обе стороны, главно чтоб никаких действий небыло пока обе незакроются, тобиш торговал по 2 лота, выставились сел и бай, закрылись сел бай, опять выставились, опять закрылись. Изменено 20 июня, 2009 пользователем MORR Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения