MQL5による株式発振器とは - ページ 6

 
joo:

ファイルへの書き込みはできるだけ頻繁に行わない方が良いので、配列で行うのが良い。値の測定は1分間に1回以上の頻度で行わないと、チャートへの表示に問題が生じます(不当にリソースを消費します)。つまり、ランの終わりに。しかし、このようなバリエーションも可能です。

アルゴリズムは以下のように浮かび上がります。

1) テスターでエキスパートを実行する。

2)関心のある値を測定しました。

3)この値をファイルに記録

4) 別のファイルにtrueを書き込む、つまり新しい値を取得したことになる。

5) 無限ループを開始し、終了条件はフラグファイルでfalseとする。

6) 別のチャートで、スクリプトがフラグ付きのファイルを読み、新しい値があれば、チャートにリスクを描き、ファイルに偽を書き込む。

テスターでのビジュアルモードでのテストは、だいたいこんな感じになります。

もう少し待てば、コンテストは終わり、もっとエレガントで美しいソリューションが提示されるかもしれません。

joo さん 待ってください、すべての値に興味があるとしたら、他にどんな値に興味があるのですか?)

という感じでしょうか。

1. Expert AdvisorのOnTickで、カウント状態のプログラム配列を形成する。

2. テスト終了後、このプログラム配列を全体としてファイルに書き出す(各パラメータを別々のファイルに書き出すとよい)。

3. 次に、インジケータ OnInit で指定された一次元配列をフェッチする。

4.それをOnCalculatedのインジケータ配列にコピーします。

ただ、配列の書き込みでもなぜか問題が発生します(上図参照)

 
DV2010:

待てよ、全ての値に興味があるなら、もう一つの興味のある値ってなんだ?)

全部はどうでもいいんです。

DV2010

こんな感じだと思います。

1. Expert AdvisorのOnTickにカウント状態のプログラム配列を作成します。

2. テスト終了後、このプログラム配列を全体としてファイルに書き出す(各パラメータを別々のファイルに書き出すとよい)。

できるんですね。

DV2010

3. 次に、インジケータ OnInit で指定された一次元配列をフェッチする。

では、なぜオンニットで?一度だけでいいんですか?ほとんどリアルタイムでテストを監視しているとのことですが。

DV2010

4.それをOnCalculatedのインジケータ配列にコピーします。

ただ、配列の書き込みでもなぜか問題が発生します(上図参照)

問題は、ティッキーデータをチャートに表示できないことでしょう。もちろん、ダニを集めない限りは、ですが.........。とにかく、すでに警告したとおり、1分間に1回以上データを保存しないことです。しかし、例えば、取引商品に縛られずに分析したい場合は、エクセルファイルにアップロードすることも可能です。

 

joo, no!:)

私が今必要としているのは、テスターがその仕事をし、私が欲しいアカウントの指標の曲線のオシレーターを履歴に表示することです。

私のExpert Advisorは、私が上で引用し、以下のリンクのコードは、データを記録することを拒否する理由を、あなたの意見で、教えてください。

ファイル:
 
DV2010:

ロッシュ

具体的な理由はわかりませんが 、私のインジケーターと違って、自分のを起動するとメッセージが出るんです。

さて、あなたのコードを元に、Equityの値を全てファイルに書き込むべき、同様の簡易Expert Advisorを作りました(書き込んだ0バイトを含む全ての値の出力のみ変更、変数をグローバル化、ファイルのオープンと書き込みをOnInitとOnTickに分けています)が、書き込みエラーが無く、ファイルも作成されているにも関わらず、レコードもファイルも空っぽです。

何か問題があるのでしょうか?

FileClose(filename);
 
Rosh:

何も失敗してないんだろうな?

しかし、修正した場合(FileClose(handle);)には、その差はほとんど感じられません。)

まだ書かないの!?:)同時に、党派のように沈黙を守っている(0バイトを「説明」とカウントしない限り)。

 
DV2010:

修正後(FileClose(handle);)との差はほとんど感じません。)

まだ書かないの!?:)同時にそれはパルチザンのように沈黙している(0バイトが書かれていることを「説明」としてカウントしない限り)。

何をやっているのかわからない。以下は、そのバリエーションです。

//+------------------------------------------------------------------+
//|                                          Demo_File_Common_EA.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//--- input parameters
input string   filename="equity.txt";
int handle;
string common_folder;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   common_folder=TerminalInfoString(TERMINAL_COMMONDATA_PATH);
//---
   handle=FileOpen(filename,FILE_WRITE|FILE_READ|FILE_COMMON);
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   FileClose(handle);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(handle!=INVALID_HANDLE)
     {
      FileSeek(handle,0,SEEK_END);
      uint written=FileWrite(handle,TimeToString(TimeCurrent()),AccountInfoDouble(ACCOUNT_EQUITY));
      if(written>0)
        {
         //PrintFormat("Записано %d байт в общую папку всех терминалов - %s",written,common_folder);
        }
     }
   else
     {
      Print("Не удалось открыть на запись файл ",filename,".  Ошибка ",GetLastError());
     }

  }
//+------------------------------------------------------------------+
 
Rosh:

何をやっているのかわからない。ここでは、動作するオプションを紹介します。

素晴らしいそのため、ファイルに書き込むには、FileWriteに加えて、FileSeekによるポインタの設定も必要です。
Документация по MQL5: Файловые операции / FileWrite
Документация по MQL5: Файловые операции / FileWrite
  • www.mql5.com
Файловые операции / FileWrite - Документация по MQL5
 

...昨日すでに提起された問題について。

OnTickとOnCalculatedに挿入してみました。

Print("ObjectsTotal =", ObjectsTotal(ChartID()));

が、テストして みたところ、始値や終値に関するオブジェクト(Terminalの矢印や線のパラメータは、Charts>Objects>Objects Listで確認できます)があるにもかかわらず、なぜか戻り値が0になってしまいました。

なぜ、そのようなことが起こるのか、どなたか教えてください。

勝手に作られたオブジェクトをテスターが見ていないなんてことがあるのでしょうか?

 
DV2010:

その理由を教えてくれる人はいますか?

テスターは、自動作成したオブジェクトを全く見ないのですか?

テスト中に作成されるグラフィカルオブジェクトは、 テスト 終了後に開かれるチャート上に存在するオブジェクトとは何の関係もない。つまり、テスト 終了後にチャートに 表示されるエントリー/イグジット矢印に到達する方法がないのです。
 
Rosh:
テスト中に作成されたグラフィカルオブジェクトは、 テスト後に 開かれるチャート上のオブジェクトとはいかなる意味でも関連しません。つまり、テスト終了後にチャートに 表示されるエントリー/イグジットの矢印に到達する方法がないのです。

これこそ、私が恐れていたことです

というのも、利益と損失の分布の最速分析の観点から、結果の色は方向の色よりもはるかに重要だからです。さらに重要なことは、チャート上で上下の方向が分かる(線の傾きや矢印の色で)だけで、標準的な手法で取引の損益を理解するには、ポジションの種類と市場の方向を毎回比較する必要があることです)。

また、テスターのポジションが少なければ良いのです。しかし、何百、何千とある場合はどうでしょうか。標準的な方法では、この場合、負けと利益のポジションの分布を見ることはできませんが、損失を出した取引を赤い線で、利益を出した取引を青い線で表示すると、最小のスケールでも分布を見ることができます。

なぜそれが重要なのか?なぜなら、トレーディングシステムは時間枠によって異なる挙動をすることがあり、その弱点を特定し、その点を克服するためには、それらの一連の負けトレードが関連する価格ダイナミクスを把握する必要があるからです。

多くのトレーダーの要望はプライベートなものであり、プラスとマイナスの両方、つまり「大なり小なり」の範疇にある。 MetaTraderのインターフェースで取引行の種類を設定できるようになれば、多くのトレーダーにとって履歴分析がより快適になると思うし、プログラム的には簡単にできてマイナスもないように思う。つまり、従来のポジションタイプによる処理の変種、取引結果による処理の変種が必要なのである。そこで、フォーラム参加者の投票に加えるか、少なくとも投票にかけることはできないでしょうか。

実装方法は2つあるかもしれません。

1.OnTcik Expert Advisorとオブジェクトの描画を接続し、これらのオブジェクトをプログラムで変更できるようにしました。

2.ウィンドウインターフェースレベルでの設定を追加。

アカウントの状態のオシレータは、部分的にこの問題を解決しますが、取引の有効性の最も便利な表現であるため、部分的にしか、 - 価格ダイナミクスに最も近い、その視覚的な表現である。

一般論として、私見ですが、現在のバージョン5の弱点は、テスターと取引効率の可視化だと思います。これまでのところ、チャートと結果という形で旧バージョンの遺産があるだけですが、どちらもエキスパートアドバイザーの有効性について一般的にしか判断できませんし、それさえも誤った印象を与えることがあります(エキスパートアドバイザーの全体のエクイティグラフは着実に上昇していると頻繁に示されていますが、よく調べると、より大きな相対ドローダウンやその他の「驚き」があることがわかります)。