Есть много сделанного и прочего. В 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;
Тарас Громницкий, я вывесил код отработки всего лишь одного паттрена, но алгоритм адаптивный… экспертный… разобрать ему надо иной код… он вообще простой
И кстати по цене акции в 0,4р. Заплатить дивы 0,1р. Цена улетит на 0,3р. Как вы думаете, как быстро закроется дивгэп при такой цене? Или есть другой вариант, разбить выплату див по пол года, что бы не...
Главные потери этого года для пропаганды Solidcore и ММВБ:
После ряда вскрытий нашими силами косяков эмитента и Мосбиржи:
16.10.2024
директору по связям с инвесторами Евгению Монахову сказ...
AlexRondo, У меня, в ВТБ, от Кисточек приходит на брокерский счёт. У других, в ВТБ банк, приходит на мастер счёт. На скрине видно, что платёж Кисточек виден в приложении. В приложении банка ВТБ тож...
НЕ понимаешь, о чем я написал — НЕ ЛЕЗЬ!
ЕМУ ТАКОЙ ЖИЗНИ ПРОСТО НЕ ПРОЙТИ СЕЙЧАС!!!
А он в БОНЧЕ на программиста!… не на экономиста/бухгалтера.
Я всё вышеописанное сделал ещё до поступления в ВУЗ на гуманитарный ...
В процессе учебы ещё написал минимум 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);
}
//+--------------------
Йожык, с исходниками разгадать можно.
Это просто.
Предположим он разгадал и объяснил вам его на человеческом языке.
Какие дальнейшие действия ?
Спрашиваю потому как разгадывание почти ничего не говорит о человеке, как о программисте.
Йожык, вот на предмет качества он сравнить и не сможет.
Равно как и написать качественный код.
Как говорил ранее, хороший программист — это опыт, извлечённый из ошибок.
Плюс дополнительные специфичные знания вроде паттернов и иных архитектурных подходов.
Понимание алгоритмов, фреймворков и технологий самом собой подразумевается.