エラー、バグ、質問 - ページ 2095

 

スプレッドテスターに新たなバグが発生しました。ビジュアルモードでも、スタンダードモード(専門家は膨張したスプレッドを見る)と同様に存在する。

標準例にあるMAエキスパートを、デフォルトのパラメータで実行することで確認することができます。

一部の日付では、0:00から23:59までの全日で、スプレッドが2~5から200~500に広がります。証券会社2社で確認したところ、問題は見積もりではなくテスター自体にあると思われます。

ここでは、2017.10.16の日付の例で説明します。テストは2017.10.16から実行する必要があります。背景は、チャートをその日にスクロールさせた端末で、そこでのスプレッドは通常の範囲内です。

また別の例で。他証券会社の例

スプレッドを制御するExpert Advisorを設定しましたが、それが見ているのはこの200から500の間です。その結果、アルゴリズムに従わずに丸一日働いてしまうのです。

他に見つかった日付は2017.09.19です。 9月から今日までのテストを実行 - 価格超過のスプレッドがある日が約20~30%あります。2000年までオーバープレディクションを見た。

SDに送信する。

PS.対応した。新しいビルドで修正される予定です。
 
elibrarius:

...

SDに送信する。

この件に関しても回答を待っています。

公開、開始:2017.12.16 14:36, #1911211

 

MetaQuotes-DemoのOrderSendがハングアップする - 数秒間実行されることもあれば、スクリプトを削除できないこともある(ターミナルを閉じる ことでのみ)。

 
TRADE_ACTION_CLOSE_BYでいくつかのエラーが発生しました。
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID)
#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  MqlTradeRequest Request = {0};
  MqlTradeResult Result;      
      
  Request.action = TRADE_ACTION_CLOSE_BY;
  Request.position = OrderSend(_Symbol, OP_SELL, 0.01, Bid, 100, 0, 0);
  Request.position_by = OrderSend(_Symbol, OP_BUY, 1, Ask, 100, 0, 0);

  Request.symbol = _Symbol; // Если убрать эту строку, то сообщения в логе изменятся

  Print(OrderSend(Request, Result)); // false
}

結果

'7489613': instant sell 0.01 GBPUSD at 1.34334 (deviation: 100)
'7489613': accepted instant sell 0.01 GBPUSD at 1.34334 (deviation: 100)
'7489613': deal #176902665 sell 0.01 GBPUSD at 1.34334 done (based on order #193547458)
'7489613': order #193547458 sell 0.01 / 0.01 GBPUSD at 1.34334 done in 73.458 ms
'7489613': instant buy 1.00 GBPUSD at 1.34342 (deviation: 100)
'7489613': accepted instant buy 1.00 GBPUSD at 1.34342 (deviation: 100)
'7489613': deal #176902666 buy 1.00 GBPUSD at 1.34342 done (based on order #193547459)
'7489613': order #193547459 buy 1.00 / 1.00 GBPUSD at 1.34342 done in 76.044 ms
'7489613': failed close position #193547459 buy 0.99 GBPUSD by position #193547458 [Invalid request]


実際にはすべてが完全に重なっているのですが、ログの中だけエラーメッセージが出て、OrderSendのリターンがマイナスになっているのです。ソース中のハイライトされた行を削除すると、ログに全く不十分なメッセージが表示されます。

 

MEStyler bug MT4/MT5

 #define  f(x) x   //пробел вначале строки и перед конечным выражением
#define  f(x) x    //стилизатор удалил пробел в начале строки. Пробел перед конечным выражением остался

 #define  f(x) (x)   //пробел вначале строки и перед конечным выражением, ЗАКЛЮЧЕННЫМ В СКОБКИ
#define  f(x)(x) //стилизатор удаляет не только пробел в начале строки, но и разделяющий пробел между аргументом и конечным выражением. 

//В итоге компилятор выдает ошибку во втором случае
//'(' - unexpected in macro definition

 

リアルM1ティックテスターデータウインドウ(vis.mode)でスプレッドがマイナスの場合、スプレッドが不正になります。お客様のサーバー、2017.10.23 01:00と01:01分

スプレッドをチェックするExpert Advisorを作りました。スプレッドがマイナスの場合、Expert Advisorは間違ったスプレッド、-1倍を表示します。スクリーンショットでは、EAでは-1、チャートでは-2となっています。スプレッドがプラスの場合、Expert Advisorではすべてが正しいことになります。

実際のティックでのスプレッドは、始値のスプレッドとは大きく異なる場合があります。ここでは、差分39ptの例をご紹介します。 2017.10.23 00:53
オープニング価格について。


本物の
ダニについて

どちらのモードでもマッチするはずだと思ったもの......。

 
elibrarius:

スプレッドをチェックするExpert Advisorを作りました。スプレッドがマイナスの場合、Expert Advisorは間違ったスプレッド(1倍)を表示します。スクリーンショットではExpert Advisorで-1、チャートで-2が表示されています。スプレッドがプラスの場合、Expert Advisorではすべてが正しくなります。

スプレッドを計算する際に、コードを間違えたのでは?見つからない場合は、コードを表示してください。

 

コピー...機能はどうなったのですか?以前は時系列で返していたが、今は返していない。


原理的には配列のインデックスを単体で展開するのは難しくないのですが、以前のコードではCopyの後に時系列を展開する関数を使っていました...。いまはもうだめ
 
Konstantin:

コピー...機能はどうなったのですか?以前は時系列で返してくれたが、今は返してくれない。


基本的に配列のインデックスを自分で拡張するのは難しくないのですが、以前のコードではCopyの後に時系列を拡張する関数を使っていました...。いまはもうだめ

これは元々そうで、ヘルプにも書いてある。


 
fxsaber:

スプレッドを計算する際に、コードに間違いがあったのではないでしょうか。見つからない場合は、コードを表示してください。

うーん、探してみよう )))

int OnInit()
  {
   return(INIT_SUCCEEDED);
}

void OnTick()
  {
  int s[];
  CopySpread(_Symbol,_Period,0,1,s);
  Print(s[0]);
  }