新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1268

 
伙计们,这是一个我在任何地方都没有找到答案的问题。 在指标中写什么功能,使新的条形图 不在零条形图中打开和勾选,直到它工作我的条件,请私下里回答我)
 

你好!

我在三棵松下感到困惑。

我设置了数字extern int a =2; extern int b =3; extern int c =4; 我现在如何设置数字abc,以便在改变a,或b, 或c时改变其值,与某个给定的d比较(例如d=344

谢谢你!

 
novichok2018:

你好!

我在三棵松下感到困惑。

我设置了数字extern int a =2; extern int b =3; extern int c =4; 我现在如何设置数字abc,以便在改变a,或b, 或c时改变其值,与某个给定的d比较(例如d=344

谢谢你!

x = c + b*10 + a*100

 
Сергей Таболин:

x = c + b*10 + a*100

哦,我的天啊!我正在绞尽脑汁!谢谢你!

 
你好,2020.10.03_13:33 GMT+3。我采用了MetaTrader 4的标准移动平均线EA。并开始改变它,使它变得有利可图。当试图在策略测试器中 使用OrderProfit()函数描述平仓条件时,专家顾问在该条件下停止平仓交易。它并没有走到关闭交易的程度。然而,我怀疑我是否正确地写了关闭条件。否则专家顾问将关闭交易。我可能会尝试写出交易的开盘价和最后的价格。一旦达到开盘价和最后价格之间的最大差额,并且这个差额被缩小--关闭交易。我附上了专家顾问文件。13:50 GMT+3。
附加的文件:
 
Николай Никитюк:
你好,2020.10.03_13:33 GMT+3。我采用了MetaTrader 4的标准移动平均线专家顾问。并开始改变它,使它变得有利可图。当试图在策略测试器中 使用OrderProfit()函数描述平仓条件时,专家顾问在该条件下停止平仓交易。它并没有走到关闭交易的程度。然而,我怀疑我是否正确地写了关闭条件。否则专家顾问将关闭交易。我可能会尝试写出交易的开盘价和最后的价格。一旦达到开盘价和最后价格之间的最大差额,并且这个差额被缩小--关闭交易。我附上了专家顾问文件。13:50 GMT+3。
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
   //--- check order type
      // 
      if(OrderType()==OP_BUY)
        {
        /*
         if(OrderProfit()>0.0)  
           {ProfitMax=OrderProfit(); break;} // Здесь у вас прерывается цикл, если сделка в плюсе
         if(OrderProfit()>ProfitMax)
           {ProfitMax=OrderProfit(); break;}
         if((ProfitMax-DiffProfit)<0.0) break;    
         if((ProfitMax-DiffProfit)>OrderProfit())
         */
         if(DiffProfit<OrderProfit())     // Исходя из ваших условий, то вот            
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))
               Print("OrderClose error ",GetLastError());
           }  
         else break;     
         break;
        }
      if(OrderType()==OP_SELL)
        {
        /*
         if(OrderProfit()>0.0)  
           {ProfitMax=OrderProfit(); break;} // Здесь у вас прерывается цикл, если сделка в плюсе
         if(OrderProfit()>ProfitMax)
           {ProfitMax=OrderProfit(); break;}
         if((ProfitMax-DiffProfit)<0.0) break;     
         if((ProfitMax-DiffProfit)>OrderProfit())
         */
         if(DiffProfit<OrderProfit())        // Исходя из ваших условий, то вот
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,White))
               Print("OrderClose error ",GetLastError());
           }
         else break;  
         break;
        }
     }      

//+------------------------------------------------------------------+
 

你好!

我已经开始写一个函数来规范化输入数据。但我不能用归一化的数值 "替换 "原始数值。换句话说,我不能用Temp数组的新值来更新Open时间序列缓冲区的值。我的错误是什么?我有一种感觉,我正试图跨越OOP和非OOP))。

Open=new CiOpen();
   if(CheckPointer(Open)==POINTER_INVALID || !Open.Create(Symb.Name(),PERIOD_CURRENT))
      return;
//---
   int bars=10;
   double Temp[];                //Создаем массив для временного хранения входных данных
   ArraySetAsSeries(Temp,true);  //Устанавливает флаг AS_SERIES
   Open.GetData(0,bars,Temp);    //Копируем необходимые данные в массив Temp
   InputNormalize(Temp,bars);    //Нормализуем данные в массиве
 
//---Как заменить значения в Open значениями из Temp?---

  }
//+------------------------------------------------------------------+
//| функция нормализации входных данных                              |
//+------------------------------------------------------------------+
void InputNormalize(double &buffer[],int bars)
  {
   double d1=-1;
   double d2=1;
   double x_min=buffer[ArrayMinimum(buffer,0,bars)];
   double x_max=buffer[ArrayMaximum(buffer,0,bars)];
   for(int i=0; i<bars; i++)
     {
      buffer[i]=(((buffer[i]-x_min)*(d2-d1))/(x_max-x_min))+d1;
     }
   return;
  }

我相信可以用更简单的方法来做!"。在这种情况下,请教我)

 
Aleksei Lesnikov:

你好!

我已经开始写一个函数来规范化输入数据。但我不能用归一化的数值 "替换 "原始数值。也就是说,我不能用Temp数组的新值来更新Open timeseries buffer中的值。我的错误是什么?我有一种感觉,我正试图跨越OOP和非OOP))。

我相信可以用更简单的方法来做!"。在这种情况下,请教我)

阅读语言文件

预定义变量的值是由客户终端在启动mql4-程序执行前设置的。预定义变量是常量,不能从mql4-程序中改变


Предопределенные переменные - Справочник MQL4
Предопределенные переменные - Справочник MQL4
  • docs.mql4.com
Для каждой выполняющейся mql4-программы поддерживается ряд предопределенных переменных, которые отражают состояние текущего ценового графика на момент запуска программы - эксперта, скрипта или пользовательского индикатора. Значение предопределенным переменным устанавливает клиентский терминал перед запуском mql4-программы на выполнение...
 
Alexey Viktorov:

阅读语言文件

阿列克谢,谢谢你!现在很清楚,这是不可能的

这是真的,我不完全是mql4。我正试图通过CiOpen类来 改变数据。我对Update方法感到困惑,它应该改变指定数组位置的元素。

Документация по MQL5: Стандартная библиотека / Индикаторы / Таймсерии / CiOpen
Документация по MQL5: Стандартная библиотека / Индикаторы / Таймсерии / CiOpen
  • www.mql5.com
CiOpen - Таймсерии - Индикаторы - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aleksei Lesnikov:

阿列克谢,谢谢你!现在很清楚,这是不可能的

这是真的,我没有确切的mql4。我正试图通过CiOpen类来 改变数据。我对Update方法感到困惑,它应该改变数组中指定位置的元素。

由于该问题是在mql4部分提出的,所以我就mql4进行了回答。你的问题中没有对mql5的提示。但结果是一样的。

原因: