초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 109

 
귀하의 계정에 입금하지 않은 경우 벌어 들인 돈을 인출하는 방법.
 
vik1991 :
계정에 입금하지 않은 경우 적립한 돈을 인출하는 방법.
초기 보증금 없이 어떻게 시장에서 돈을 벌었는지 궁금합니다
 

MQL5에서 명령을 병렬화할 수 있습니까? 예를 들어 명령 실행을 다른 코어로 보냅니다. 저것들. 프로그램이 계속 실행되도록 하고 주 프로그램을 방해하지 않고(시간을 들이지 않고) 특정 기능 이 컨텍스트에 들어가도록 합니다. 고맙습니다.

Документация по MQL5: Основы языка / Функции
Документация по MQL5: Основы языка / Функции
  • www.mql5.com
Основы языка / Функции - Документация по MQL5
 
karlen :

MQL5에서 명령을 병렬화할 수 있습니까? 예를 들어 명령 실행을 다른 코어로 보냅니다. 저것들. 프로그램이 계속 실행되도록 하고 주 프로그램을 방해하지 않고(시간을 들이지 않고) 특정 기능 이 컨텍스트에 들어가도록 합니다. 고맙습니다.

아니요. 아아, 멀티스레딩은 MQL5 컴파일러에서 지원되지 않습니다.

이러한 작업을 구현하는 것은 dll을 통해서만 가능합니다.

 

간단한 퍼셉트론을 구현해 보았습니다.

가장 단순한 네트워크는 마비됩니다. 문제는 학습 알고리즘에 있지만 찾을 수 없습니다.

말해 주세요.

 //+------------------------------------------------------------------+
//|                                                   Perceptron.mqh |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                                           panker |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link       "panker"
//+------------------------------------------------------------------+
//+               Класс однослойного перцепторна                     |
//+------------------------------------------------------------------+
class CSNeuron
  {
public :
   double             out_err[]; //Ошибки для входов
   
   double             Out( double &_inp[]); // Основная функция вывода
   void               Education( double err); // Фун-ция обучения
                     CSNeuron();
   bool               Load( string name);
   bool               Save( string name);
   void               Init( int inp_count); //Фун-ция инициализации

private :
   bool               init;         //Синглтон инициализации
   int                arr_size; //Размер массива перцептрона
   double             inp[];   //Входы нейронов
   double             ans[];   //Ответы каждого нейрона
   double             weight[]; //Веса нейронов
   double             last_out; //Последний результат
   double             l_err;   //Последняя ошибка
   double             k_study; //Коэффициент обучения
   double             summ_akt; //Коэффициент приведения результата
   long               count_mid;
   struct             ToSave
     {
       bool               init;
       int                arr_size;
       double                     last_out,
                                                l_err,
                                                k_study;
     };

   double             Aktiv( double x); //Функция активации
   double             RND();           //Рандомная машина
   
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CSNeuron::CSNeuron( void )
  {
   init= false ;
   k_study= 0.00001 ;
   count_mid= 0 ;
  };
//+------------------------------------------------------------------+
//|              Фун-ция инициализации                               |
//+------------------------------------------------------------------+
void CSNeuron::Init( int inp_count)
  {
   init= true ;
   max_akt=inp_count;
   min_akt=- 1 *inp_count;
   ArrayResize (inp,inp_count, 0 );
   ArrayResize (weight,inp_count, 0 );
   ArrayResize (out_err,inp_count, 0 );
   ArrayResize (ans,inp_count, 0 );

   ArrayInitialize (ans, 0 );
   ArrayInitialize (inp, 0 );
   ArrayInitialize (out_err, 0 );
   for ( int i= 0 ;i<inp_count;i++)
     {
      weight[i]=RND();
     }
   k_study= 1 /( double )inp_count;
}
//+------------------------------------------------------------------+
//|                      Рандомная машина                            |
//+------------------------------------------------------------------+
double CSNeuron::RND( void )
  {
   double rnd=( double ) rand ()/ 32727 ;
   if (rnd== 1 || rnd== 0 )RND();
   return (rnd);
  }
//+------------------------------------------------------------------+
//|                    Основная функция вывода                       |
//+------------------------------------------------------------------+
double CSNeuron::Out( double &_inp[])
  {
   arr_size= ArraySize (_inp);
   double l_out= 0 ;
   if (!init)Init(arr_size);

   ArrayCopy (inp,_inp, 0 , 0 ,arr_size);
   for ( int i= 0 ;i<arr_size;i++)
     {
      ans[i]=inp[i]*weight[i];
       double d;
      d=ans[i];
      l_out+=ans[i];
     }
   last_out=l_out;
   l_out=Aktiv(l_out);
   return (l_out);
  }
//+------------------------------------------------------------------+
//|                    Функция активации                             |
//+------------------------------------------------------------------+
double CSNeuron::Aktiv( double x)
  {
   
   double y= 0 ; double mid_plus_akt,mid_min_akt;
   summ_akt+= MathAbs (x);count_mid++;
   mid_plus_akt=summ_max_akt/( double )count_mid;
   mid_min_akt=- 1 *mid__plus_akt;
   
   if (mid_min_akt-mid_min_akt== 0 )mid_min_akt= 0.0001 ;
   y=((x-mid_min_akt)* 1.98 )/(mid_plus_akt-mid_min_akt)- 0.99 ;
   return (y);
  }
//+------------------------------------------------------------------+
//|                     Фун-ция обучения                             |
//+------------------------------------------------------------------+
void CSNeuron::Education( double err)
  {
   /*if(k_study<=10 && k_study>=0.00000001)
     {
      double x=k_study/0.1;
      double y=k_study*0.1;
      if(x>=10)if(MathAbs(l_err)<MathAbs(err))k_study*=0.1;
      if(y<=0.00000001)if(MathAbs(l_err)>=MathAbs(err))k_study/=0.1;
      if(MathAbs(l_err)<MathAbs(err))k_study/=0.1;
      if(MathAbs(l_err)>MathAbs(err))k_study*=0.1;
     }
   l_err=err;*/
   
   for ( int i= 0 ;i<arr_size;i++)
     {
      out_err[i]=err*weight[i];
      weight[i]=weight[i]+err*k_study*weight[i]*inp[i];
     }
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool CSNeuron::Save( string name)
  {
   string name_str=name+ "_str" ;
   string name_arr1=name+ "_ans" ;
   string name_arr2=name+ "_weight" ;
   int handle1= FileOpen (name_str, FILE_WRITE | FILE_BIN );
   int handle2= FileOpen (name_arr1, FILE_WRITE | FILE_BIN );
   int handle3= FileOpen (name_arr2, FILE_WRITE | FILE_BIN );
   if (handle1== INVALID_HANDLE )
     {
       int x= 0 ; while (x< 1 )
        {
         Print ( "Can not save file " ,name_str); Sleep ( 10000 );
        }
     }
   if (handle2== INVALID_HANDLE )
     {
       int x= 0 ; while (x< 1 )
        {
         Print ( "Can not save file " ,name_arr1); Sleep ( 10000 );
        }
     }
   if (handle3== INVALID_HANDLE )
     {
       int x= 0 ; while (x< 1 )
        {
         Print ( "Can not save file " ,name_arr2); Sleep ( 10000 );
        }
     }
   
   ToSave s_data;
   s_data.arr_size=arr_size;
   s_data.init=init;
   s_data.k_study=k_study;
   s_data.l_err=l_err;
   s_data.last_out=last_out;
   if ( FileWriteStruct (handle1,s_data,- 1 )<= 0 ){
       Print ( "Something is wrong! Dont save s_data!" ); return ( false );
      }
   if ( FileWriteArray (handle2,ans, 0 , WHOLE_ARRAY )<= 0 ){
       Print ( "Something is wrong! Dont save ans!" ); return ( false );
      }
   if ( FileWriteArray (handle3,weight, 0 , WHOLE_ARRAY )<= 0 ){
       Print ( "Something is wrong! Dont save weight!" ); return ( false );
      }
   FileClose (handle1);
   FileClose (handle2);
   FileClose (handle3);
   //Print(name," files was succesfully saved");
   return ( true );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool CSNeuron::Load( string name)
  {
   string name_str=name+ "_str" ;
   string name_arr1=name+ "_ans" ;
   string name_arr2=name+ "_weight" ;
   
   int handle1= FileOpen (name_str, FILE_READ | FILE_BIN );
   int handle2= FileOpen (name_arr1, FILE_READ | FILE_BIN );
   int handle3= FileOpen (name_arr2, FILE_READ | FILE_BIN );
   
   if (handle1== INVALID_HANDLE ||handle2== INVALID_HANDLE ||handle3== INVALID_HANDLE )
     {
       int x= 0 ; while (x< 1 )
        {
         Print ( "Can not load file " ,name); return ( false );
        }
     }

   ToSave l_data;

   if ( FileReadStruct (handle1,l_data,- 1 )<= 0 ) Print ( "Something is wrong! Dont load Data!" );
   if ( FileReadArray (handle2,ans, 0 , WHOLE_ARRAY )<= 0 ) Print ( "Something is wrong! Dont load Data!" );
   if ( FileReadArray (handle3,weight, 0 , WHOLE_ARRAY )<= 0 ) Print ( "Something is wrong! Dont load Data!" );

   arr_size=l_data.arr_size;
   init=l_data.init;
   k_study=l_data.k_study;
   l_err=l_data.l_err;
   last_out=l_data.last_out;
   Init(arr_size);
   
   FileClose (handle1);
   FileClose (handle2);
   FileClose (handle3);
   //Print(name," files was succesfully load");
   return ( true );
  }
 
felidae : 계산을 위해 프로세서 리소스를 제공하고 있습니다.
초기 보증금 없이 어떻게 시장에서 돈을 벌었는지 궁금합니다
 
내 서비스가 실행 중일 때 프로세서가 전혀 로드되지 않는 이유는 무엇입니까?
 

어떤 이유로 작동하지 않는 MT4에 신호를 등록하고 활성화했다고 말해주세요! 그리고 로그 섹션의 MT4에는 "( '3054391': 신호 - 프록시를 통해 78.140.156.176:443에 연결 실패)"와 같은 비문이 있습니다.

 
링크가 오래되었습니다.
사유: