Перейти к содержанию
Форекс Форум трейдеров Академии «MasterForex-V»

Создание Советника


Рекомендуемые сообщения

Помогите пожалуйста с куском кода ! заранее благодарен.

 

 

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() но как написать :blink:

 

Да и еще если есть у кого нибудь любой советник с такими функциями можете дать,а дальше я сам вставлю все свое

Изменено пользователем заглянувший
Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 200
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

Доброго времени суток.

подскажите пожалуста, как в эксперте задать работу в определенное время, ну например с 14-00 до 18-00.

Спасибо

Ссылка на комментарий
Поделиться на другие сайты

помогите пожалуйста!!! эксперт выдает ошибку

 

Вот кусок кода

 

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);}

}

}

Изменено пользователем заглянувший
Ссылка на комментарий
Поделиться на другие сайты

Большая просьба, помогите плз! Хочу поменять в советнике OP_BUY & OP_SELL на OP_SELLIMIT & OP_BUYLIMIT соответственно. Однако получается ерунда. И еще: он не дает работать другому советнику в том же терминале. Не справлюсь сам :(

Вот код :

 

 

//---- input parameters

extern 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*Po

int+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();

 

}

}

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Доброго времени

Подскажите пожалуста, я в коде эксперта указываю время работы

if (BuySignal==1&& AlterBuy!=Time[0]&& Hour()>=7 || Hour()<14)

но эксперт не реагирует на это выдавая результат за целые сутки, мож надо как то по другому

Спасибо

Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте. Помогите нарисовать в MQL отрезок ( не линию! ) по двум точкам (время1, цена1) - (время2, цена2).

В хелпе нашел только как рисовать линию, отрезок не получается :mellow:

Ссылка на комментарий
Поделиться на другие сайты

Доброго времени

Подскажите пожалуста, я в коде эксперта указываю время работы

if (BuySignal==1&& AlterBuy!=Time[0]&& Hour()>=7 || Hour()<14)

но эксперт не реагирует на это выдавая результат за целые сутки, мож надо как то по другому

Спасибо

На самом деле, условия (Час больше 7) и (Меньше 14) должно выполняться одновременно, поэтому везде должен быть предикат &&

Лучше написать вот так

if (BuySignal==1&& AlterBuy!=Time[0] && Hour()>=7 && Hour()<14)

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Уважаемые дамы и господа, прошу Вашей помощи! Не мог бы кто-нибудь изменить нижеприведенный код неперерисовывающего фрактала, так что бы он сигнализировал в отдельном окошке появление нового фрактала и указывал в каком окне произошло событие? Очень надо :unsure:

Вот код неперерисовывающегося фрактала:

 

 

 

//+------------------------------------------------------------------+

//| 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

 

//---- buffers

double 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);

}

//+------------------------------------------------------------------+

Ссылка на комментарий
Поделиться на другие сайты

подскажите пожалуйста новичку!!!

Если открыто 10 графиков, то можно чтобы один советник работал на всех по очереди сам. Или один и тотже советник применить к каждому графику???

Ссылка на комментарий
Поделиться на другие сайты

подскажите пожалуйста новичку!!!

Если открыто 10 графиков, то можно чтобы один советник работал на всех по очереди сам. Или один и тотже советник применить к каждому графику???

 

Да, нужно один и тот же советник "навесить" на каждый график. На каждом графике он будет реагировать на каждый приходящий тик инструмента данного графика. Конечно, можно "заставить" работать советник на многих инструментах (валютах), а не только на том, на который он поставлен, но это имеет свои особенности и минусы. :cool2:

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...
Подскажите пожалуста, мне нужно чтобы открывались две позиции в обе стороны, бай и сел, и чтоб они так о стояли пока обе незакроются, после чего опять две открывались в обе стороны, главно чтоб никаких действий небыло пока обе незакроются, тобиш торговал по 2 лота, выставились сел и бай, закрылись сел бай, опять выставились, опять закрылись. Изменено пользователем MORR
Ссылка на комментарий
Поделиться на другие сайты


×
×
  • Создать...