Помогите программисту

 

Программированием занимаюсь с 11 лет, программировал на всех основных языках: Pascal, C++, Assembler... (ASM) :) ещё аж под DOS, если кто не помнит это однозадачная операционная система прародитель всех Windows...

А теперь мне 27, но я никогда еще не встречался с таким сопротивлением как со стороны MQL...
Господа, ребята, товарищи!!! Будьте милосердны, год пишу системы, но кроме kiddy систем с фиксированным количеством ордеров одновременно (не более 5) у меня ничего не получается :(
Реально, устал... Поэтому и прошу помощи... Понимаю, что проблема решается элементарно и есть какая-то специфика у языка, но я о ней не знаю.

Собственно сама проблема:
Не могу объединить циклы, массивы и операции с ордерами (открытие, модификация, закрытие)...

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

Представляю часть кода работающей системы... Объясните как её оптимизировать, чтоб привести к подобному виду, тольчо чтобы это работало... Допустим этот код у меня не работает, в чём дело я не понимаю... Stupid :(

for (int i=0 ;i<3; i++)
{
if (CurTime()-open[i]>Times[i] && order_buy[i]==1)
{
OrderSelect(ticketB[i],SELECT_BY_TICKET);
OrderClose(ticketB[i],0.10,Bid,3);
order_buy[i]=0;
return(0);
}
}

 
А что в массивах?
Как они заполняются?
Что возвращает OrderSelect?
Что возвращает OrderClose?
 
Такое впечатление, что не прочитано ни слова в helpe, не просмотрено ниодно готового эксперта. Рекомендую;-)
 
Integer писал (а):
Такое впечатление, что не прочитано ни слова в helpe, не просмотрено ниодно готового эксперта. Рекомендую;-)

Смотрено, много чего, но только у меня перерыв был 9 лет в программировании, и поэтому теперь я не могу ничего увидеть в чужой программе, только тупо скопировать, а это не есть GOOD, мне надо разобраться с самой сутью и писать всё с нуля, чтоб впитать...

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

Кстати Help я весь перерыл, про это там ни слова нет, максимум один ордер
 
Используй в цикле OrderSelect с выбором по номеру, проверку символа и магика (про магик здесь статья есть от Компостера) и не понадобится создавать массивы с тикетами.
 
Если честно, не очень верится в 11 лет программирования...
Я за 3 года научился:
- замечать, что переменная i объявляется каждый раз при выполнении ф-ции старт, т.е. всегда = 0 (поэтому цикл for (int f=0; f<i+1; f++) не имеет смысла)
- проверять результат выполнения функций (тем более торговых!)
- более экономно работать с массивами (зачем в 100 элементов?)
- нормализовавать double при сравнении
- ещё чему-то, наверное ;)
 
komposter писал (а):
Если честно, не очень верится в 11 лет программирования...
Я за 3 года научился:
- замечать, что переменная i объявляется каждый раз при выполнении ф-ции старт, т.е. всегда = 0 (поэтому цикл for (int f=0; f<i+1; f++) не имеет смысла)
- проверять результат выполнения функций (тем более торговых!)
- более экономно работать с массивами (зачем в 100 элементов?)
- нормализовавать double при сравнении
- ещё чему-то, наверное ;)

А я кстати не понимаю почему если смотрю на массив таймсерий которые хранят свечи OHLC содержать double которые начинают различаться в 4-том знаке для EURUSD типа close = 1.17439999999... Неужели при считывания значения из файла истории это значение из 1.1744 превращается в 1.17439999999... Как будто это значение было вычесленно какой то матемалической моделью с кучей итераций и мы получили какую то погрешность. Наверно я тоже чего то не понимаю. Из-за этого придётся для большей точности чтобы не было различий в один пипс применять NormalizeDouble
 
komposter писал (а):
Если честно, не очень верится в 11 лет программирования...
Я за 3 года научился:
- замечать, что переменная i объявляется каждый раз при выполнении ф-ции старт, т.е. всегда = 0 (поэтому цикл for (int f=0; f<i+1; f++) не имеет смысла)
- проверять результат выполнения функций (тем более торговых!)
- более экономно работать с массивами (зачем в 100 элементов?)
- нормализовавать double при сравнении
- ещё чему-то, наверное ;)


Вот это уже что-то конструктивное и понятно что я ламак... Спасибо, но всё же парирую Ваше высказывание:

Во-первых не 11, А С 11 ЛЕТ, это большая разница, улавливаете :)))), это было для меня уже в глубоком детстве, я уже о школе забыл, как она выглядит, а это было именно в школьные годы...

Во-вторых, когда я увлекался программированием, то через три года мне тоже палец в рот не клади, я всех преподавателей по информатике строил, но через 7 лет, тобишь когда мне стукнуло 18, желание программировать отпало напрочь... Наотрез...

Представьте, такое может и с Вами произойти, есть такая теория циклов, что жизнь идёт по кругу...

Не знамо по кругу ли, а скорее всего прижало меня - НАДО, хотел я заниматься трейдингом, а приходится программированием, потомучто без программирования трейдинг превращается в безсистемную эмоциональную торговлю...

В-третьих 9 лет перерыва, это можно сказать, что я забыл всё тонкости подчистую, спасибо что напомнили, СПАСИБО, ЦЕНЮ, но всё же про цикл я так и не понял for (int f=0; f<i+1; f++) он и должен быть с нуля, перебрать все сделки и закрыть которые надо.

К тому же я хочу хранить в массиве всю информацию об ордерах. ..

Вообще идея, чтоб система в уме проигрывала до 10 стратегий, выбирая по последним результатам наилучший вариант, таким образом самооптимизируясь во время торгов, но это в перспективе, чую не раньше чем через год такое осилю

 
elritmo писал (а):
komposter писал (а):
Если честно, не очень верится в 11 лет программирования...
Я за 3 года научился:
- замечать, что переменная i объявляется каждый раз при выполнении ф-ции старт, т.е. всегда = 0 (поэтому цикл for (int f=0; f<i+1; f++) не имеет смысла)
- проверять результат выполнения функций (тем более торговых!)
- более экономно работать с массивами (зачем в 100 элементов?)
- нормализовавать double при сравнении
- ещё чему-то, наверное ;)

А я кстати не понимаю почему если смотрю на массив таймсерий которые хранят свечи OHLC содержать double которые начинают различаться в 4-том знаке для EURUSD типа close = 1.17439999999... Неужели при считывания значения из файла истории это значение из 1.1744 превращается в 1.17439999999... Как будто это значение было вычесленно какой то матемалической моделью с кучей итераций и мы получили какую то погрешность. Наверно я тоже чего то не понимаю. Из-за этого придётся для большей точности чтобы не было различий в один пипс применять NormalizeDouble

Вот точно-точно, каждый умный человек, чего-то не понимает в жизни и боюсь, что этого чего-то намного больше чем каждый из нас думает

И вообще раскрутить страничку пускай все узнают, что кто-то чего-то не понимает и всем станет легче :)))) помимо того, что много советов услышат, правда не всегда по теме, но всё же :)

Хорошая вещь, я об этом кстати вообще не знал, что цены в такое виде приходят, еще раз убеждаюсь, что надо привлекать общественность, если каждый своё недовольство выскажет, столько всего можно будет почепнуть конструктивного
 
S4kam писал (а):
Хорошая вещь, я об этом кстати вообще не знал, что цены в такое виде приходят, еще раз убеждаюсь, что надо привлекать общественность, если каждый своё недовольство выскажет, столько всего можно будет почепнуть конструктивного

Ну какой же тут может быть конструктив то? Всего лишь обычный ликбез, который можно было бы пройти вполне самостоятельно и без привлечения общественности! Всё равно вам тут никто на все вопросы отвечать не станет. Просто по причине отсутствия интереса к повторению одних и тех же аксиом, которые и так изложены в статьях на этом сайте. Вот, если у вас после прочтения этих статей появятся какие-то вопросы, то тогда действительно всем будет интересно над ними подумать, ну а так пока что вы предлагаете пообсуждать работу с ордерами и циклами, а также нормализацию вещественных. Ну в чём здесь может быть проявлен интерес со стороны общественности то, если всё давно подробно обсуждено в статьях и на форуме?
 
Я тоже в дестстве увлекался програмированием, бейсики, паскали, асемблеры, си. Потом интерес пропал, надолго. Несколько лет назад, из любопытства, почитал книжки, по Visual C++ и VB, обнаружил, что теперь неважно как называется язык, они почти одинаковые. И вот после 10 летнего перерыва начал изучать MQL4. Прочитал инструкцию и начал писать довольно сложного эксперта. Он через месяца 3, заработал. .. а я вроде как освоился с MQL4. Но мой совет - ненужно писать сразу сложную програму.