キーを押す前の時間だけコードの一部を無効にする実装は不可能です =/ もっと簡単な方法がありますが、1つ問題が あります。キーを押したときに、その値を最初の if 文の 最初に戻さなければ なりません。
#define VK_D 0x44voidOnChartEvent(constint id, // идентификатор события constlong& lparam, // параметр события типа long constdouble& dparam, // параметр события типа double conststring& sparam) // параметр события типа string
{
Comment(__FUNCTION__,": id=",id," lparam=",lparam," dparam=",dparam," sparam=",sparam);
int y =(int)dparam;
datetime dt =0;
double price =0;
int window=0;
int i;
int x=(int)lparam;
if (id==CHARTEVENT_CLICK)
{
ChartXYToTimePrice(0,x,y,window,dt,price);
ObjectCreate("Trend Line"+i,OBJ_TREND,0,dt,price,dt,price);
ObjectSetInteger(0,"Trend Line"+i,OBJPROP_SELECTED,true);
if(id==CHARTEVENT_KEYDOWN)
{ switch(int(lparam))
{ case VK_D:
i=rand();
}}}}
ありがとうございました!)これは私が探していたラインです if (id==CHARTEVENT_CLICK && key == 'D'), could not connect two events, this didn't work if (id==CHARTEVENT_CLICK & id==CHARTEVENT_KEYDOWN) Thanks much again)
こんにちは。EA用に以下のコードを書くのを手伝ってください。配列を通して行いたいのですが(他に良い方法があれば教えてください)。一般的にEAはメッセージを送信しますが、配列(temporary)を介して送信させたいのです。つまり、Expert Advisorはメッセージの送信を開始する際に、以前に送信したことがあるかどうかをチェックし(配列にメッセージが格納されているかどうかをチェック)、なければメッセージを送信し、メッセージが見つかれば送信を省略します。わかりやすいといいのですが)ありがとうございました。
問題文に間違いはないか?
単純に、選択肢がある。
- 最後のメッセージを繰り返さない
- を無視する(タイムラグを設定する),つまり,メッセージを繰り返す必要がある。
追伸:最初のバリエーションは、2番目の特殊なケースですが、実装はより簡単です。あなたの問題の定義も、無限ラグを持つ第2変形の特殊なケースです。
もし興味があるなら、ここで悩みを解決してあげましょう。
メッセージを格納するtext配列と、メッセージを検索するindex配列の2つを定義する。
インデックス配列は int型である。1次元目には、テキストメッセージのチェックサムを書き込む。2番目は,1番目の配列の行番号です.インデックス配列は1次元でソートされます。
新しいメッセージを受け取る。そのチェックサムを読み取る。ArrayBsearch() 関数を使用すると、このようなメッセージを見つける ことができます。見つからなければ、オリジナルのメッセージになります。それをメッセージの配列に追加し、インデックス配列を参照してチェックサムを行い、ソートを忘れないようにします。
チェックサムのオプションは何ですか?私ならこうする:文字数やチェックサムを考慮する。例えば、テキストのチェックサムは、文字コードの合計である。最近の変化を考えると、65 536*256を超えることはできません。つまり、メッセージのチェックサムは以下のようになります。
を1000万倍した文字数で、テキストチェックサムを付加します。
プロ!アングルの線に問題があります。
座標を使ってTRENDBYANGLEを 作りました。
- 角度が必要です。
のヘルプによると、プログラムが作成したライン-ZEROの角度はOKだそうです。
同じ座標で、線に触れずにもう一度同じコードを実行したところ、0度ではなく、正しい度数が表示されました。なぜ、どうすれば最初から正しくできるのでしょうか?
あるいは、ある座標を与え、角度を尋ねると0と答え、次に別の座標を与えると、前の座標の角度と 答えました。
誰も回答していないので、このコメントを最初に移しましたが、本当に必要なんです =/。
それはこれを実装することは可能ですか:私は任意のキーを押すと、インジケータコードの一部がオンになっている(マウスクリックでオブジェクトを作成するための責任)、その後イベントが発生した場合(コードの第二部、イベントは、例えば、同じオブジェクトを作成することがあります)、コードの最初の部分が無効になっている(としない場合は、オブジェクトは、それぞれのクリックによって作成されます)と、キーを押したときに実行し、その周りに)
できます。OnChartEvent ブロックを追加。その中で、あなたのアイデアに従って、必要なプレス、測定を記録し、それに対する反応を記述してください。
キー入力の前のピリオドを無効にする部分が実装できない =/ もっと簡単な方法があるのですが、一つ問題があります。キーが押されたときに、最初の if 文の最初にその値を 返す必要が あるのです。
このコードは、マウスがクリックされた場合にのみ実行され、キーストローク・イベントをチェックする3行のコードがあります。そして、この3行のコードは数ミリ秒で実行され、現在のOnChartEventの呼び出し中にidが変更できたとしても、その間に3行のコードを実行し、キーが押される確率は0%です。明らかに、あるidの値でトリガーされるブロックの中でidをチェックし、異なる値をそこで待つことは無意味です。まず、キーが押されたことを確認し、別のブロックで、キーの番号または目的のキーを押したことだけを変数に保存します。そして、この変数で、ブロック内にあるマウスクリック用のコード片を有効にしたり、無効にしたりします。
ありがとうございました!)これは私が探していたラインです if (id==CHARTEVENT_CLICK && key == 'D'), could not connect two events, this didn't work if (id==CHARTEVENT_CLICK & id==CHARTEVENT_KEYDOWN) Thanks much again)
こんにちは、私は過去n本のローソクの平均サイズを計算する関数を持っています。時々それは次の値を出力します: "5e-05.0"。NormalizeDouble()は役に立ちません。このような数値をプログラムで計算し、切り捨てる方法を教えてください。
こんにちは、私は過去n本のローソクの平均サイズを計算する関数を持っています。時々それは次の値を出力します: "5e-05.0"。NormalizeDouble()は役に立ちません。このような数値をプログラムで計算し、切り捨てる方法を教えてください。
何を切り捨てるか、だ。
このような小さなローソク足、5ピップス、低緯度でのみ、5桁の口座で、低い時間枠で発生する可能性があります。スキャルピングを扱わないのに、n本のローソク足に対して平均値がやたらと小さいことがあるのなら、この関数の実装を疑うべきでしょう。