MetaTrader 4 Build 529 ベータ版リリース、新コンパイラー搭載 - ページ 27

 
Barbarian:

あなたはおそらく、私が今MT4のベータ版を使用して書かれていることを説明した上記の私の投稿を読んでいないでしょう。nixでは、誰もが完全に自分のサンドボックスの中で作業し、rootユーザだけが一般的なプログラムを置き、他のユーザが使用するための権利を配布しています。マイクロソフトと似ているようで、そこでは思想が全く違う。ちなみに、ベータ版でユーザー設定がX:³³に書き込まれるのは気になりませんが、以下が気になります。

1.That it creates a subdirectory X:\Usersxxx╱AppData╱Roaming╱MetaQuotes╱TerminalⒸB5589D10299052C8D921603EBD1F9752Ⓒ that you will know its name until there, in addition it changes its name with every update.

2.このパスは、ユーザー設定を書き込むためだけでなく、インジケーター、Expert Advisor、スクリプトなどの実行可能ファイルにも使用されます。もちろん、これは後で回避できるかもしれませんが、その代償は何でしょう。

最初の項目が一番怖いのですが、ファイルへの読み込み/書き込みを使用すると、これらの操作を使用するコードがより複雑になるからです。


読みましたよ、まったく同感です。私が書いたこと-ターミナルでパスを設定するのは悪くないと思います。設定やファイル、EAを共有すると便利なことがあります。そうでない場合もあります。
 
Antonsan:

私はスペイン語で書いています。そして、Googleで翻訳しています。

英語への翻訳も、ロシア語の翻訳と同じようにひどいものです。

このインジケータはEAに用意されており、数本のバーを描画するだけです。
タイムフレームを変更すると、時々、画面上でインジケータが頻繁に繰り返されることが確認されました。
何度か実行して正しく線が引けることもあれば、履歴に並んだ同一コピーと思われることもあります。

これは、履歴には3つの同じコピーがありましたが、スクリーンショットを縮小するために、2つだけ見ました。

端末が他のTFの履歴をダウンロードする際に発生します。

インジケータ初期化後、バッファ全体をクリアする必要があります。あるいは、すべてのバーを描く。

 
ALXIMIKS:


私の考え(グラフを揺らし、現在を過去に置き、未来を構成すること)を説明しましたが、もしあまり明確でないなら、残念です............。

マイナスバーに必要なものをプラスバーに適切な値で描画する別の方法をご提案頂ければ幸いです。

どこに何を置くかは重要ではありません。大切なのは、その結果として何を描くかです。

過去と未来のスライスが必要な場合、1つのバッファと未来の必要な数のバーに対して SetIndexShiftが必要です(過去から借りています)。

未来が必要な場合は、1つのバッファで、SetIndexShift( bars )で、"bars "の値だけを記入します。

そして、もし過去が完全に必要で(重要、左端のバーも埋めなければならない)、未来の一部も必要なら、2つのバッファをそれぞれ専用にします。

一般的には、問題はないと思います。

 

文字列で宣言された外部パラメータが値を失うバグが修正されました。感謝

次の問題は、iCustom()呼び出しの問題です。呼び出されたインジケータに文字列パラメータが含まれている場合、以下のエラーが発生します。


マスター "のコード:

#property indicator_chart_window
#property indicator_buffers 1

extern string TestString = "whatever value that we want initially set";

double firstBuffer[];

int OnInit() { SetIndexBuffer(0,firstBuffer); return(0); }
int deinit() {                                return(0); }
int start ()
{
   firstBuffer[0] = iCustom(NULL,0,"_slave","",0,0);
   Comment(firstBuffer[0]);
   return(0);
}

スレーブ "のコード:

#property indicator_chart_window
#property indicator_buffers 1

extern string TestString = "whatever value that we want initially set";

double firstBuffer[];

int OnInit() { SetIndexBuffer(0,firstBuffer); return(0); }
int deinit() {                                return(0); }
int start()
{
   firstBuffer[0] = 1;
   return(0);
}

パラメータが文字列型でない場合、異なるエラーが発生する

整数値で宣言すると、"_slave "インスタンスを何度もリロードする(パラメータの型が間違っている場合のように)。

master integer "のコード (iCustom()コールで1つのintegerタイプ・パラメータを使用) :

#property indicator_chart_window
#property indicator_buffers 1

double firstBuffer[];

int OnInit() { SetIndexBuffer(0,firstBuffer); return(0); }
int deinit() {                                return(0); }
int start ()
{
   firstBuffer[0] = iCustom(NULL,0,"_slave integer",(int)0,0,0);
   Comment(firstBuffer[0]);
   return(0);
}

そして、"_slave integer "のコード.

#property indicator_chart_window
#property indicator_buffers 1

extern int dummy = 0;

double firstBuffer[];

int OnInit() { SetIndexBuffer(0,firstBuffer); return(0); }
int deinit() {                                return(0); }
int start()
{
   firstBuffer[0] = 1;
   return(0);
}

呼び出されたインジケータのパラメータがdoubleとして宣言されている場合は、問題なく動作します。

 

端末の問題で、データメモリがうまく消去されないとか、何かわからない問題があるのでしょう。

もし、このようなことが専門家に起これば、間違いなく誤ったデータを受け取ることになります。

これはどちらかというと、クリスマスツリーのお絵描きプログラムに近いですね。

 
mladen:

呼び出されたインジケータのパラメータがdoubleとして宣言されている場合は、問題なく動作します。


早急に確認します。ありがとうございました。
 
Antonsan:

私はスペイン語で書いています。そして、Googleで翻訳しています。

英語への翻訳も、ロシア語の翻訳と同じようにひどいものです。

このインジケータはEAに用意されており、数本のバーを描画するだけです。
タイムフレームを変更すると、時々、画面上でインジケータが頻繁に繰り返されることが確認されました。
何度か実行して正しく線が引けることもあれば、履歴に並んだ同一コピーと思われることもあります。

これは、履歴には3つの同じコピーがありましたが、スクリーンショットを縮小するために、2つだけ見ました。

こんにちは!スペイン語でお願いします。Se lo traduciré al ruso!Suerte!
 
Antonsan:

端末の問題で、データメモリがうまく消去されないとか、何かわからない問題があるのでしょう。

もし、このようなことが専門家に起これば、間違いなく誤ったデータを受け取ることになります。

これはどちらかというと、クリスマスツリーのお絵描きプログラムに近いですね。

ターミナルでは、バッファをクリアしないでください。インジケータ起動後に一度だけ初期化すればよい。
 
stringo:

修正済み

また、項目1、2も修正

ポイント3、デバッガーに取り組んでいます。

4,5については、再生方法を知る必要があります。ステップ・バイ・ステップその場での再現性がない。

ご感想ありがとうございました。コードをservicedesk, #880536に送信しました。
 

ドキュメンテーションエラーです。

datetime iVolume

でなければならない

double iVolume