[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 426

 
Elektronik:
Por favor, me diga como calcular o volume total de todos os pedidos (lotes) usando o laço OrderSelect() passando por cada pedido peça por peça).
Comece uma variável com o volume total em lotes e inicialize-a em 0
  1. Percorrer as ordens em um loop
  2. Após cada OrderSelect(), você aumenta o valor variável pelo valor OrderLots().

Após a conclusão do loop, a variável conterá o volume total de todos os pedidos pesquisados

 
Elektronik:
Por favor, diga-me como calcular o volume total de todos os pedidos (lotes), percorrendo cada pedido individualmente com 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);
}
 


obrigado pako:

fez assim:)

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));
}

DIREITO?

 
Elektronik:



fazê-la

//+------------------------------------------------------------------+
//|                                                     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);
}

так сделай

 

Boa tarde, senhores.

Sou um iniciante e tenho uma pergunta: como otimizar corretamente meu robô?

Eu sei quais botões e caixas de seleção tenho que pressionar para executar um testador de estratégia.

Como descobrir por quanto tempo a EA vai funcionar "bem"?

Como podemos calculá-lo? Não é apenas o método de insight que pode funcionar...

 
impus:

Boa tarde, senhores.

Sou um iniciante e tenho uma pergunta: como otimizar corretamente meu robô?

Eu sei quais botões e caixas de seleção tenho que pressionar para executar um testador de estratégia.

Como descobrir por quanto tempo a EA vai funcionar "bem"?

Como podemos calculá-lo? Não é apenas o método de insight que pode funcionar...

Procure em sua busca local por "forward tests" ou "OOS". Já foi discutido muitas vezes.
 
impus:

Boa tarde, senhores.

Sou um iniciante e tenho uma pergunta: como otimizar corretamente meu robô?

Eu sei quais botões e caixas de seleção precisam ser pressionados para executar um testador de estratégia.

Como descobrir por quanto tempo a EA vai funcionar "bem"?

Como podemos calculá-lo? Não é apenas o método de insight que pode funcionar...

Se você não entende como otimizar uma EA, não faça a otimização, mas resolva seu TS, e descubra quais parâmetros precisam ser otimizados.
 
Reshetov:
Procure em sua busca local por "forward tests" ou "OOS". Já foi discutido muitas vezes.
Obrigado. Vou dar uma olhada nisso.
 
impus:

Boa tarde, senhores.

Sou um iniciante e tenho uma pergunta: como otimizar corretamente meu robô?

Eu sei quais botões e caixas de seleção precisam ser pressionados para executar o testador de estratégia.

Como descobrir por quanto tempo a EA vai funcionar "bem"?

Como podemos calculá-lo? Não é apenas o método de insight que pode funcionar...

Ver referências (do meu (sétimo na página) post) aqui, em particular: "Robert Pardo "Desenvolver, testar e otimizar sistemas comerciais para o comerciante de ações".
 

Olá.

Você pode me dizer que mudanças precisam ser feitas no código? Quero que o histograma exiba apenas os valores para as barras de baixa.

O próprio indicador 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);
}
Razão: