[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 75

 
Vinin:


Спасибо! Всё заработало как часы. ))
 
ZZZEROXXX:

в этой строке

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) { Print("break "+GetLastError()); break;}

вылетает по брейку, но при этом код ошибки 0. - Почему так происходит?

потому, что у Вас проверка условия на то, что ордер выбранный ф-цией OrderSelect() не является рыночным, тоды выводите в журнал и делаете break

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

https://book.mql4.com/ru/trading/orderclose

 
Всем здрасте! Есть какй-то скрипт или индикатор для следующей задачи? Нужно, что бы в терминале прорисовывалась горизонтальная линия и следовала за ценой на определенном расстоянии (типо трейлинга, но, только графически). Сильно ли такой скрипт нагрузит МТ? Заранее спасибо!
 
globad:
Всем здрасте! Есть какй-то скрипт или индикатор для следующей задачи? Нужно, что бы в терминале прорисовывалась горизонтальная линия и следовала за ценой на определенном расстоянии (типо трейлинга, но, только графически). Сильно ли такой скрипт нагрузит МТ? Заранее спасибо!

Действие в одну строку - ObjectSet

 
IgorM:

потому, что у Вас проверка условия на то, что ордер выбранный ф-цией OrderSelect() не является рыночным, тоды выводите в журнал и делаете break

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

https://book.mql4.com/ru/trading/orderclose

т.е. эту строку

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) { Print("break "+GetLastError()); break;}

меняем на

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) { тут все закрываем }

но ведь смысл тот же.

Мне не очень понятно почему OrderSelect может вернуть false и при этом GetLastError() = 0.

 
ZZZEROXXX:

подскажите по функции закрытия всех ордеров

Я бы ордера перебирал в обратном порядке. for(int i=total-1;i>-1;i--)

 

помогите найти ошибку пожалуйста, никак не могу правильно записать,а потом считать из файла

вот код:

int handle;

double value,Price,PriceLast,asd;

handle=FileOpen("EURUSD5up.dat",FILE_BIN | FILE_READ | FILE_WRITE);

if(handle<1)
{

Print("can't open file error-",GetLastError());

return(0);

}

asd = (Price - PriceLast);

FileWriteDouble(handle, asd, DOUBLE_VALUE);

FileSeek(handle, 0, SEEK_SET);

value=FileReadDouble(handle,DOUBLE_VALUE);

Print(value);

FileClose(handle);

вот результат: 2011.02.08 10:18:27 2010.12.31 18:47 TEST EURUSD,M5: 0

 
splxgf:

Я бы ордера перебирал в обратном порядке. for(int i=total-1;i>-1;i--)


вот спасибо!, странно что в примерах хелпов представлен не этот вариант
 

стандартный кодебазовский RSI, являющийся отношением средней положительных изменений к средней отрицательных, не то же самое

что настоящий, изначальный RSI, являющийся отношением суммы положительных изменений к сумме отрицательных.

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

это ж основы основ, думаю все кто давно на рынке знают что rsi это sumpos/sumneg*100

кстати макди тоже исказили - сделали главную машку ЕМАшкой

>
 
sergeev:

Действие в одну строку - ObjectSet

Большое спасибо за ответ. К сожалению я не силен в программировании. Не могли бы показать как это должно выглядеть, например для отставания линии от цены на 3п. вверх с цветом линии-синий.

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