カスタムシンボル。エラー、バグ、質問、提案。 - ページ 9

 
Andrey Khatimlianskii:

2009年、2025年を旧所在地に流し込む

ありがとうございます。1970以上のビルドを試しましたが、カスタムキャラクターを同じtoreアカウント内でハード的に再作成するまで、すべてこのバグが発生します。

 
fxsaber:

2009:

2033:

 

バグ10。

記号を削除することはできません。

#define  PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{
  MathSrand((uint)TimeLocal());
  
  const string Name = _Symbol + (string)MathRand();

  PRINT(CustomSymbolCreate(Name));

  PRINT(CustomRatesDelete(Name, 0, 0)); // Без этой строки удаление работает.
  
  PRINT(CustomSymbolDelete(Name)); // false
  PRINT(GetLastError());  
}


CustomSymbolCreate(Name) = true
CustomRatesDelete(Name,0,0) = 0
CustomSymbolDelete(Name) = false
GetLastError() = 5306
 

バグ11。

CustomTicksAddはバーを形成しない。

// Проигрываем тиковую историю через таймер.
#define  PRINT(A) Print(#A + " = " + (string)(A))

void OnInit()
{
  if (EventSetMillisecondTimer(20)) // С такой частотой будем пробрасывать тики
    MathSrand((uint)TimeLocal());  
}

void OnTimer()
{
  static const string Name = _Symbol + (string)MathRand();
  
  static bool FirstRun = true;
  static MqlTick Ticks[];
  static int Pos = 0;
    
  if (FirstRun)
  {
    PRINT(CustomSymbolCreate(Name, NULL, _Symbol)); // Создали символ.
  
    PRINT(CustomRatesDelete(Name, 0, 0)); // Без этой строки работает.    
    PRINT(SymbolSelect(Name, false));     // https://www.mql5.com/ru/forum/304554/page9#comment_11680616
    
    PRINT(CustomSymbolDelete(Name));                // Убили.
    PRINT(CustomSymbolCreate(Name, NULL, _Symbol)); // Воскресили.
    
    if (SymbolSelect(Name, true)) // Поместили в Обзор рынка
    {
      ChartOpen(Name, PERIOD_M1);            // Открыли чарт
      PRINT(CopyTicksRange(_Symbol, Ticks, COPY_TICKS_INFO, (TimeCurrent() - 3600) * 1000)); // Взяли тики (последний час) для проброса
    }
      
    FirstRun = false;
  }
  else if (Pos < ArraySize(Ticks))
  {
    MqlTick Tick[1];
    
    // Пробрасываем по тику
    Tick[0] = Ticks[Pos++];
    CustomTicksAdd(Name, Tick);
  }
}

オープンチャートにはバーが形成されません。Market Watchでは、ティックが更新されます。

 

バグ12。

カスタムシンボルをゼロから作成する場合(例:CTRL+U)、最大ボリュームが規定されており、テスターはその利益を計算することができません。

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnInit()
{
  // Именно такой макс. объем автоматом прописывается при создании кастомного символа с нуля.
  const double Lot = 1 e11; // SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX)
  
  OrderSend(_Symbol, OP_BUY, Lot, Ask, 0, 0, 0); // После закрытия этой позиции ее профит будет нулевым.
}
 
このスレではなぜか開発者が再現性のあるバグに手をつけない。
 
fxsaber:
このスレではなぜか開発者が再現性のあるバグに手をつけない。
というように誘うべきだろう
 

スラバ・ストリンゴを招聘。

このフィールド(添付ファイル1)にカスタムインストルメントを 入力すると、引用符なしで開きます。

添付資料2は、あくまでも単語です。

添付ファイル3:このボタンにうんざりしている、誰も必要としていない。

キャップスブ

ファイル:
x34zq9.PNG  2 kb
1wvlwh2.PNG  10 kb
qfd9jf.PNG  2 kb
 
superman:

スラバ・ストリンゴを招聘。

このフィールド(添付ファイル1)にカスタムインストルメントを入力すると、引用符なしで開きます。

添付資料2は、あくまでも単語です。

そういう誘い方はしない。

だからスラーヴァ

 
fxsaber:

バグ 07.

テスターは、交換用カスタムシンボルのLastで、バー構築のBid価格でバーを形成します。

そのため、ターミナルとStrategy Testerのバー履歴は完全に乖離しています。また、TSでバーを使う人(例えばインジケーター)がいた場合、バックテストの結果はその人にとってランダムなものになります。

カスタムシンボルの 仕様を表示する。

そして、カスタムの刻みを与える。

何かを修正するには、まずそれを再現する必要があります。