[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 428

 
Reshetov:

Все никак. Только в цикле перебирая поштучно с помощью OrderSelect().

Подскажите пожалуста как при помощи цикла перебирая поштучно каждый ордес с помощью OrderSelect() подсчитать общий объем всех ордеров (лотов).)
 
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);
}
 


спасибо pako:

сделал так:)

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

так сделай

 

Добрый день, господа.

Я новичок, и у меня есть вопрос: как правильно оптимизировать робота?..

Я знаю, какие кнопочки и галочки надо потыкать, чтобы прогнать тестер стратегий.

Мне интересно: как понять, какой брать период для оптимизации? как понять, как долго будет советник работать "хорошо"?

Как это можно посчитать? Не только же метод озарения работать может...

 
impus:

Добрый день, господа.

Я новичок, и у меня есть вопрос: как правильно оптимизировать робота?..

Я знаю, какие кнопочки и галочки надо потыкать, чтобы прогнать тестер стратегий.

Мне интересно: как понять, какой брать период для оптимизации? как понять, как долго будет советник работать "хорошо"?

Как это можно посчитать? Не только же метод озарения работать может...

Поищите в местном поиске на предмет "форвардные тесты" или "OOS". Обсуждалось неоднократно.
 
impus:

Добрый день, господа.

Я новичок, и у меня есть вопрос: как правильно оптимизировать робота?..

Я знаю, какие кнопочки и галочки надо потыкать, чтобы прогнать тестер стратегий.

Мне интересно: как понять, какой брать период для оптимизации? как понять, как долго будет советник работать "хорошо"?

Как это можно посчитать? Не только же метод озарения работать может...

Если Вы не понимаете, как оптимизировать советника, не надо заниматься оптимизацией, а разобраться со своей ТС, и выяснить, оптимизация каких параметров необходима.
 
Reshetov:
Поищите в местном поиске на предмет "форвардные тесты" или "OOS". Обсуждалось неоднократно.
спасибо. почитаю
 
impus:

Добрый день, господа.

Я новичок, и у меня есть вопрос: как правильно оптимизировать робота?..

Я знаю, какие кнопочки и галочки надо потыкать, чтобы прогнать тестер стратегий.

Мне интересно: как понять, какой брать период для оптимизации? как понять, как долго будет советник работать "хорошо"?

Как это можно посчитать? Не только же метод озарения работать может...

См. ссыли (с моего (седьмого на страничке) поста) здесь, в частности: "Роберт Пардо "Разработка, тестирование и оптимизация торговых систем для биржевого трейдера".