Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Привет, Тим,
Вчера я не спал до двух часов ночи, преобразуя 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, если вы это имеете в виду. Тогда вы могли бы провести меня через каждый блок, если вы не потеряете терпение к тому времени :)
Привет, Тим,
Я приложил псевдокод в формате советника со скобками для редактирования. Дай мне знать, если я все еще не понял, что ты имел в виду, и я изменю его по мере необходимости. Только флаги и фильтры я объявил, чтобы сэкономить ваше время. Больше я ничего не трогал. Я не создавал имен для функций, потому что я все еще не понимаю, что это будет, как вы ясно поняли из моего последнего сообщения. Какой следующий шаг отсюда, босс?
Привет, Тим,
Я приложил псевдокод в формате советника со скобками для редактирования. Дай мне знать, если я все еще не понял, что ты имел в виду, и я изменю его по мере необходимости. Только флаги и фильтры я объявил, чтобы сэкономить ваше время. Больше я ничего не трогал. Я не создавал имен для функций, потому что я все еще не понимаю, что это будет, как вы ясно поняли из моего последнего сообщения. Какой следующий шаг отсюда, босс?
Привет. Я стал нетерпелив - хотя я согласен с необходимостью псевдокода, я думаю, что вы, ребята, немного переборщили (извините, Тим).
Я просто набросал это. На самом деле потратил на него всего полчаса, не проверял на ошибки, синтаксис и т.д. и т.п.
Но если вы попробуете, это должно быть довольно близко к тому, что вам нужно. Я специально оставил его в голом виде, чтобы вы увидели структуру, но чтобы вам было над чем работать. В качестве примера, я специально опустил всю проверку ошибок в функции fnTrade и ошибку в обработке TakeProfit.
CB
UPDATE: В связи с последующим сообщением Тима, я удалил советник, который создал для вас, и отступлю, позволив Тиму сделать это вместо меня.
TIM: Что касается вашего сообщения о логике работы с несколькими валютами, я построил советник таким образом, чтобы он не зависел от символов, так как именно это Ник сказал мне, что он хочет, пока я работал с ним до того, как вы пришли на смену.
Привет, Ник. Cloudbreaker
Cloudbreaker, я отмечаю ваше разочарование по поводу медленного прогресса. Я думал, что смысл этого упражнения в том, чтобы научить Ника программировать с помощью MT4. Судя по большому количеству кода и обсуждений, связанных с кодированием, которые я видел на этом форуме, я остаюсь при своем утверждении, что системный подход является самым надежным и часто самым быстрым способом создания качественного кода.
Я понимаю, что это довольно тривиальный проект, и любой опытный программист сделает что-то подобное очень быстро и с минимальными формальностями. Я постараюсь продвигаться вперед как можно быстрее, чтобы минимизировать разочарование для всех, но, пожалуйста, имейте в виду, что обучение часто занимает время, и те, кто умеет делать, легко разочаровываются в тех, кто пытается учиться.
Ник,
Код, который вы разместили, был не совсем тем, что я искал. Я немного подправил ситуацию и сделал для вас несколько заметок в коде с несколькими вещами, которые вы должны сделать.
Следующей задачей является обеспечение способа обработки различных валютных пар без написания отдельных процедур для каждой пары.
Один из способов сделать это - объявить валютные пары как ARRAY of STRINGS в глобальной области объявления.
Затем в основном блоке программы - (функция start) используйте цикл FOR для индексации массива.
Ник попробует запрограммировать этот код и затем опубликует его на форуме.
Нам также нужно начать думать об обработке ошибок, тестировании и отладке. Одним из распространенных способов сделать это в MetaTrader является использование файлов журнала. Я добавил несколько строк в советник, чтобы попытаться помочь вам начать.
Пожалуйста, посмотрите и постарайтесь понять, что я сделал. Вы можете запустить код и посмотреть лог-файл на активном счете или в тестере стратегий.
С уважением,
Тим
Привет, ребята,
Спасибо вам обоим за поддержку в этом путешествии! Я согласен, что систематический подход очень важен для новичка, но не менее важно углубляться в код. Эти два компонента помогают друг другу развиваться и стимулируют процесс обучения. Это то, что я понял и поэтому уделял время и тому, и другому. Чем лучше человек понимает процесс кодирования, тем лучше будет его псевдокод и последующая программа.
Я продолжу это начинание, работая с обоими документами параллельно - думаю, это ускорит процесс обучения как ничто другое, поскольку у меня будет конкретная точка отсчета.
Основной упор будет сделан на преобразовании псевдокода в код, но я буду использовать документ CB для идей о том, как и какие части добавить, а также использовать его параллельно для обучения, конечно, также с руководством Тима на этом пути.
Ник
Привет, ребята,
Спасибо вам обоим за поддержку в этом путешествии! Я согласен, что систематический подход очень важен для новичка, но не менее важно углубляться в код. Эти два компонента помогают друг другу развиваться и стимулируют процесс обучения. Это то, что я понял и поэтому уделял время и тому, и другому. Чем лучше человек понимает процесс кодирования, тем лучше будет его псевдокод и последующая программа.
Я продолжу это начинание, работая с обоими документами параллельно - думаю, это ускорит процесс обучения как ничто другое, поскольку у меня будет конкретная точка отсчета.
Основной упор будет сделан на преобразовании псевдокода в код, но я буду использовать документ CB для идей о том, как и какие части добавить, а также использовать его параллельно для обучения, конечно, также с руководством Тима на этом пути.
Ник
Привет, Ник, теперь я отступлю. См. поправку к моему сообщению выше.
CB
Привет, Ник, теперь я отступлю. См. поправку к моему сообщению выше.
CB
Привет CB, я так и думал, поэтому поспешил загрузить его. Как я уже говорил, все, что касается идеи, которая у меня есть, помогает мне учиться, ваш код не помешает моему обучению, так как я не буду копировать его в шаблон Тима, я буду пытаться понять его, чтобы увидеть, как все можно сделать по-другому :)
Все, что угодно, как говорится, помогает!
Привет, CB, я думал, что вы это сделаете, поэтому я поспешил загрузить его. Как я уже говорил, все, что касается моей идеи, помогает мне учиться, твой код не помешает моему обучению, так как я не буду копировать его в шаблон Тима, я буду пытаться понять его, чтобы увидеть, как все может быть сделано по-другому :)
Любая помощь, как говорится!
Не беспокойтесь. С небольшими поправками он действительно будет работать для вас.
Вы должны начать с исправления "ошибки" TakeProfit, которую я встроил для вас. Посмотрите, как делается StopLoss, чтобы получить подсказку.
Как только вы заставите его работать, я надеюсь, вы начнете добавлять обработку ошибок и некоторые удобные для операторов вещи, такие как операторы Print(), чтобы вы могли легко видеть в журналах, что он делает.
Псевдокод важен перед тем, как приступить к работе над кодом (даже для опытных программистов), но не пережарьте его.
Похоже, вы привлекаете помощь благодаря своей добродушной манере поведения. Я думаю, что вы либо работаете в HR, либо интересуетесь человеческой психологией?
CB