初学者的问题 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: 我正在使用我的处理器资源来进行计算。
我想知道,你是如何在没有初始存款的情况下在市场上赚钱的?
 
为什么当我有服务运行时,处理器根本没有加载0%的负载,但在两天的工作中慢慢地只赚了0.01
 

请告诉我,我已经在MT4上注册并激活了一个信号,但由于某些原因,它不能工作!但在MT4上的杂志部分留下了以下铭文"('3054391':信号 - 通过代理连接到78.140.156.176:443失败)",这可能是什么?