Есть много сделанного и прочего. В MQL4 дофига совего, как от помощников позиций. так и до полноценных роботов.
Решил провести эксперимент.
Суть:
Есть учащийся на 2м курсе Бонча в Питере (мой крестник).
Дал ему простое задание, разобрать по тексту кода алгоритма.
Случайно дал алгоритм реального свечного робота, который сам открывает/модифицирует/закрывает позиции.
Скинул ссылку на учебник MQL4, дабы все предопределённые функции посмотреть.
Скинул простейшего своего же перевода позы в безубыток +N пипс (параметров 2, оба настраиваемые), дабы разобрался бектестом.
Вопрос: разберётся с простым кодом робота свечного, если уже C++ штудируют?
Интересно же )))
Я под MQL5 уже на фортс ленюсь написать достаточное количество ранообразных (в приоритете 1… даже не скальперский, но ала «SECRET» с изюминкой).
Вот и вопрос… справится ли нынешнее поколение с простейшим реинжинирингом простейшего алгоритма, тем более, когда вообще всё подсказано!!!!
Будем посмотреть.
Разберётся — есть будущее, не разберётся — самому решать.
Пример я написал за 7,5 минут программирования. Чисты помощник. Основного данного на разбор я писал примерно 18 часов суммарно, + обдумывания в голове.
Что я ему: должен предложить самому спаять хотя бы Синклер 64кб… а потом там на бейсике хотя бы загрузчик сломать/сменить таблицу шрифтов на свои/на русский всё перевести в игре/запрогить пару-тройку своих игр, потом мигрировать от кассет на 5,25 диски, потом на 3,5, потом пентагон, потом скорпион???????????
НЕ понимаешь, о чем я написал — НЕ ЛЕЗЬ!
ЕМУ ТАКОЙ ЖИЗНИ ПРОСТО НЕ ПРОЙТИ СЕЙЧАС!!!
А он в БОНЧЕ на программиста!… не на экономиста/бухгалтера.
Я всё вышеописанное сделал ещё до поступления в ВУЗ на гуманитарный ...
В процессе учебы ещё написал минимум 1 многопльзовательскую, которая тупо называлась «STOCK»… не эксчендж.
Fry (Антон), перекосила того, кто отвечает неадекватно в теме!
Меня не перекосило, меня изначально воспитало.
Медалист в школе, универ почти с красным, первая работа = комдир.
С 2000/2001 как хобби рынок.
с 2014 хобби = основной источник заработка.
Программирование у меня в душе на непрофессиональн6ом уровне. Точнее сказать — алгоритмирование процессов.
Что я ему: должен предложить самому спаять хотя бы Синклер 64кб… а потом там на бейсике хотя бы загрузчик сломать/сменить таблицу
Все это хрень, к пониманию программирования отношения не имеет, расхожая мифология. Это всего лишь инструментарий. Все равно что предъявлять новым слесарям, что в старину хромванадиумных ключей не было, а может даже и гаек, а люди, дескать, умудрялись как то делать что то стоящее, скрепляя палки веревками.
Чего действительно не хватает нынешним программистам, так именно как раз понимания того, что их языки и технологии являются всего лишь инструментами, и знание той или иной технологии(как у Вас пример с C++) не говорит о программисте как инженере ровным счетом ничего, разве что помогает ему быть востребованным на рынке труда.
а зачем вообще давали задание? в чем суть эксперимента не для вашей семьи и крестника а для меня как трейдера читающего это? точнее вот я как посторонний человек на смартлабе читающий ленту не понял что для себя должен был вынести.
что-то из серии «я мог выпить 2 бутылки водки и вот молодой поколоние интерсно сможет дал задание»...
Тарас Громницкий, я хочу получить ответ от студента 2 курса Бонча на реинжиниринг простейшего кода, когда ему предоставлен код ещё более простой программы + мануал по встроенным функциям.
Поскольку он учится — вопрос времени, когда он вспомнит/займётся этим.
Я буду спрашивать 1 раз в 4 дня по этой теме.
НЕУЖЕЛИ НИКАК НЕ РАЗГАДАТЬ АЛГОРИТМ ПРОСТЕЙШИЙ,. если вообще все исходные даны, в т.ч. пример более простой программы, в которой практически тольоко предопределённые функции используются??????????????7
if (UpTail>DownTail) //если хвост сверху
{
if (Lenght>=BarLenght) LenghtPoint=LenghtQualityPoint;
if (((Body/Lenght*100)>=MinBarBodyRatio)&&((Body/Lenght*100)<=MaxBarBodyRatio)) BodyPoint=BodyQualityPoint;
if (((UpTail/Lenght*100)>=MinBarTailRatio)&&((UpTail/Lenght*100)<=MaxBarTailRatio)) TailPoint=TailQualityPoint;
if (((DownTail/Lenght*100)>=MinBarShootRatio)&&((DownTail/Lenght*100)<=MaxBarShootRatio)) ShootPoint=ShootQualityPoint;
if (Direction==«up») DirectionPoint=DirectionQualityPoint;
QualityPoint=LenghtPoint+BodyPoint+TailPoint+ShootPoint+DirectionPoint;
Тарас Громницкий, я вывесил код отработки всего лишь одного паттрена, но алгоритм адаптивный… экспертный… разобрать ему надо иной код… он вообще простой
Инвестаналитики повысили рекомендацию по акциям Норникеля до ПОКУПАТЬ
На днях аналитики SberCIB выпустили обзор, посвященный нашим бумагам, в котором рекомендуют инвесторам покупать акции Норникеля. Вместе разбираем отчет в нашем сегодняшнем посте. Аналитики...
28 марта прошли первые торги ОФЗ и облигациями крупных корпораций в выходной день. Опыт оказался успешным. Поэтому с 13 апреля Мосбиржа синхронизировала списки облигаций на всех торговых...
Банки снижают ставки по вкладам в преддверии заседания ЦБ
Средняя максимальная ставка по рублевым вкладам в топ-10 российских банков во второй декаде апреля снизилась с 13,43% до 13,39%. Это устойчивое движение вниз сигнализирует о настрое финансового...
Долларовые российские облигации: ищем интересные идеи
Доходности российских долларовых облигаций, после достижения локального минимума в сентябре 2025 г., скорректировались вверх и сейчас торгуются в сравнительно широком боковике. Какие уровни...
Фонды недвижимости для неквалифицированных инвесторов. Где пассивный доход для неквалов? Привет, инвесторы! По просьбам трудящихся, а точнее по зову будущих рантье, решил рассказать про инвестиции в б...
Инвестиции в термальные комплексы в 2026 году: тренд, цифры, рынок
Термальные комплексы в 2026 году — это уже не редкий экзотический формат и не ниша «для любителей SPA». Для инвестора это отдел...
Морской экспорт нефти из России за неделю 13–19 апреля вырос на 22% — до 355 тыс. тонн в сутки (впервые после трёхнедельного падения) — Ъ Морской экспорт нефти из России за неделю 13–19 апреля вырос н...
Морской экспорт нефти из России за неделю 13–19 апреля вырос на 22% — до 355 тыс. тонн в сутки (впервые после трёхнедельного падения) — Ъ Морской экспорт нефти из России за неделю 13–19 апреля вырос н...
НЕ понимаешь, о чем я написал — НЕ ЛЕЗЬ!
ЕМУ ТАКОЙ ЖИЗНИ ПРОСТО НЕ ПРОЙТИ СЕЙЧАС!!!
А он в БОНЧЕ на программиста!… не на экономиста/бухгалтера.
Я всё вышеописанное сделал ещё до поступления в ВУЗ на гуманитарный ...
В процессе учебы ещё написал минимум 1 многопльзовательскую, которая тупо называлась «STOCK»… не эксчендж.
Меня не перекосило, меня изначально воспитало.
Медалист в школе, универ почти с красным, первая работа = комдир.
С 2000/2001 как хобби рынок.
с 2014 хобби = основной источник заработка.
Программирование у меня в душе на непрофессиональн6ом уровне. Точнее сказать — алгоритмирование процессов.
Все это хрень, к пониманию программирования отношения не имеет, расхожая мифология. Это всего лишь инструментарий. Все равно что предъявлять новым слесарям, что в старину хромванадиумных ключей не было, а может даже и гаек, а люди, дескать, умудрялись как то делать что то стоящее, скрепляя палки веревками.
Чего действительно не хватает нынешним программистам, так именно как раз понимания того, что их языки и технологии являются всего лишь инструментами, и знание той или иной технологии(как у Вас пример с C++) не говорит о программисте как инженере ровным счетом ничего, разве что помогает ему быть востребованным на рынке труда.
что-то из серии «я мог выпить 2 бутылки водки и вот молодой поколоние интерсно сможет дал задание»...
Здесь вопрос в том что вы хотите получить в итоге.
Если качественный, стабильный софт, то ваш подход иррационален.
Потому как на выходе в любом случае будет куча «велосипедов» и костылей, которые ни к чему хорошему не приведут.
Иными словами вам придётся долго и упорно обучать новичка на собственных ошибках и деньгах.
Если вам нужен софт о котором не нужно беспокоиться, то придётся искать специалиста и платить ему.
Иного выхода нет.
Поскольку он учится — вопрос времени, когда он вспомнит/займётся этим.
Я буду спрашивать 1 раз в 4 дня по этой теме.
НЕУЖЕЛИ НИКАК НЕ РАЗГАДАТЬ АЛГОРИТМ ПРОСТЕЙШИЙ,. если вообще все исходные даны, в т.ч. пример более простой программы, в которой практически тольоко предопределённые функции используются??????????????7
Вопрос «пытливости ума» «нынешнего поколения».
//---- input parameters
extern int BarLenght=40;
extern int MinBarBodyRatio=10;
extern int MaxBarBodyRatio=35;
extern int MinBarTailRatio=40;
extern int MaxBarTailRatio=80;
extern int MinBarShootRatio=0;
extern int MaxBarShootRatio=15;
extern double LotSize=0.1;
extern int TP_Pips=20;
extern int SL_Pips=500;
extern int OpenDeviation_Pips=3;
double Lenght;
double Body;
double UpTail;
double DownTail;
string Direction;
extern double MinQualityPoint=3.5;
double QualityPoint;
extern double LenghtQualityPoint=1.5;
extern double BodyQualityPoint=1.0;
extern double TailQualityPoint=1.0;
extern double ShootQualityPoint=0.5;
extern double DirectionQualityPoint=0.5;
double LenghtPoint=0.0;
double BodyPoint=0.0;
double TailPoint=0.0;
double ShootPoint=0.0;
double DirectionPoint=0.0;
datetime OldBarTime;
datetime NewBarTime;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//---
OldBarTime=iTime(NULL,0,0); //при перезапуске отсекаем формирующуюся свечу
LenghtPoint=0.0;
BodyPoint=0.0;
TailPoint=0.0;
ShootPoint=0.0;
DirectionPoint=0.0;
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
RefreshRates();
NewBarTime=iTime(NULL, 0, 0); //задаем время новой свечи
if (OldBarTime!=NewBarTime) //если сменился бар
{
Lenght=MathAbs((iHigh(NULL,0,1)-iLow(NULL, 0, 1))/Point); //длина
Body=MathAbs((iOpen(NULL, 0,1)-iClose(NULL, 0,1))/Point); //тело
UpTail=MathAbs(iHigh(NULL, 0, 1)-MathMax(iClose(NULL, 0, 1), iOpen(NULL, 0, 1)))/Point; //верхний хвост
DownTail=MathAbs(iLow(NULL, 0, 1)-MathMin(iClose(NULL, 0, 1), iOpen(NULL, 0, 1)))/Point; //нижний хвост
if (iOpen(NULL, 0,1)<iClose(NULL, 0,1)) //определяем тип свечи
{ Direction=«up»;
}else Direction=«down»;
//Alert («Длина », Lenght);
//Alert («Тело », Body);
//Alert («Хвост верх », UpTail);
//Alert («Хвост низ », DownTail);
//Alert («Тип », Direction);
if (UpTail>DownTail) //если хвост сверху
{
if (Lenght>=BarLenght) LenghtPoint=LenghtQualityPoint;
if (((Body/Lenght*100)>=MinBarBodyRatio)&&((Body/Lenght*100)<=MaxBarBodyRatio)) BodyPoint=BodyQualityPoint;
if (((UpTail/Lenght*100)>=MinBarTailRatio)&&((UpTail/Lenght*100)<=MaxBarTailRatio)) TailPoint=TailQualityPoint;
if (((DownTail/Lenght*100)>=MinBarShootRatio)&&((DownTail/Lenght*100)<=MaxBarShootRatio)) ShootPoint=ShootQualityPoint;
if (Direction==«up») DirectionPoint=DirectionQualityPoint;
QualityPoint=LenghtPoint+BodyPoint+TailPoint+ShootPoint+DirectionPoint;
Print (Symbol(), ": ",Hour(), ":", Minute(), ": Длина-",Lenght ,"(", LenghtPoint,"), Тело-", Body,"(",BodyPoint ,"), Верх-", UpTail,"(",TailPoint ,"), Низ-", DownTail,"(",ShootPoint ,"), Направление-",Direction ,"(",DirectionPoint ,"), Всего=",QualityPoint);
if (QualityPoint>=MinQualityPoint)
OrderSend(Symbol(),OP_SELL, LotSize, Bid, OpenDeviation_Pips, (Bid+SL_Pips*Point), (Bid-TP_Pips*Point));
LenghtPoint=0.0;
BodyPoint=0.0;
TailPoint=0.0;
ShootPoint=0.0;
DirectionPoint=0.0;
OldBarTime=iTime(NULL, 0, 0);
}else
{
if (Lenght>=BarLenght) LenghtPoint=LenghtQualityPoint;
if (((Body/Lenght*100)>=MinBarBodyRatio)&&((Body/Lenght*100)<=MaxBarBodyRatio)) BodyPoint=BodyQualityPoint;
if (((UpTail/Lenght*100)>=MinBarShootRatio)&&((UpTail/Lenght*100)<=MaxBarShootRatio)) ShootPoint=ShootQualityPoint;
if (((DownTail/Lenght*100)>=MinBarTailRatio)&&((DownTail/Lenght*100)<=MaxBarTailRatio)) TailPoint=TailQualityPoint;
if (Direction==«down») DirectionPoint=DirectionQualityPoint;
QualityPoint=LenghtPoint+BodyPoint+TailPoint+ShootPoint+DirectionPoint;
Print (Symbol(), ": ",Hour(), ":", Minute(), ": Длина-",Lenght ,"(", LenghtPoint,"), Тело-", Body,"(",BodyPoint ,"), Верх-", UpTail,"(",TailPoint ,"), Низ-", DownTail,"(",ShootPoint ,"), Направление-",Direction ,"(",DirectionPoint ,"), Всего=",QualityPoint);
if (QualityPoint>=MinQualityPoint)
OrderSend(Symbol(),OP_BUY, LotSize, Ask, OpenDeviation_Pips, (Ask-SL_Pips*Point), (Ask+TP_Pips*Point));
LenghtPoint=0.0;
BodyPoint=0.0;
TailPoint=0.0;
ShootPoint=0.0;
DirectionPoint=0.0;
OldBarTime=iTime(NULL, 0, 0);
}
}
//----
return(0);
}
//+--------------------
Йожык, с исходниками разгадать можно.
Это просто.
Предположим он разгадал и объяснил вам его на человеческом языке.
Какие дальнейшие действия ?
Спрашиваю потому как разгадывание почти ничего не говорит о человеке, как о программисте.
Йожык, вот на предмет качества он сравнить и не сможет.
Равно как и написать качественный код.
Как говорил ранее, хороший программист — это опыт, извлечённый из ошибок.
Плюс дополнительные специфичные знания вроде паттернов и иных архитектурных подходов.
Понимание алгоритмов, фреймворков и технологий самом собой подразумевается.