Jump to content

Напишу индикатор, советника... (БЕСПЛАТНО)


Recommended Posts

Circle

Примерный алгоритм советника у вас должен быть такой.

 

BuySignal=iCustom(...,NBufBuy,NBar);

SellSignal=iCustom(...,NBufSell,NBar);

Где

NBufBuy Номер сигнального буфера на Buy

NBufSell Номер сигнального буфера на Sell

NBar номер бара, 0 - текущий бар.

Далее уже

if (BuySignal>0)

{

....

закрыть селл

открыть бай

}

if (SellSignal>0)

{

....

закрыть бай.

открыть селл

}

Примерно как то так.


Что такое форекс? Это там где деньги лежат. 

Link to post
Share on other sites
  • Replies 15.1k
  • Created
  • Last Reply

Top Posters In This Topic

  • expforex2

    1049

  • lukas1

    578

  • Ugar68

    546

  • -Алексей-

    330

Top Posters In This Topic

Popular Posts

Молодой человек, если хотите, чтобы на Вас обратили внимание, то Вам просто жизненно необходимо сделать для начала следующие вещи: 1. Выключить CapsLock 2. Выучить русский язык хотя бы на уровне 7-г

Держи. OHLCDrawLine.rar

Posted Images

alexvv
Примерный алгоритм советника у вас должен быть такой.

 

BuySignal=iCustom(...,NBufBuy,NBar);

SellSignal=iCustom(...,NBufSell,NBar);

Где

NBufBuy Номер сигнального буфера на Buy

NBufSell Номер сигнального буфера на Sell

NBar номер бара, 0 - текущий бар.

Далее уже

if (BuySignal>0)

{

....

закрыть селл

открыть бай

}

if (SellSignal>0)

{

....

закрыть бай.

открыть селл

}

Примерно как то так.

У меня так:

 

int start()

{

 

double indSell = iCustom(Symbol(),0,"1Original RSI-EMA Signals",SnakeRange,FilterPeriod,MartFiltr,PriceConst,Nrecalc,3,1);

double indBuy = iCustom(Symbol(),0,"1Original RSI-EMA Signals",SnakeRange,FilterPeriod,MartFiltr,PriceConst,Nrecalc,4,1);

 

 

if(indBuy > 0)

{

Close_LastOrder_by_type( OP_SELL,MagicNumber);

if(OrdersTotal()==0)

double ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,20,Ask-sl,Ask+tp,NULL,MagicNumber,0,CLR_NONE);

}

 

else if(indSell > 0)

{

Close_LastOrder_by_type( OP_BUY,MagicNumber);

if(OrdersTotal()==0)

ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,20,Bid+sl,Bid-tp,NULL,MagicNumber,0,CLR_NONE);

}

 

 

Comment(

"indBuy=",indBuy,"\n",

"indSell=",indSell

);

 

return(0);

}

Link to post
Share on other sites
Circle
В том то и дело. что в буфере сигнал появляется с опозданием.

Я это смотрю через комменты на маленькой скорости теста.

...

 

Странно.

Стрелка индикатора рисуется и одновременно с этим индикаторному буферу где хранится сигнал присваивается ценовое значение.

Все это делается в одной функции void drawArrow(...), если вы сделали так как я вам говорил ранее.

То есть рисование стрелки и присваивание значения сигнальному буферу происходит одновременно.

...

Предполагаю, что отставание сигнала от стрелки происходит из за того что индикатор вызывает сам себя несколько раз. И в момент этих дополнительных вызовов заново инициализируюся сигнальные буфера.

Попробуете в том месте где вы инициализируете нулями сигнальные буфера индикатора написать дополнительное условие

 

if (!calculating && !returningBars)

{

тут написать инициализацию сигнальных буферов.

}


Что такое форекс? Это там где деньги лежат. 

Link to post
Share on other sites
alexvv
Странно.

Стрелка индикатора рисуется и одновременно с этим индикаторному буферу где хранится сигнал присваивается ценовое значение.

Все это делается в одной функции void drawArrow(...), если вы сделали так как я вам говорил ранее.

То есть рисование стрелки и присваивание значения сигнальному буферу происходит одновременно.

...

Предполагаю, что отставание сигнала от стрелки происходит из за того что индикатор вызывает сам себя несколько раз. И в момент этих дополнительных вызовов заново инициализируюся сигнальные буфера.

Попробуете в том месте где вы инициализируете нулями сигнальные буфера индикатора написать дополнительное условие

 

if (!calculating && !returningBars)

{

тут написать инициализацию сигнальных буферов.

}

Сделал. Результат прежний.

 

Попробуйте протестировать сами.

Файлы прилагаю.

 

Тест за 30.09.2013 EURUSD вторая стрелка - сигнал даже опережает. Следующая - сигнал отстает на 5 баров.

1Original RSI-EMA Signals.mq4

0_test.mq4

Link to post
Share on other sites
Circle
Сделал. Результат прежний.

 

Попробуйте протестировать сами.

Файлы прилагаю.

 

Тест за 30.09.2013 EURUSD вторая стрелка - сигнал даже опережает. Следующая - сигнал отстает на 5 баров.

 

Хорошо, вечером дома попробую погонять в тестере.

Сейчас на работе на рабочем компе нет терминала, а личный нетбук слабоват для тестов стратегий.


Что такое форекс? Это там где деньги лежат. 

Link to post
Share on other sites
alexvv
Хорошо, вечером дома попробую погонять в тестере.

Сейчас на работе на рабочем компе нет терминала, а личный нетбук слабоват для тестов стратегий.

Хорошо.

А я займусь альтернативным вариантом.

Есть еще один индикатор с неплохими сигналами. Попроще.

С первой попытки сигналы тоже не получил. Теперь кое-чему научился.

Link to post
Share on other sites
alexvv
Хорошо, вечером дома попробую погонять в тестере.

Сейчас на работе на рабочем компе нет терминала, а личный нетбук слабоват для тестов стратегий.

Чуть не забыл.

Я тестирую на М1. В индикаторе по умолчанию - М5.

 

И для интереса - то что рисует на тестере вместе с советником - полное безобразие.

Самостоятельно он рисует на порядок лучше - стрелку ставит на текущем баре или в момент открытия нового.

Link to post
Share on other sites
Circle
Чуть не забыл.

Я тестирую на М1. В индикаторе по умолчанию - М5.

 

И для интереса - то что рисует на тестере вместе с советником - полное безобразие.

Самостоятельно он рисует на порядок лучше - стрелку ставит на текущем баре или в момент открытия нового.

 

Я посмотрел последний выложеннный код индикатора и то что он рисует в терминале без тестирования.

Нашел некоторые недочеты .

 

if (!calculating && !returningBars)

{

ArrayInitialize(buf3,0);

ArrayInitialize(buf4,0);

}

переместите в функцию Init() в самый конец перед return(0)

и в

функции drawArrow()

 

if (up)

{

ObjectSet(name,OBJPROP_PRICE1,High+gap);

buf3=High;// buf4=0;

}

else

{

ObjectSet(name,OBJPROP_PRICE1,Low -gap);

buf4=Low;// buf3=0;

}

Уберите комментарии //buf4=0;

и // buf3=0;

 

После чего попробуйте тестировать, я у себя не тестировал боюсь займет много времени.


Что такое форекс? Это там где деньги лежат. 

Link to post
Share on other sites
alexvv
Я посмотрел последний выложеннный код индикатора и то что он рисует в терминале без тестирования.

Нашел некоторые недочеты .

 

if (!calculating && !returningBars)

{

ArrayInitialize(buf3,0);

ArrayInitialize(buf4,0);

}

переместите в функцию Init() в самый конец перед return(0)

и в

функции drawArrow()

 

if (up)

{

ObjectSet(name,OBJPROP_PRICE1,High+gap);

buf3=High;// buf4=0;

}

else

{

ObjectSet(name,OBJPROP_PRICE1,Low -gap);

buf4=Low;// buf3=0;

}

Уберите комментарии //buf4=0;

и // buf3=0;

 

После чего попробуйте тестировать, я у себя не тестировал боюсь займет много времени.

Ужинал.

 

Сделал. Ничего хорошего не получилось. Опять то длинное число, остальное по-прежнему.

Наверное придется вернуться к варианту через анализ графических элементов на графике.

 

Не хочется бросать этот индикатор. Он сам по себе - целая стратегия.

Ок. 90% профитных пар бай - селл. Даже с учетом того, что бывают бары с перекрытием друг-друга.

 

P.S. В личку я брошу свой скайп.

Link to post
Share on other sites
Circle

...

Сделал. Ничего хорошего не получилось. Опять то длинное число, остальное по-прежнему.

....

 

Непонятно, я в окне данных терминала проверял там показывает на тех барах где есть сигнал один буфер равен нулю второй равен цене хай или лоу, в зависимости от вида сигнала.

...

Надо разбираться в чем дело.


Что такое форекс? Это там где деньги лежат. 

Link to post
Share on other sites
alexvv
Непонятно, я в окне данных терминала проверял там показывает на тех барах где есть сигнал один буфер равен нулю второй равен цене хай или лоу, в зависимости от вида сигнала.

...

Надо разбираться в чем дело.

Верно. А остальное время - длинное число.

 

Надо добиться, чтобы сигнал был как на автономном индикаторе - на текущем баре.

 

Предлагаю перейти в скайп. А то сильно засоряем форум.

Я скинул в личку свой ник в скайпе..

Link to post
Share on other sites
  • 2 weeks later...
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...