Обсуждение статьи "Пошаговое руководство по написанию советников в MQL5 для начинающих" - страница 7

 
Renat:

Использование неинициализированных (или неполностью) переменных (особенно структур) - это очень частая ошибка в программировании.

Блин, ну вот единственный русскоязычный ресурс, где тебе (1) толково промывают мозги и (2) ты испытываешь чувство благодарности за это :)

Вот уже 1,5 года знаю, что надо инициализировать переменные; 1,5 года намеренно употребляю фразу "переменная типа структуры"; но при этом 1,5 года присваиваю значения только отдельным (обязательным к заполнению) полям переменной типа Mqltraderequest, поскольку в Справочнике сказано, что "для каждой торговой операции необходимо указывать обязательные   поля"...

 
papaklass:
Renat, было бы не плохо, если бы на тему "работа с памятью и переменными" Вы (MQ) бы опубликовали статью или серию статей. Вообще, как правильно работать с памятью и переменными? После дисквалификации на Чемпионате нескольких советников из-за большого потребления памяти, эти статьи были бы уместными. Rosh в какой то теме писал, чтобы пользователи сами заказывали статьи, которые их интересуют, но я не нашел эту тему, поэтому пишу здесь.
Да, было бы интересно почитать статью на эту тему. Очень интересно почему на чемпионате у некоторых участников эксперты использовали так много памяти и как можно избежать подобной ситуации. У меня таких проблем не возникало, но это всё случайность. То есть я не знаю почему этого у меня не происходит, а хотелось бы знать, что делать, если вдруг. 
 
В первую очередь, расход памяти связан с вызовами индикаторов. Прежде чем создавать хендлы десятков индикаторов на различных символах/тпймфреймах, подумайте, какая плата будет за это. Могу посоветовать статью Уменьшаем расход памяти на вспомогательные индикаторы и ознакомиться с интервью одного из дисквалифицированных участников - Интервью с Ацуси Яманака (alohafx).
Интервью с Ацуси Яманака (alohafx) - Automated Trading Championship 2011
  • championship.mql5.com
Что общего между трейдингом, скайдайвингом, фьючерсами, Гавайями, переводами и шпионами? Мы тоже не знали, пока не пообщались с дисквалифицированным участником Ацуси Яманака (alohafx). Его кредо - ''Life is Good! - Жизнь прекрасна!'', и с этим трудно не согласиться. Было интересно узнать, что расстояние между разными континентами - не помеха в общении участников нашего Чемпионата.
 

Почему при затягивании S/L до 5 (должно быть 5 пунктов)

У меня следующее

Файлы:
Capture.PNG  8 kb
 
statarb:

Почему при затягивании S/L до 5 (должно быть 5 пунктов)

У меня следующее

Перед отправкой торгового запроса необходимо проверить стоп-уровни(SYMBOL_TRADE_STOPS_LEVEL) для символа. SL/TP не должны быть ближе, чем это расстояние до текущей цены для закрытия. Пример получения этого свойства:

int StopLevel_Distance=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);
double SL=... // получите новый SL путем вычисления
//--- проверьте текущий рассчитанный уровень Stop Loss
if(SL>SymbolInfoDouble(_Symbol,SYMBOL_ASK)-StopLevel_Distance*_Point) 
   SL=SymbolInfoDouble(_Symbol,SYMBOL_ASK)-StopLevel_Distance*_Point;
//... измените SL для позиции
 

Спасибо, но ни мой SL, ни мой TP не выполняются. В компиляторе "Терминал" они указаны как "0.00" или "0.0" В любом случае невозможно дать общий стоплосс для всех ордеров. А изменить значения параметров "извне", т.е. не меняя код в редакторе, у меня пока не получилось.

В остальном все работает отлично! И комментарии очень помогают!

Еще раз спасибо,

locan BBS

.locan.BBS:

 

Привет, Olowsam,

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

Я следовал вашей инструкции до буквы, но не достиг желаемого результата. Во-первых, я работаю с последней версией Meta Trader 5.00, Build 6.55 (6 июня 2012 года). Я заметил несколько отличий, первое из которых - шаблон мастера MQL5 имеет дополнительные опции, нежели те, что вы указали в своих заметках. В любом случае, я убедился, что программа работает именно так, как вы описали. Я скомпилировал ее. Никаких проблем. Ноль ошибок. Мне удалось вставить все 5 отладочных точек останова, как предложено в ваших заметках, в подпрограмму OnTick. Нажимаю зеленую кнопку Run и НИЧЕГО не происходит. Программа не доходит до этой точки. Почему? Что происходит? Если я вставляю отладочные точки останова @ начало подпрограммы OnInit, @ скажем, adzHandle=iADX9Null,0,ADX_Period), то все нормально. Вкладки отладочного STEP загораются, и я могу выполнить одиночный шаг по этому элементу управления до конца подзадачи OnInit. Однако после этого снова ничего. Короче говоря, я не могу добраться до подзаголовка OnTick. Что происходит и почему? Является ли это известной ошибкой в работе системы Meta Trader? Как я могу решить эту проблему и двигаться дальше?

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

Спасибо.

С наилучшими пожеланиями

Кишор

 

Отличная статья,

Я вводил весь код по ходу дела и не получал ошибок компиляции в конце, так что, должно быть, все было хорошо объяснено. Хорошее упражнение для первого использования системы metatrader5/mql5.

Возможно, придется немного оптимизировать, чтобы заставить график двигаться в восходящем направлении :D

Всего наилучшего и спасибо!!!

Майк

 

Привет,

Мне очень понравился стиль кодирования в этой статье, очень легко читать и следовать. У меня только одна просьба, если вы не возражаете, не могли бы вы также привести пример того, как реализовать трейлинг-стоп с помощью этого примера?

Большое спасибо!

 
Большое спасибо за прекрасный путеводитель!