приключения новичка - страница 5

 

Привет, Тим,

Вчера я не спал до двух часов ночи, преобразуя PSC в C (псевдокод в код). Начал сразу после того, как пришел домой с работы.

Закончив первый проект, я понял, что i) нам не хватает нескольких вещей, ii) мы должны сделать все специфичным для "пары".

Просто чтобы проверить, на правильном ли я пути, не могли бы вы поделиться некоторыми советами по этому поводу:

1. Мы не можем использовать 3 ema без указания символа при объявлении каждой iMA, иначе советник не будет работать должным образом. таким образом, мы должны объявить 15 ema (5 символов с 3 Ma на символ)?

2. Мы упустили функцию CountOrders. Опять же, из-за 5 пар. Нам нужно 10 функций. например: EUR_USD_BuyCount, EUR_USD_SellCount; и т.д. ?

3. Я понял, что есть эффективный способ написания кода и способ "для новичков". Я сделаю как новичок, а затем буду благодарен, если вы покажете мне, как сделать это эффективно.

4. Магические числа. Я стремлюсь к тому, что делаете вы, и поэтому хотел бы запускать несколько советников одновременно. Я изучил Magic Numbers, но не могу понять, что это такое, даже из другого кода. Не могли бы вы направить меня куда-нибудь, где я могу узнать больше о том, как убедиться, что компьютер различает разные советники.

Спасибо

Ник

 

Привет, Ник.

Мне очень жаль, но вы меня теряете. Похоже, мы снова ставим телегу впереди лошади и, следовательно, идем назад. В своем предыдущем сообщении я предложил вам создать базовую структуру для вашей программы, используя мастер MetaTrader EA и псевдокод, который мы уже написали. Не могли бы вы вернуться и завершить этот шаг и выложить результаты (файл mq4) на этом форуме, чтобы я мог взглянуть на них? Тогда мы сможем перейти к следующему шагу. Вам, конечно, не нужны 15 ema, 10 функций или магические числа, если на то пошло, и в маловероятном случае, если у нас возникнут проблемы с конкретными требованиями брокера, мы сможем решить их, если и когда мы к ним придем.


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

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

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


С уважением,

Тим

 

Привет, Тим,

Извини, что расстроил тебя, я неправильно тебя понял. Вы сказали, что я должен написать код, даже если он не будет запущен, и я подумал, что мне следует продолжить и написать его. Таким образом, я потратил довольно много времени на кодирование, пытаясь облегчить вам работу - но получилось наоборот.

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

 

Привет, Тим,


Я приложил псевдокод в формате советника со скобками для редактирования. Дай мне знать, если я все еще не понял, что ты имел в виду, и я изменю его по мере необходимости. Только флаги и фильтры я объявил, чтобы сэкономить ваше время. Больше я ничего не трогал. Я не создавал имен для функций, потому что я все еще не понимаю, что это будет, как вы ясно поняли из моего последнего сообщения. Какой следующий шаг отсюда, босс?

Файлы:
 
niko:

Привет, Тим,


Я приложил псевдокод в формате советника со скобками для редактирования. Дай мне знать, если я все еще не понял, что ты имел в виду, и я изменю его по мере необходимости. Только флаги и фильтры я объявил, чтобы сэкономить ваше время. Больше я ничего не трогал. Я не создавал имен для функций, потому что я все еще не понимаю, что это будет, как вы ясно поняли из моего последнего сообщения. Какой следующий шаг отсюда, босс?

Привет. Я стал нетерпелив - хотя я согласен с необходимостью псевдокода, я думаю, что вы, ребята, немного переборщили (извините, Тим).

Я просто набросал это. На самом деле потратил на него всего полчаса, не проверял на ошибки, синтаксис и т.д. и т.п.

Но если вы попробуете, это должно быть довольно близко к тому, что вам нужно. Я специально оставил его в голом виде, чтобы вы увидели структуру, но чтобы вам было над чем работать. В качестве примера, я специально опустил всю проверку ошибок в функции fnTrade и ошибку в обработке TakeProfit.


CB


UPDATE: В связи с последующим сообщением Тима, я удалил советник, который создал для вас, и отступлю, позволив Тиму сделать это вместо меня.


TIM: Что касается вашего сообщения о логике работы с несколькими валютами, я построил советник таким образом, чтобы он не зависел от символов, так как именно это Ник сказал мне, что он хочет, пока я работал с ним до того, как вы пришли на смену.

 

Привет, Ник. Cloudbreaker

Cloudbreaker, я отмечаю ваше разочарование по поводу медленного прогресса. Я думал, что смысл этого упражнения в том, чтобы научить Ника программировать с помощью MT4. Судя по большому количеству кода и обсуждений, связанных с кодированием, которые я видел на этом форуме, я остаюсь при своем утверждении, что системный подход является самым надежным и часто самым быстрым способом создания качественного кода.


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

Ник,

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

Следующей задачей является обеспечение способа обработки различных валютных пар без написания отдельных процедур для каждой пары.


Один из способов сделать это - объявить валютные пары как ARRAY of STRINGS в глобальной области объявления.

Затем в основном блоке программы - (функция start) используйте цикл FOR для индексации массива.

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


Нам также нужно начать думать об обработке ошибок, тестировании и отладке. Одним из распространенных способов сделать это в MetaTrader является использование файлов журнала. Я добавил несколько строк в советник, чтобы попытаться помочь вам начать.

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


С уважением,

Тим

Файлы:
 

Привет, ребята,

Спасибо вам обоим за поддержку в этом путешествии! Я согласен, что систематический подход очень важен для новичка, но не менее важно углубляться в код. Эти два компонента помогают друг другу развиваться и стимулируют процесс обучения. Это то, что я понял и поэтому уделял время и тому, и другому. Чем лучше человек понимает процесс кодирования, тем лучше будет его псевдокод и последующая программа.

Я продолжу это начинание, работая с обоими документами параллельно - думаю, это ускорит процесс обучения как ничто другое, поскольку у меня будет конкретная точка отсчета.

Основной упор будет сделан на преобразовании псевдокода в код, но я буду использовать документ CB для идей о том, как и какие части добавить, а также использовать его параллельно для обучения, конечно, также с руководством Тима на этом пути.

Ник

 
niko:

Привет, ребята,

Спасибо вам обоим за поддержку в этом путешествии! Я согласен, что систематический подход очень важен для новичка, но не менее важно углубляться в код. Эти два компонента помогают друг другу развиваться и стимулируют процесс обучения. Это то, что я понял и поэтому уделял время и тому, и другому. Чем лучше человек понимает процесс кодирования, тем лучше будет его псевдокод и последующая программа.

Я продолжу это начинание, работая с обоими документами параллельно - думаю, это ускорит процесс обучения как ничто другое, поскольку у меня будет конкретная точка отсчета.

Основной упор будет сделан на преобразовании псевдокода в код, но я буду использовать документ CB для идей о том, как и какие части добавить, а также использовать его параллельно для обучения, конечно, также с руководством Тима на этом пути.

Ник

Привет, Ник, теперь я отступлю. См. поправку к моему сообщению выше.


CB

 
cloudbreaker:

Привет, Ник, теперь я отступлю. См. поправку к моему сообщению выше.


CB

Привет CB, я так и думал, поэтому поспешил загрузить его. Как я уже говорил, все, что касается идеи, которая у меня есть, помогает мне учиться, ваш код не помешает моему обучению, так как я не буду копировать его в шаблон Тима, я буду пытаться понять его, чтобы увидеть, как все можно сделать по-другому :)


Все, что угодно, как говорится, помогает!

 
niko:

Привет, CB, я думал, что вы это сделаете, поэтому я поспешил загрузить его. Как я уже говорил, все, что касается моей идеи, помогает мне учиться, твой код не помешает моему обучению, так как я не буду копировать его в шаблон Тима, я буду пытаться понять его, чтобы увидеть, как все может быть сделано по-другому :)


Любая помощь, как говорится!

Не беспокойтесь. С небольшими поправками он действительно будет работать для вас.

Вы должны начать с исправления "ошибки" TakeProfit, которую я встроил для вас. Посмотрите, как делается StopLoss, чтобы получить подсказку.

Как только вы заставите его работать, я надеюсь, вы начнете добавлять обработку ошибок и некоторые удобные для операторов вещи, такие как операторы Print(), чтобы вы могли легко видеть в журналах, что он делает.

Псевдокод важен перед тем, как приступить к работе над кодом (даже для опытных программистов), но не пережарьте его.

Похоже, вы привлекаете помощь благодаря своей добродушной манере поведения. Я думаю, что вы либо работаете в HR, либо интересуетесь человеческой психологией?


CB

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