Ошибки, баги, вопросы - страница 276 1...269270271272273274275276277278279280281282283...3776 Новый комментарий lVlaxim 2011.01.21 23:11 #2751 Yedelkin:Посмотрите Справочник MQL5 / Технические индикаторы / iCustom большое спасибо за оперативность) vda 2011.01.21 23:32 #2752 По теме. Я почти уловил, но СОВЕТНИК не запускается в журнале терминала пишетremovedloaded successfullyзаработало!! Sergey Gritsay 2011.01.22 00:06 #2753 здесь у вас ошибка v161_handle=iCustom(NULL,0,"ErolМТ5"); v162_handle=iCustom(NULL,0,"ErolМТ5"); Sum_handle=iCustom(NULL,0,"ErolМТ5"); в данном случае все три переменные будут иметь один и тот же хендл. так как вы вызываете три раза один и тот же индикатор. vda 2011.01.22 00:13 #2754 sergey1294: здесь у вас ошибкав данном случае все три переменные будут иметь один и тот же хендл. так как вы вызываете три раза один и тот же индикатор.Да но как я понял, значения индексов линий индикатора (значения 3-х линий)мы получаем через:CopyBuffer(v161_handle,1,0,3,Spr1Buffer) CopyBuffer(v162_handle,2,0,3,Spr2Buffer) CopyBuffer(Sum_handle,4,0,3,SumBuffer) здесь 1, 2 и 4 - значения индексов линий индикатора, которые хранятся в буфере,которые потом мы сравниваем между собой.Но это не беда, у меня он не расчитывает правильно по этим индексам линий индикатора Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов www.mql5.com Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов - Документация по MQL5 Помогите передать данные из Импорт значений внещних индикаторов не получается извлечь в vda 2011.01.22 00:15 #2755 Подскажите куда пойти или чегось тут сделать.void OnTick() { ArraySetAsSeries(Spr1Buffer,true); ArraySetAsSeries(Spr2Buffer,true); ArraySetAsSeries(SumBuffer,true); if(CopyBuffer(v161_handle,1,0,3,Spr1Buffer)<0 || CopyBuffer(v162_handle,2,0,3,Spr2Buffer)<0 || CopyBuffer(Sum_handle,4,0,3,SumBuffer)<0) { Alert("Ошибка копирования буферов индикатора номер ошибки:",GetLastError()); } bool SellSpr1 =(Spr1Buffer[1] > Spr2Buffer[1]); bool SellSum1 =(SumBuffer[1]>=Sp); if(SellSpr1 && SellSum1 && !PositionSelect(_Symbol)) { PositionOpenSell1(); } bool BuySpr1 =(Spr1Buffer[1] < Spr2Buffer[1]); bool BuySum1 =(SumBuffer[1]>=Sp); if(BuySpr1 && BuySum1 && !PositionSelect(_Symbol)) { PositionOpenBuy1(); } Sergey Gritsay 2011.01.22 00:15 #2756 alexluek: Да но как я понял, значения индексов линий индикатора (значения 3-х линий)мы получаем через:здесь 1, 2 и 4 - значения индексов линий индикатора, которые хранятся в буфере,которые потом мы сравниваем между собой.Но это не беда, у меня он не расчитывает правильно по этим индексам линий индикатораДостаточно загрузить одну копию индикатора, и обращаться уже через копибуфер уже к нужному индкесу буфера vda 2011.01.22 00:30 #2757 sergey1294: Достаточно загрузить одну копию индикатора, и обращаться уже через копибуфер уже к нужному индкесу буферане не то, не получается получить значения 2-й линии т.к. сравниваются значения 2 индексов линий хранящихся в разных буферах. bool SellSpr1 =(Spr1Buffer[1] > Spr2Buffer[1]); Sergey Gritsay 2011.01.22 00:50 #2758 alexluek: не не то, не получается получить значения 2-й линии т.к. сравниваются значения 2 индексов линий хранящихся в разных буферах.возможно ошибки есть в самом индикаторе vda 2011.01.22 01:07 #2759 sergey1294: возможно ошибки есть в самом индикаторе индикатор считает правильно vda 2011.01.22 14:43 #2760 Спасение утопающих - дело рук самих утопающих.На будущее может кому пригодится:Для вызова в советнике 2 и больше значений линий индикатора нв текущий барнужно выбрать 1 хэндл и вызвать индюк, потом через копибуфер сохр. знач. индексова потом работать с этими буферами. sergey1294 спасибо за помощь!int OnInit() { v161_handle=iCustom(NULL,0,"LeroyMТ5"); if(v161_handle<0) { Alert("Ошибка при создании индикаторов: ",GetLastError()); return(-1); } return(0); } void OnTick() { ArraySetAsSeries(Sp1Buffer,true); ArraySetAsSeries(Sp2Buffer,true); ArraySetAsSeries(Sp3Buffer,true); if(CopyBuffer(v161_handle,1,0,1,Sp1Buffer)<0 || CopyBuffer(v161_handle,2,0,1,Sp2Buffer)<0 || CopyBuffer(v161_handle,4,0,1,Sp3Buffer)<0) { Alert("Ошибка копирования буферов индикатора номер ошибки:",GetLastError()); return; } bool SellSpr1 =( Sp1Buffer[0]> Sp2Buffer[0] && Sp3Buffer[0]>=Sp ); if(SellSpr1 && !PositionSelect(_Symbol)) { PositionOpenSell1(); } bool BuySpr1 =( Sp1Buffer[0]< Sp2Buffer[0] && Sp3Buffer[0]>=Sp ); if(BuySpr1 && !PositionSelect(_Symbol)); { PositionOpenBuy1(); } } Вопросы от начинающих MQL5 Новая версия клиентского терминала Вопросы от начинающих MQL4 1...269270271272273274275276277278279280281282283...3776 Новый комментарий
Посмотрите Справочник MQL5 / Технические индикаторы / iCustom
большое спасибо за оперативность)
По теме. Я почти уловил, но СОВЕТНИК не запускается в журнале терминала пишет
removed
loaded successfully
заработало!!здесь у вас ошибка
в данном случае все три переменные будут иметь один и тот же хендл. так как вы вызываете три раза один и тот же индикатор.здесь у вас ошибка
в данном случае все три переменные будут иметь один и тот же хендл. так как вы вызываете три раза один и тот же индикатор.Да но как я понял, значения индексов линий индикатора (значения 3-х линий)
мы получаем через:
здесь 1, 2 и 4 - значения индексов линий индикатора, которые хранятся в буфере,
которые потом мы сравниваем между собой.
Но это не беда, у меня он не расчитывает правильно по этим индексам линий индикатора
Подскажите куда пойти или чегось тут сделать.
Да но как я понял, значения индексов линий индикатора (значения 3-х линий)
мы получаем через:
здесь 1, 2 и 4 - значения индексов линий индикатора, которые хранятся в буфере,
которые потом мы сравниваем между собой.
Но это не беда, у меня он не расчитывает правильно по этим индексам линий индикатора
Достаточно загрузить одну копию индикатора, и обращаться уже через копибуфер уже к нужному индкесу буфера
не не то, не получается получить значения 2-й линии
т.к. сравниваются значения 2 индексов линий хранящихся в разных буферах.
не не то, не получается получить значения 2-й линии
т.к. сравниваются значения 2 индексов линий хранящихся в разных буферах.
возможно ошибки есть в самом индикаторе
индикатор считает правильно
Спасение утопающих - дело рук самих утопающих.
На будущее может кому пригодится:
Для вызова в советнике 2 и больше значений линий индикатора нв текущий бар
нужно выбрать 1 хэндл и вызвать индюк, потом через копибуфер сохр. знач. индексов
а потом работать с этими буферами. sergey1294 спасибо за помощь!