помогите доработать советника! - страница 2

 
chut писал (а) >>
2 nemo-x http://forum.fortrader.ru/showthread.php?t=2260

Может все в отношении. Я не люблю переделывать чужих экспертов, не люблю переделывать чужие индикаторы.

А если приходится делать, то и авторство оставляю старое. Если нет коренных изменений. Так, поправил только что-то.

Если изменена логика, то добавляю себя. Но автора я не трогаю.

Просто советник без автора, или индикатор без него -как книжка без обложки.

И мне частенько жаль, когда авторы не подписывают свои работы.

 
 

Ну вот вернулся...

Взял советник rid...

В понедельник прогоню с параметрами по умолчанию,посмотрим, что за зверь...

Но закрытие по Н4...Меня как-то смутило...Ну какой нормальный человек станет использовать советник на ТАКОМ ТФ ???...Ну максимум Н1...

При Н4 управление любой системой торговли можно и нужно вести вручную,если это, конечно система...

Не будете же целый месяц гонять комп, в ожидании сигнала...А потом ещё месяц в ожидании следующего...

 

RID...Последний вариант советника, тот который по сигналам параболика должен работать,признаков жизни за два часа на минутах не подал вообще...Поставил как есть,режимы по умолчанию...Как его вызвать к жизни ???

Может чего поменять надо в настройках...Или из-за ТФ ???

 
nemo-x писал (а) >>

Не будете же целый месяц гонять комп, в ожидании сигнала...А потом ещё месяц в ожидании следующего...

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

И есть визуальный режим. rid об этом писал.

 
goldtrader писал (а) >>

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

И есть визуальный режим. rid об этом писал.

Я про тестер понимаю,хотя и не верю в полезность тестирования на истории...

Я имел ввиду работу в реале...Там то секундами и минутами не отделаешься...

Там Н4 - это,и есть Н4...Одна свеча в четыре часа...

А если не ставить задачу советнику работать в реале - то зачем тогда и советник нужен,даже пусть он на истории трижды прибылен...

 

Я тут на фортрадере продолжаю воевать с советником на параболике...

Упёрлись в непроходимую стену...

Советник по сигналу параболика ставит отложенный ордер и подтягивает его с изменением сигнала...После появления противоположного сигнала параболика срабатывает выставленный ранее отложенный ордер и ставится новый отложенный, уже по новому сигналу параболика...Всё ясно,просто,понятно и прибыльно до тех пор,пока не сработает отложенный ордер в другую сторону...Как только появляется две открытые в разные стороны реальные позиции советник останавливается и ждёт, пока ему не закроют открытые позы...А ОН ДОЛЖЕН ПРОДОЛЖАТЬ ВЫСТАВЛЯТЬ ОТЛОЖЕННЫЕ ОРДЕРА по новым сигналам параболика!!!! Нехороший человек...

Вот его код...

Подскажите,где у него та проклятая строчка,которая запрещает ему продолжать работу при наличии открытых ордеров...Или что ему надо дописать, чтобы он мог продолжать работу при уже открытых ордерах...Вообщем - помогите вылечить...

Кстати,аналогичный *глюк* встретился уже во втором советнике от разных программистов...

//+------------------------------------------------------------------+
//| ProstoSAR.mq4 |
//| FORTRADER.RU |
//| http://FORTRADER.RU |
//+------------------------------------------------------------------+
#property copyright "FORTRADER.RU"
#property link "http://FORTRADER.RU"

extern int TP=50;
extern int SL=25;
extern double Lots=0.1;


extern double step=0.02;
extern double maximum=0.2;

extern int workbars=0;

int start()
{

op();
ap();
ip();

return(0);
}

/******************************************************************************************/
int op()
{int l,o;
double sar= iSAR(NULL,0,step,maximum,workbars);

l=chekposlimit(1); o=chekposstop(1);
if(l!=1 && o!=1 && sar>Close[0]){OrderSend(Symbol(),OP_BUYSTOP,Lots,NormalizeDouble(sar,4),3,sar-SL*Point,sar+TP*Point,"FORTRADER.RU",16384,10,Green);}
l=chekposlimit(2); o=chekposstop(2);
if(l!=2 && o!=2 && sar<Close[0]){OrderSend(Symbol(),OP_SELLSTOP,Lots,NormalizeDouble(sar,4),3,sar+SL*Point,sar-TP*Point,"FORTRADER.RU",16384,10,Green);}

return(0);
}

int ap()
{double sl,tp;int i;
double pb=iSAR(NULL,0,step,maximum,workbars);

for( i=1; i<=OrdersTotal(); i++)
{
if (OrderSelect(i-1,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUYSTOP && NormalizeDouble(pb,4)<NormalizeDouble(OrderOpenPrice(),4) && OrderSymbol()==Symbol())
{
OrderModify( OrderTicket(), NormalizeDouble(pb,4),NormalizeDouble(pb-SL*Point,4), NormalizeDouble(pb+TP*Point,4),0,White);
}
}
}

return(0);
}

int ip()
{double sl,tp;int i;
double pb=iSAR(NULL,0,step,maximum,workbars);

for( i=1; i<=OrdersTotal(); i++)
{
if (OrderSelect(i-1,SELECT_BY_POS)==true)
{
if(OrderType()==OP_SELLSTOP && NormalizeDouble(pb,4)>NormalizeDouble(OrderOpenPrice(),4) && OrderSymbol()==Symbol())
{
OrderModify( OrderTicket(), NormalizeDouble(pb,4), NormalizeDouble(pb+SL*Point,4), NormalizeDouble(pb-TP*Point,4),0,White);
}
}
}

return(0);
}


int chekposlimit(int type)
{
for(int i=1; i<=OrdersTotal(); i++)
{
if(OrderSelect(i-1,SELECT_BY_POS)==true)
{
if( OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() && type==1) {return(1);}
if( OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol() && type==2){return(2);}
}
}
return(0);
}

int chekposstop(int type)
{
for(int i=1; i<=OrdersTotal(); i++)
{
if(OrderSelect(i-1,SELECT_BY_POS)==true)
{
if( OrderType()==OP_BUY && OrderSymbol()==Symbol() && type==1) {return(1);}
if( OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==2){return(2);}
}
}
return(0);
}

 

if(l!=1 && sar>Close[0]){OrderSend(Symbol(),OP_BUYSTOP,Lots,NormalizeDouble(sar,4),3,sar-SL*Point,sar+TP*Point,"FORTRADER.RU",16384,10,Green);}
l=chekposlimit(2); o=chekposstop(2);
if(l!=2 && sar<Close[0]){OrderSend(Symbol(),OP_SELLSTOP,Lots,NormalizeDouble(sar,4),3,sar+SL*Point,sar-TP*Point,"FORTRADER.RU",16384,10,Green);}

Вот так не будет проверять если открытые позиции бай или селл.

Причина обращения: