Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 940

 
Seric29:

Проблема в том что я применяю шаблоны ко всем функциям которые принимают массивы, а экспорт и импорт шаблонных функций не возможен это придётся дублировать функции под каждый тип, такая же ситуация и с размеренностью mql не хочет их отдавать просто так и опять приходится дублировать их по размеренности получается своего рода перегрузка но добавлять дополнительные аргументы не нужно тем не менее это тоже лишний код, что касается того чтобы наращивать аргументы функции то mql тоже не отдаст просто так данные придётся дублировать функции делать перегрузку, также я не решил проблему со стороны c++ о том как обрабатывать цвета и даты, также в с++ нету автономных функций которые возвращают данные о массивах и другие данные здесь придётся писать свои функции понятно что никуда не денешься и их напишешь но на это уйдёт год, также библиотеки усложнят калибровку когда приходится вызывать функцию принт и вписывать туда 20 параметров и в ручную всё сутками считать, да и само наличие библиотек будет обязывать следить за файлами за корректностью, не говоря о подводных камнях о которых я не знаю в конечном итоге учитывая всё это стоит либо решить проблему использую все полные возможности mql либо тогда делать лишние проверки и записи но код будет простой. Так что я не думаю что это того стоит, я думал написать свой язык но опять же я написал 15% своего робота и потратил более года чтобы всё откалибровать и сделать максимально универсально и обеспечить быструю производительность и 3 года на расчёты. Мне просто жизни не хватит чтобы написать свой язык. Как то так.

Свой язык - это круто!

Но может Вам для начала выучить MQL.

И тогда Вы увидите, что его возможности и сейчас уже не маленькие.

А уж если Вы выучите C++, то у Вас вообще не будет проблем в программировании.

Да, Ваш код на C++, я посмотрел и хорошо вижу, что знаете Вы крайне мало.

 
Koldun Zloy:

Да, Ваш код на C++, я посмотрел и хорошо вижу, что знаете Вы крайне мало.

Учиться программировать лучше c 4ёх лет, а мне уже 26, вероятность стать крутым программистом очень мала, вспомните таких как Илон Маск и других кто умел программировать в 9 лет, мне бы хотя бы выполнить основную задачу.

 

Есть функция 

ArrayCopy

Но она не даёт возможность копировать конкретный столбец. Далее есть функция 

ArrayInitialize

и опять та же ерунда,далее есть функция 

ArrayFill

но здесь тоже нельзя указывать столбец. Какой прок от этих функций если нужно свои писать.

 
Seric29:

Учиться программировать лучше c 4ёх лет, а мне уже 26

ох и забористое, что то Вы курите! )))))

с 4-х лет нельзя научить ребенка программированию, ибо мало того, что он еще играть в игрушки хочет путем их бросания на пол, так ребенок еще чтению не обучен, максимум уже считать до десяти умеет (вундеркинды до 100! ))) )

в 26 лет нельзя чему то научиться? да за три месяца, что Вы пишете свою проблему, Вы бы уже решили ее, если бы начали читать и читать, форум MQL один из не многих форумов где в течении 1-2 часа можно получить ответ на свой вопрос, это реально круто! а Вы не пользуетесь этим ((( ... в общем это Ваш жизненный путь. Вот нашел, по Вашей проблеме, лучше не скажешь:

https://www.mql5.com/ru/forum/3457/page4494#comment_12804114

 
Seric29:

Учиться программировать лучше c 4ёх лет, а мне уже 26, вероятность стать крутым программистом очень мала, вспомните таких как Илон Маск и других кто умел программировать в 9 лет, мне бы хотя бы выполнить основную задачу.

Я начинал не с 4 лет, и даже не с 9.

Вероятность стать крутым программистом, начав в 26, очень высока.

 

Ребята у меня к вам вопрос только не смейтесь почему не работает такой код

#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#define Mkarr(q,w,e,r) switch(ArrayDimension(q)){case 3:q[w][e][r]=15;break;case 2:q[w][e]=15;break;}
int Mas[7],//#else
    Mas2[2][2]={{3,8},{4,17}},
    Mas22[2][2]={{31,128},{94,107}},
    Mas3[2][2][2];

int OnInit()
  {int Perem=ArrayDimension(Mas); 
   Mkarr(Mas2,0,0,0);
   return(INIT_SUCCEEDED);
  }

Пишет неверный доступ к массиву откуда он это знает если не проверены все варианты case пробовал и через если тоже ничего не проверено и выбивает ошибку?А нельзя ли пропустить код при компиляции или это не поможет?

 
Seric29:

Ребята у меня к вам вопрос только не смейтесь почему не работает такой код

Пишет неверный доступ к массиву откуда он это знает если не проверены все варианты case пробовал и через если тоже ничего не проверено и выбивает ошибку?А нельзя ли пропустить код при компиляции или это не поможет?

ту не смешно, а плакать хочется 

зачем Вы используете макроПОДСТАНОВКИ если не умеете ими пользоваться? раскройте макрос (просто копипаст ёпт!) и Вы должны увидеть где ошибка

ЗЫ: .....«Мыши плакали, кололись, но продолжали грызть кактус»   ((((

 
Igor Makanu:

ту не смешно, а плакать хочется 

зачем Вы используете макроПОДСТАНОВКИ если не умеете ими пользоваться? раскройте макрос (просто копипаст ёпт!) и Вы должны увидеть где ошибка

ЗЫ: .....«Мыши плакали, кололись, но продолжали грызть кактус»   ((((

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

 
Seric29:

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

еще раз... берете в МЕ (да хоть в блокноте! ) руками свою макроподстановку и "втыкиваете" вместо ее использования, все параметры в скобках заменяете на свои цифры

я даже не знаю как  уже проще обьяснить... ну прочитайте Вики если справки по MQL не достаточно 

Макрокоманда

Препроцессор Си

 
Igor Makanu:

еще раз... берете в МЕ (да хоть в блокноте! ) руками свою макроподстановку и "втыкиваете" вместо ее использования, все параметры в скобках заменяете на свои цифры

заменил за Вас, вот без макроподстановки будет код

//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//#define Mkarr(q,w,e,r) switch(ArrayDimension(q)){case 3:q[w][e][r]=15;break;case 2:q[w][e]=15;break;}
int Mas[7],//#else
Mas2[2][2]={{3,8},{4,17}},
Mas22[2][2]={{31,128},{94,107}},
Mas3[2][2][2];
int OnInit()
  {
   int Perem=ArrayDimension(Mas);
//   Mkarr(Mas2,0,0,0);
   switch(ArrayDimension(Mas2))
     {
      case 3:Mas2[0][0][0]=15;
      break;
      case 2:Mas2[0][0]=15;
      break;
     }
   return(INIT_SUCCEEDED);
  }

не знаю, зачем Вы столько времени тратите на работу с многомерными массивами если Вы синтаксис и основы С++ / MQL не можете понять, у Вас массивы определены с одной размерностью, а Вы пытаетесь их использовать  их с другой размерностью, я конечно могу и ошибаться, но такой фокус даже в Python не должен работать, имхо