[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 426

 
Elektronik:
请告诉我,如何使用OrderSelect() 循环逐一计算所有订单(手数)的总数量。)
用总手数启动一个变量,并将其初始化为0
  1. 在一个循环中浏览订单
  2. 在每次OrderSelect() 之后,你用OrderLots()的值增加变量值。

循环结束后,该变量将包含所有搜索到的订单的总数量。

 
Elektronik:
请告诉我如何通过OrderSelect() 逐一查看每个订单来计算所有订单(手数)的总数量。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает сумму лотов открытых позиций                        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ( ""  - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - торговая операция          ( -1  - любая позиция)                  |
//|    mn - MagicNumber                ( -1  - любой магик)                    |
//+----------------------------------------------------------------------------+
double GetAmountLotFromOpenPos(string sy="", int op=-1, int mn=-1) {
  double l=0;
  int    i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              l+=OrderLots();
            }
          }
        }
      }
    }
  }
  return(l);
}
 


谢谢帕科

是这样做的:)

int start()
{
int i=0;
double lots=0;
int kollots=0;
int nets=0;
int netp=0;
for(i=0; i<OrdersTotal(); i++)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;kollots=kollots+1;if(OrderStopLoss()<=0) nets=nets+1; if(OrderTakeProfit()<=0) netp=netp+1;
if((OrderType()==OP_BUY)){lots=lots+OrderLots();}
if((OrderType()==OP_SELL)){lots=lots-OrderLots();}
}
Comment("Общий объем: "+ DoubleToStr(lots,2));
}

对吗?

 
Elektronik:



使得

//+------------------------------------------------------------------+
//|                                                     lots_kol.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
  GetAmountLotFromOpenPos(); 
//----
   return(0);
  }
//+------------------------------------------------------------------+
double GetAmountLotFromOpenPos(string sy="", int op=-1, int mn=-1) {
  double l=0;
  int    i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              l+=OrderLots();
            }
          }
        }
      }
    }
  }
  Comment("Количество лотoв                ",l);
  return(l);
}

так сделай

 

下午好,先生们。

我是一个初学者,我有一个问题:如何正确 优化我的机器人?

我知道我必须按哪些按钮和复选框来运行一个策略 测试器。

我想知道,如何计算出优化它的时期? 如何计算出EA能 "良好 "工作多久?

我们怎样才能计算出来?不仅仅是洞察力的方法可以发挥作用...

 
impus:

下午好,先生们。

我是一个初学者,我有一个问题:如何正确 优化我的机器人?

我知道我必须按哪些按钮和复选框来运行一个策略测试器。

我想知道,如何计算出优化它的时期? 如何计算出EA能 "良好 "工作多久?

我们怎样才能计算出来?不仅仅是洞察力的方法可以发挥作用...

在当地搜索 "转发测试 "或 "OOS"。这个问题已经讨论过很多次了。
 
impus:

下午好,先生们。

我是一个初学者,我有一个问题:如何正确 优化我的机器人?

我知道为了运行策略测试器,需要按下哪些按钮和复选框。

我想知道,如何计算出优化它的时期? 如何计算出EA能 "良好 "工作多久?

我们怎样才能计算出来?不仅仅是洞察力的方法可以发挥作用...

如果你不了解如何优化EA,就不要做优化,而是整理你的TS,并找出需要优化的参数。
 
Reshetov:
在当地搜索 "转发测试 "或 "OOS"。这个问题已经讨论过很多次了。
谢谢,我会研究的。
 
impus:

下午好,先生们。

我是一个初学者,我有一个问题:如何正确 优化我的机器人?

我知道为了运行策略测试器,需要按下哪些按钮和复选框。

我想知道,如何计算出优化它的时期? 如何计算出EA能 "良好 "工作多久?

我们怎样才能计算出来?不仅仅是洞察力的方法可以发挥作用...

请看这里 的参考资料(来自我的(第七页)帖子),特别是。"罗伯特-帕尔多 "为股票交易商开发、测试和优化交易系统"。
 

你好。

你能告诉我需要对代码做哪些修改吗?我希望直方图只显示看跌柱状图的数值。

该指标本身https://www.mql5.com/ru/code/8920

int start()
{
    if (OpenTime != iOpen(Symbol(), PERIOD_M1, 0))
    {
        OpenTime = iOpen(Symbol(), PERIOD_M1, 0);

        int n, MaxVolume;
        double max = iHigh(Symbol(), PERIOD_M1, iHighest(Symbol(), PERIOD_M1, MODE_HIGH, MinutesCount, 0));
        double min = iLow(Symbol(), PERIOD_M1, iLowest(Symbol(), PERIOD_M1, MODE_LOW, MinutesCount, 0));
        int items = MathRound((max-min) / PricePoint);

        if (max == 0)
        {
            Alert("There is no minutes data. Please download M1.");
            return (0);
        }

        ArrayResize(Hist, items);      
        ArrayInitialize(Hist, 0);
        for (int i = 1; i <= MinutesCount; i++)
        {
            n = MathRound((iClose(Symbol(), PERIOD_M1, i)-min) / PricePoint);
            Hist[n] += (iVolume(Symbol(), PERIOD_M1, i));    
        }

        MaxVolume = Hist[ArrayMaximum(Hist)];
        DeleteObjects();
        for (i = 0; i <= items; i++)
        {
            DrawLine(i, min + i*PricePoint, Hist[i], MaxVolume);
        }
    }
        return(0);
}