O que deve ser acrescentado para apoio adicional de cálculos matemáticos universais em MQL5 e MQL5 Cloud Network? - página 9

 

Sim, os jogos dão um pontapé no desempenho e na tecnologia. Porque puxam o hardware para um nível qualitativo. (Embora um professor que conheço na universidade tenha considerado os jogos como um mal universal por alguma razão:)

Quanto à universalidade das funções, aqui estão as direcções para a implementação passo a passo

- previsão do tempo
- processamento de dados científicos (espaço, física nuclear)
- farmacêutica
- renderização 3D (como uma aplicação prática para dinheiro)

e depois chegamos à previsão de troca...

PS.
E com a UCI, como eu disse, poderia fazer um pedido para MT :)

 
sergeev:

Não estou a falar da nuvem. As capacidades da nuvem são claras. Também pode ser utilizado fora do MT.

Estou a falar de MT.

Não vejo nada de errado em realizar uma competição de bot de xadrez com base no MT. E estes mesmos bots irão utilizar os recursos informáticos da nuvem.

 

Talvez realmente desistir de jogar forex e jogar xadrez? Eu costumava ser muito bom nisso.

Mas eu gosto mais de gamão. Talvez alguém pudesse programar backgammon no MT5, ficaria eternamente grato.

 
Póquer! Vamos rasgar o EPT!))
 
pronych:
Póquer! Vamos rasgar o EPT!)))
Não há necessidade desse tipo de poder aí dentro.
 
Iremos definitivamente implementaro projecto de neurodrive, enquanto estamos ocupados com os sinais. Temos grandes planos sobre redes neurais em MT5.

Se o empreendemos, seguimos em frente. Por exemplo, implementámos AlgLib inteiramente por nós próprios, embora houvesse uma ideia para envolver a comunidade.

Até agora, há um sentimento de que poucas pessoas querem realmente participar nos projectos com excesso de recursos e gastar o seu tempo.
 
Renat:

Até agora, há um sentimento de que poucas pessoas querem realmente envolver-se nos projectos com excesso de recursos e desperdiçar o seu tempo.

Não tenho qualquer experiência. Pensei que tinha prometido fazer de alguém da sua equipa um mentor para o projecto na altura.

E sem um pastor, as ovelhas irão dispersar-se. Assim, se alguém faz alguma coisa na comunidade, é o único responsável pelo seu trabalho.

 
sergeev :

nenhuma experiência. você meio que prometeu fazer de alguém da sua equipe um curador do projeto.

mas sem pastor as ovelhas serão dispersas. Portanto, se alguém faz algo na comunidade, somente ele é responsável por seu trabalho.

Mais do que experiência em boltology. Vamos cegar assim, vamos sentar assim, etc. etc. de acordo com a fábula do avô Krylov chamado Quarteto. Ninguém faz nada, todos com rostos inteligentes apenas expressam suas opiniões.

Nenhum curador é necessário para incitar a todos com um bastão. O gerente de projeto deve criar as primeiras linhas de código - as interfaces das classes futuras, a partir das quais já ficará mais ou menos claro onde dançar mais e onde está o beco sem saída. E então, algum participante do projeto justifica o que exatamente ele vai fazer e, se sua atividade potencial não contradiz a direção geral, ele é encarregado da implementação de sua ideia. Então algum outro participante se conecta. etc. etc.

Aqui, por exemplo, havia tempo livre, aqui eu joguei alguns esboços de aulas para um programa de xadrez:

 //+------------------------------------------------------------------+
//|                                                    CChessman.mqh |
//|                                 Copyright 2012, Yury V. Reshetov |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, Yury V. Reshetov"
#property link       "http://www.mql5.com"

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class CChessman // Класс: шахматная фигура
  {
private :
   int                type; // Тип фигуры: 
                           // 0 - пешка,
   // 1 - ладья
   // 2 - конь
   // 3 - слон
   // 4 - ферзь
   // 5 - король
   int                c; // Цвет фигуры: 0 - белый, 1 - черный 
   int                h; // Положение фигуры по горизонтали
   int                v; // Положение фигуры по вертикали
   bool               state; // Состояние фигуры: true - на доске, false - взята противником

public :
   void               CChessman( int t, int horisontal, int vertical, int group ); // Конструктор
   void              ~CChessman(); // Деструктор
                                   // Изменение местонахождения фигуры на доске
   // Возвращает результат, если изменение корректно и было выполнено
   bool               setPosition( int horisontal, int vertical); // Изменение позиции фигуры на доске
   void               erase(); // Вызывается, если фигура взята противником
   int                getType(); // Возвращает тип фигуры
   int                getHPosition(); // Возвращает положение фигуры на доске по вертикали
   int                getVPosition(); // Возвращает положение фигуры на доске по горизонтали
   int                getColor(); // Возвращает цвет фигуры
   bool               getState(); // Возвращает текущий статус фигуры
  };
//+------------------------------------------------------------------+
//|    Конструктор                                                   |
//+------------------------------------------------------------------+
void CChessman::CChessman( int t, int horisontal, int vertical, int group ) 
  {
   state= true ;
   type = t;
   h = horisontal;
   v = vertical;
   c = group ;
  }
//+------------------------------------------------------------------+
//|      Изменение позиции фигуры на доске                           |
//+------------------------------------------------------------------+
bool CChessman::setPosition( int horisontal, int vertical) 
  {
   if (!state) 
     {
       return ( false );
     }
   if (horisontal< 0 ) 
     {
       return ( false );
     }
   if (horisontal> 7 ) 
     {
       return ( false );
     }
   if (vertical< 0 ) 
     {
       return ( false );
     }
   if (vertical> 7 ) 
     {
       return ( false );
     }
   h = horisontal;
   v = vertical;
   return ( true );
  }
//+------------------------------------------------------------------+
//|       Удаление фигуры с доски                                    |
//+------------------------------------------------------------------+
void CChessman::erase( void ) 
  {
   state= false ;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CChessman::getType( void ) 
  {
   return (type);
  }
//+------------------------------------------------------------------+
//|         Возвращает горизонтальное положение фигуры на доске      |
//+------------------------------------------------------------------+
int CChessman::getHPosition( void ) 
  {
   return (h);
  }
//+------------------------------------------------------------------+
//|         Возвращает вертикальное положение фигуры на доске        |
//+------------------------------------------------------------------+
int CChessman::getVPosition( void ) 
  {
   return (v);
  }
//+------------------------------------------------------------------+
//|        Возвращает цвет фигуры                                    |
//+------------------------------------------------------------------+
int CChessman::getColor( void ) 
  {
   return (c);
  }
//+------------------------------------------------------------------+
//|         Возвращает статус фигуры                                 |
//+------------------------------------------------------------------+
bool CChessman::getState( void ) 
  {
   return (state);
  }
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//|                                              CChessmansArray.mqh |
//|                                 Copyright 2012, Yury V. Reshetov |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, Yury V. Reshetov"
#property link       "http://www.mql5.com"
#include <Chess/CChessman.mqh>
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class CChessmansArray // Класс: Шахматная доска
  {
private :
   CChessman        *table[]; // Массив шахматных фигур

public :
   void               CChessmansArray(); // Конструктор
   void              ~CChessmansArray(); // Деструктор
   CChessman        *getChessman( int i);
   void               goWhite(); // Ход белых
   void               goBlack(); // Ход черных
  };
//+------------------------------------------------------------------+
//|          Конструктор                                             |
//+------------------------------------------------------------------+
void CChessmansArray::CChessmansArray( void ) 
  {
   ArrayResize (table, 32 );

   table[ 0 ] = new CChessman( 1 , 0 , 0 , 1 ); // Левая белая ладья
   table[ 1 ] = new CChessman( 2 , 1 , 0 , 1 ); // Левый белый конь
   table[ 2 ] = new CChessman( 3 , 2 , 0 , 1 ); // Левый белый слон
   table[ 3 ] = new CChessman( 4 , 3 , 0 , 1 ); // Белый ферзь
   table[ 4 ] = new CChessman( 5 , 4 , 0 , 1 ); // Белый король
   table[ 5 ] = new CChessman( 3 , 5 , 0 , 1 ); // Правый белый слон
   table[ 6 ] = new CChessman( 2 , 6 , 0 , 1 ); // Правый белый конь
   table[ 7 ] = new CChessman( 1 , 7 , 0 , 1 ); // Правая белая ладья

   table[ 0 ] = new CChessman( 0 , 0 , 1 , 1 ); // Белая пешка
   table[ 1 ] = new CChessman( 0 , 1 , 1 , 1 ); // Белая пешка
   table[ 2 ] = new CChessman( 0 , 2 , 1 , 1 ); // Белая пешка
   table[ 3 ] = new CChessman( 0 , 3 , 1 , 1 ); // Белая пешка
   table[ 4 ] = new CChessman( 0 , 4 , 1 , 1 ); // Белая пешка
   table[ 5 ] = new CChessman( 0 , 5 , 1 , 1 ); // Белая пешка
   table[ 6 ] = new CChessman( 0 , 6 , 1 , 1 ); // Белая пешка
   table[ 7 ] = new CChessman( 0 , 7 , 1 , 1 ); // Белая пешка

   table[ 0 ] = new CChessman( 1 , 0 , 7 , - 1 ); // Левая черная ладья
   table[ 1 ] = new CChessman( 2 , 1 , 7 , - 1 ); // Левый черный конь
   table[ 2 ] = new CChessman( 3 , 2 , 7 , - 1 ); // Левый черный слон
   table[ 3 ] = new CChessman( 4 , 3 , 7 , - 1 ); // Черный ферзь
   table[ 4 ] = new CChessman( 5 , 4 , 7 , - 1 ); // Черный король
   table[ 5 ] = new CChessman( 3 , 5 , 7 , - 1 ); // Правый черный слон
   table[ 6 ] = new CChessman( 2 , 6 , 7 , - 1 ); // Правый черный конь
   table[ 7 ] = new CChessman( 1 , 7 , 7 , - 1 ); // Правая Черная ладья

   table[ 0 ] = new CChessman( 0 , 0 , 6 , - 1 ); // Черная пешка
   table[ 1 ] = new CChessman( 0 , 1 , 6 , - 1 ); // Черная пешка
   table[ 2 ] = new CChessman( 0 , 2 , 6 , - 1 ); // Черная пешка
   table[ 3 ] = new CChessman( 0 , 3 , 6 , - 1 ); // Черная пешка
   table[ 4 ] = new CChessman( 0 , 4 , 6 , - 1 ); // Черная пешка
   table[ 5 ] = new CChessman( 0 , 5 , 6 , - 1 ); // Черная пешка
   table[ 6 ] = new CChessman( 0 , 6 , 6 , - 1 ); // Черная пешка
   table[ 7 ] = new CChessman( 0 , 7 , 6 , - 1 ); // Черная пешка

  }
//+------------------------------------------------------------------+
//|       Возвращает объект фигуры по индексу в массиве              |
//+------------------------------------------------------------------+
CChessman *CChessmansArray::getChessman( int i) 
  {
   return (table[i]);
  }
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//|                                                    CChessBot.mqh |
//|                                 Copyright 2012, Yury V. Reshetov |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, Yury V. Reshetov"
#property link       "http://www.mql5.com"
#include <Chess/CChessman.mqh>
#include <Chess/CChessmansArray.mqh>
//+------------------------------------------------------------------+
//|      Класс: бот-шахматист                                        |
//+------------------------------------------------------------------+
class CChessBot // Класс: бот-шахматист
  {
private :
   CChessman        *chessmans[]; // Шахматные фигуры
   int                table[]; // Шахматная доска
   int                c; // Цвет фигур: 0 - белый, 1 - черный

public :
   void               CChessBot( int group); // Конструктор
   void              ~CChessBot(); // Деструктор
   void               setTable(CChessmansArray *t); // Расставляет фигуры
   int                go(); // Ход. Возвращает индекс своей фигуры, которой был сделан ход. 
   int                analitic(); // Анализ ходов 
  };
//+------------------------------------------------------------------+
//|                  Конструктор                                     |
//+------------------------------------------------------------------+
void CChessBot::CChessBot( int group) 
  {
   c=group;
  }
//+------------------------------------------------------------------+
//|                  Расстановка фигур на шахматной доске            |
//+------------------------------------------------------------------+
void CChessBot::setTable(CChessmansArray *mans) 
  {
   ArrayResize (chessmans, 32 );
   ArrayResize (table, 64 );
   for ( int i= 0 ; i< 32 ; i++) 
     {
      chessmans[i]=mans.getChessman(i);
      table[chessmans[i].getHPosition() * 8 + chessmans[i].getVPosition()] = chessmans[i].getType() * 2 + chessmans[i].getColor();
     }
  }
//+------------------------------------------------------------------+
//|             Полуход                                              |
//+------------------------------------------------------------------+
int CChessBot::go( void ) 
  {
   return ( 0 );
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                   CChessGame.mqh |
//|                                 Copyright 2012, Yury V. Reshetov |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, Yury V. Reshetov"
#property link       "http://www.mql5.com"
#include <Chess/CChessBot.mqh>
#include <Chess/CChessmansArray.mqh>
#include <Chess/CChessman.mqh>
//+------------------------------------------------------------------+
//|    Класс: Шахматная доска                                        |
//+------------------------------------------------------------------+
class CChessGame  
  {
private :
   CChessmansArray  *chessmans; // Шахматная массив шахматных фигур
   CChessBot        *whitebot; // Бот, играющий белыми
   CChessBot        *blackbot; // Бот, играющий черными

public :
   void               CChessGame(CChessBot *w,CChessBot *b); // Конструктор
   void              ~CChessGame(); // Деструктор
   void               game();   // Игра
   int                goWhite(); // Ход белых
   int                goBlack(); // Ход черных
  };
//+------------------------------------------------------------------+
//|                 Конструктор                                      |
//+------------------------------------------------------------------+
void CChessGame::CChessGame(CChessBot *w,CChessBot *b)
  {
   chessmans= new CChessmansArray();
   whitebot=w;
   whitebot.setTable(chessmans);
   blackbot=b;
   blackbot.setTable(chessmans);
  }
//+------------------------------------------------------------------+
//|           Полуход белых                                          |
//+------------------------------------------------------------------+
int CChessGame::goWhite( void )
  {
   return (whitebot.go());
  }
//+------------------------------------------------------------------+
//|         Полуход черных                                           |
//+------------------------------------------------------------------+
int CChessGame::goBlack( void )
  {
   return (blackbot.go());
  }
//+------------------------------------------------------------------+
//|            Игра                                                  |
//+------------------------------------------------------------------+
void CChessGame::game( void )
  {
   bool stopflag= false ;
   while (!stopflag)
     {
       if (goWhite()>= 0 )
        {
         if (goBlack()>= 0 )
           {
             // ...
           } else {
                  stopflag= false ;
           }
        } else {
               stopflag= false ;
        }
     }
  }
//+------------------------------------------------------------------+


Agora você pode criar um projeto no repositório e conectar desenvolvedores adicionais a ele. Mas não todos aqueles que querem expressar algum tipo de opinião lá, mas sim dentre aqueles que vão fazer algo específico.

 

Yuri, é bastante claro com os motores de xadrez - o tema foi muito bem trabalhado por outras pessoas.

Se o aceitar, terá de utilizar a experiência acumulada e o conjunto 10000 por cento de optimizações iniciais e extremamente dentadas (cartões de bits, predefinições, etc.).

Não se pode começar do zero com ABCs e erros. Nenhuma "optimização prematura é má". Aqui precisa imediatamente de uma experiência extrema na implementação de cálculos numéricos baseados no xadrez.

Felizmente, há muitos artigos, fontes e explicações detalhadas sobre eles à disposição do público. Ao começar a ler sobre o assunto, compreenderá imediatamente o nível extremo das soluções alcançadas.

 
Renat:

Yuri, é bastante claro com os motores de xadrez - o tema foi muito bem trabalhado por outras pessoas.

Se o aceitar, terá de utilizar a experiência acumulada e o conjunto de 10000 por cento de optimizações iniciais e de extrema moagem dos dentes (cartões bitcards, predefinições, etc.).

Não se pode começar do zero com ABCs e erros. Nenhuma "optimização prematura é má". Aqui precisa imediatamente de uma experiência extrema na implementação de cálculos numéricos baseados no xadrez.

Felizmente, existem muitos artigos, fontes e explicações detalhadas dos mesmos no domínio público. Assim que começar a ler sobre o assunto, compreenderá imediatamente o nível extremo das soluções alcançadas.

Também tenho alguma literatura, e a Botvinnik ainda está em formato papel. E tenho alguns desenvolvimentos, claro, não na MQL5, mas na muLisp.

Tentei mostrar a alguns promotores locais, que não precisam de supervisores para os seus projectos. Tenho necessidade de uma equipa de programadores específicos, que podem não ser especialistas em todas as tecnologias, e podem mesmo ser especialistas na sua área, mas, no entanto, são competentes na sua área. E precisa de um gestor de projecto que inicialmente pense bem e prepare tudo isto para o resto da equipa, para que o projecto não comece do zero, e pode começar imediatamente, após o excurso introdutório. Caso contrário, as coisas não se desenrolarão.