[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 84

 
Roman.:


Извиняйте, не заметил... :-)))

Проверял несколько раз - ошибок нет все строго по формулам.

Надо, видимо, как то произведение разбить на части и уже потом их сравнивать... Подробнее - здесь.

Был уже там. Занимательно. Есть идея. Отпишусь в ветке по данной теме.

 
MaxZ:

Вы полностью код скопировали или только то, что было в функции start()? Это важно!

Не правильно Вы поняли! :)) Например, у зиг-заг'а ведь не все элементы буфера заполнены. Также не обязательно заполнять все элементы буфера у значков.


Копировал, вроде полностью...

Странно! Если я писал такой код:

буфер[1]=open[1];

буфер[3]=open[3];

на графике ничего не происходило

 
wolf05632:


Копировал, вроде полностью...

Странно! Если я писал такой код:

буфер[1]=open[1];

буфер[3]=open[3];

на графике ничего не происходило


Надо в таком случае весь код смотреть.
 
wolf05632:


Копировал, вроде полностью...

Странно! Если я писал такой код:

буфер[1]=open[1];

буфер[3]=open[3];

на графике ничего не происходило

Надо в таком случае поменять

SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Стиль линии

на

SetIndexStyle (0, DRAW_SECTION);

Иначе будут рисоваться обрывистые линии, либо же линии будут прыгать из нуля или сверху на график и снова в ноль или вверх улетать (смотря какое значение зададите пропущенным элементам в буфере)! :D

Значит Мой код всё же у Вас заработал?

 

Спасибо! Ща попробую еще раз... Да! заработал, спасибо! Только немного непонятен смысл этой строки:

if (MathMod(Bars, 2) != 0 && Counted_bars == 0)
      return(0);
 
wolf05632:

Спасибо! Ща попробую еще раз... Да! заработал, спасибо! Только немного непонятен смысл этой строки:

if (MathMod(Bars, 2) != 0 && Counted_bars == 0)
      return(0);

Поясняю.

Кидаем индикатор на график. Сначала выполняется функция init(), выполнилась.

Затем выполняется функция start(). Так как ещё ни один бар не просчитан, то в переменную Counted_bars функция

IndicatorCounted(); // Количество просчитанных баров

вернёт ноль.

А значит условие

if (MathMod(Bars, 2) != 0 && Counted_bars == 0)
      return(0);

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

После того, как расчёт произведён, выполнение функции start() закончится и индикатор будет ждать прихода нового тика.

Пришёл новый тик, снова начнёт выполняться функция start(). В переменную Counted_bars функция

IndicatorCounted(); // Количество просчитанных баров

вернёт число посчитанных баров.

А значит условие

if (MathMod(Bars, 2) != 0 && Counted_bars == 0)
      return(0);

уже может выполнится, а именно данное условие будет выполнено, когда Нам бар не нужен и Мы его хотим пропустить в расчёте функции start().

 

Добрый вечер. У меня два вопроса:

1 хотел узнать, есть ли кто нибудь на форуме, кто разрабатывает стратегию на основе Ишимоку и использует таймфрейм меньше часа, например 5 или 15 минут?

2 в книге "Терехов А. Индикатор Ишимоку .djvu" есть глава "Индикатор Ишимоку и японские свечи", в ней написано, что индикатор должен подтверждать свечные конфигурации. Так вот, эти свечные конфигурации должны быть именно в тот момент когда индикатор подает сигнал или все таки между этими двумя событиями может быть несколько баров? То есть, например пересечение тенкана и кинджуна и в этот же самый момент должен быть например "Молот" или это необязательно?

 

Доброго всем времени суток! Я новичок и у меня ворос - открыв ордер по такой схеме

extern bool Buy = true;

extern double PriceBuy = 0;

int start()
{
if (Buy)
{OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-50*Point,Ask+50*Point);
PriceBuy = ??????????????????;}

return;
}
Что указать под знаками вопроса, для того, чтобы присвоить переменной PriceBuy значение цены покупки ордера?? С целью один раз присвоить это значение и с ходом программы оно не менялось.

И еще один - Как изменить программно stoploss уже открытого ордера??



 
OTPOK:

Доброго всем времени суток! Я новичок и у меня ворос - открыв ордер по такой схеме

extern bool Buy = true;

extern double PriceBuy = 0;

int start()
{
if (Buy)
{OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-50*Point,Ask+50*Point);
PriceBuy = ??????????????????;}

return;
}
Что указать под знаками вопроса, для того, чтобы присвоить переменной PriceBuy значение цены покупки ордера?? С целью один раз присвоить это значение и с ходом программы оно не менялось.

И еще один - Как изменить программно stoploss уже открытого ордера??




extern bool Buy = true;
extern double PriceBuy = 0; 
int start() 
{
   if(Buy) 
   {
     int ticket=OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-50*Point,Ask+50*Point);
     if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
        PriceBuy=OrderOpenPrice();
   }
   return(0); 
}
 
OTPOK:


Что указать под знаками вопроса, для того, чтобы присвоить переменной PriceBuy значение цены покупки ордера?? С целью один раз присвоить это значение и с ходом программы оно не менялось.

И еще один - Как изменить программно stoploss уже открытого ордера??




Добрый день. Я так понял Вы никогда не присваивали значения переменным. Это делается очень просто.

PriceBuy=Ask

А изменять стоплосс надо с помощью функции OrderModifity().

Пользуйтесь справкой в МетаИдиторе.

Всего доброго.