[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 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);
}
 


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

RIGHT?

 
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が "よく "動作する期間を把握するのでしょうか?

どのように計算すればいいのでしょうか?洞察力という方法だけではうまくいかない...。

特に、ここでの 参考文献(私の(ページ7番目の)投稿から)をご覧ください。"ロバート・パルド 「株式トレーダーのためのトレーディングシステムの開発、テスト、最適化」。
 

こんにちは。

コードにどのような変更が必要か教えてください。ヒストグラムは弱気バーの値だけを表示させたい。

インジケーター本体 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);
}