И ещё, в коде if(OrderType()==0) вместо 0 может быть, стоит указать какую-то константу, что-то типа == OP_BUY или == OP_SELL вместо безликого нуля, понимание кода улучшится, как Вы думаете?
Опытному mql-щику они ни к чему, а новичку ничего хорошего не дадут.
Поясните, пожалуйста, Вашу фразу: "Во-первых - опции задаваемые 0 и 1 вместо true и false помогают Вам оптимизировать советника лучше, качественней". В чём это "лучше, качественней"?
И ещё, в коде if(OrderType()==0) вместо 0 может быть, стоит указать какую-то константу, что-то типа == OP_BUY или == OP_SELL вместо безликого нуля, понимание кода улучшится, как Вы думаете?
Мне кажется, статьи, написанные на таком уровне, вообще не стоит публиковать.
Опытному mql-щику они ни к чему, а новичку ничего хорошего не дадут.
В целом поддерживаю. Имеет смысл пересмотреть (а по некоторым
показателям сформировать) требования к содержанию и оформлению
статей.
Эту статью можно отнести к разряду учебных. В подобных случаях необходимо подробно описывать смысл переменных, указывать построчные поясняющие комментарии, разъяснять необходимость и назначение каждой из функций и т.д. Кроме того, статья должна иметь связный понятный текст. Например, фраза "Первая функция просто проверяет условия, две следующих задают условия. А теперь функция, которая высчитывает уровни стопов, если они заданы не правильно и определяет размер лота" ничего не поясняет, а скорее вводит в заблуждение. Возникает масса вопросов: какие условия? зачем их поверять?, а тем более задавать? в какой части кода что-то задаётся, а что-то проверяется и что именно?, почему уровни стопа заданы неправильно и почему при этом нужно проверять размер лота?
Вывод "Экспертов создавать очень легко" напомнил мне лозунг "Пятилетку на отлично!", отлитый из бетона возле одного ЖБК (высотой ок.3м и длиной ок.15), который имел скорее архитектурное значение, а именно играл роль забора - прямо за ним начиналась мусорная свалка.
Мне кажется, статьи, написанные на таком уровне, вообще не стоит публиковать.
Опытному mql-щику они ни к чему, а новичку ничего хорошего не дадут.
То, что вы делаете за деньги не дает права ВАМ наседать, чтоб другие не делали бесплатно (премерно около года назад из-за ваших цен и изучил этот язык!)
То, что вы делаете за деньги не дает права ВАМ наседать, чтоб другие не делали бесплатно (премерно около года назад из-за ваших цен и изучил этот язык!)
А по сути вопроса:
Во-первых, я не "наседаю". Я высказал свое мнение. Для этого комментарии к статье и созданы.
Во-вторых, каждый сам решает работать ему бесплатно или за деньги. Я выбрал второй вариант, мне так проще жить.
В-третьих, прежде чем писать за деньги, я 3 года изучал язык и писал бесплатно. Писать на заказ я начал, когда отзывы о моих работах стали положительными.
В-четвертых, я и сейчас иногда пишу бесплатно. Когда у меня есть время и желание или когда появляются интересные идеи. Вы можете наблюдать плоды моей работы в разделах "Статьи" и "Code Base".
И, даже когда я пишу бесплатно, я пишу хорошо. Потому что я считаю, что не нужны плохие статьи.
Просто не нужны, понимаете?
Когда вы создаете темы на форуме или отвечаете на вопросы, я молчу. Форум перечитывают не все.
А статьи созданы для обучения, и здесь не должно быть "слабого" материала.
Я ничего не имею против вас лично, я просто люблю mql4.com и стараюсь делать все для его процветания.
Без обид ;)
То, что вы делаете за деньги не дает права ВАМ наседать, чтоб другие не делали бесплатно (премерно около года назад из-за ваших цен и изучил этот язык!)
Я рад, что мои цены не только пугают, но и толкают к знаниям! ;)
А по сути вопроса:
Во-первых, я не "наседаю". Я высказал свое мнение. Для этого комментарии к статье и созданы.
Во-вторых, каждый сам решает работать ему бесплатно или за деньги. Я выбрал второй вариант, мне так проще жить.
В-третьих, прежде чем писать за деньги, я 3 года изучал язык и писал бесплатно. Писать на заказ я начал, когда отзывы о моих работах стали положительными.
В-четвертых, я и сейчас иногда пишу бесплатно. Когда у меня есть время и желание или когда появляются интересные идеи. Вы можете наблюдать плоды моей работы в разделах "Статьи" и "Code Base".
И, даже когда я пишу бесплатно, я пишу хорошо. Потому что я считаю, что не нужны плохие статьи.
Просто не нужны, понимаете?
Когда вы создаете темы на форуме или отвечаете на вопросы, я молчу. Форум перечитывают не все.
А статьи созданы для обучения, и здесь не должно быть "слабого" материала.
Я ничего не имею против вас лично, я просто люблю mql4.com и стараюсь делать все для его процветания.
Без обид ;)
Просто некоторые функции окажутся полезными для кода некоторых людей. Это просто шаблон, а не слабый код. Так в заголовке и в введении написано. :) Ругаетесь, а сами не внимательны!!! Как и человек пять, которые уже постучали ко мне в АСЮ и спросили как это работает! :)
Ошибки остались :-(((
StopLoss=sl; TakeProfit=tp; if(TakeProfit!=0 && TakeProfit<(MarketInfo(Symbol(),MODE_STOPLEVEL))) // Работает всегда если не задан TP. // MarketInfo возвращает к-во поинтов // например 10 или 8 { TakeProfit=MarketInfo(Symbol(),MODE_STOPLEVEL); // TakeProfit = 10 } if(StopLoss!=0 && StopLoss<(MarketInfo(Symbol(),MODE_STOPLEVEL))) // Аналогично. MarketInfo возвращает к-во // поинтов например 10 или 8 { StopLoss=MarketInfo(Symbol(),MODE_STOPLEVEL); // StopLoss = 10 } return(0);
Отсюда получаем
res=OrderSend(Symbol(), 0, NormalizeDouble(Lot,1), Ask, Slippage, // И все-таки 0 лучше заменить на OP_BUY !!! NormalizeDouble(Ask-StopLoss,4), // StopLoss = Ask-10 = -8.64.. для EURUSD NormalizeDouble(Ask+TakeProfit,4), 0, 0, 0, 0); // TakeProfit = Ask+10 = 11.36..
Общепринятой практикой, если уж речь зашла о шаблоне, является задание StopLoss и TakeProfit в целых пунктах с последующим умножением на Point.
Вместо
extern double TakeProfit; extern double TrailingStop; extern double StopLoss;
Задется
extern int TakeProfit = 0; extern int TrailingStop = 0; extern int StopLoss = 0;
Тогда логично получается
int init() { tp=TakeProfit*Point; sl=StopLoss*Point; return(0); } ...
... // StopLoss=sl; // TakeProfit=tp; if(TakeProfit < MarketInfo(Symbol(),MODE_STOPLEVEL)) { tp=MarketInfo(Symbol(),MODE_STOPLEVEL)*Point; } if(StopLoss < MarketInfo(Symbol(),MODE_STOPLEVEL)) { sl=MarketInfo(Symbol(),MODE_STOPLEVEL)*Point; } return(0);
И последнее. OrderSend в таком виде не покатит, потому как StopLoss для ордеров OP_BUY должен быть меньше цены закрытия на StopLevel. А цена закрытия у них это Bid
res=OrderSend(Symbol(), 0, NormalizeDouble(Lot,1), Ask, Slippage, // И все-таки 0 лучше заменить на OP_BUY NormalizeDouble(Bid-sl,Digits), // StopLoss = Bid - StopLevel - покупки закрываются по Bid!!! NormalizeDouble(Ask+tp,Digits), 0, 0, 0, 0); // Про йену забыли при округлении?Аналогично с продажами StopLoss должен быть выше Ask на уровень стопа, потому что продажи закрываются по Ask/
Просто некоторые функции окажутся полезными для кода некоторых людей. Это просто шаблон, а не слабый код. Так в заголовке и в введении написано. :)
Наоборот, шаблоны используются новичками (для обучения и для написания своих экспертов) и код в них должен быть профессиональным, хорошо комментированным и однозначным.
Ругаетесь, а сами не внимательны!!! Как и человек пять, которые уже постучали ко мне в АСЮ и спросили как это работает! :)
Поэтому в статьях, расчитанных на "чайников", подробно разжевывается каждое понятие и каждая строка кода.
В этой статье что-то понять тяжело даже опытному пользователю, приходится собирать обрывки фраз и додумывать. Без базы знаний (а у новичков ее нет!) использовать этот "шаблон" сложно и опасно.
Сколько срубил???
Маладца.
___
PS: Ничё конструктивного в голову не приходит. Завидую сдержанности и терпению отписавшихся здесь.
Администрации - фи.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
New article Универсальный шаблон экспертов has been published:
Данная статья поможет начинающим трейдерам создавать гибко-настраиваемые эксперты.
Многие трейдеры сталкивалось с проблемой написания своих экспертов. С чего начать? Как задать в коде советника тейк-профит, стоп-лосс или трейлинг-стоп? Как проверить стратегию на работоспособность? В данной статье рассматриваются основные функции для создания экспертов. Возможно для кого-нибудь код трейлинг-стопа окажется полезным.
Author: Вадим Андреевич