MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 821

 

私の質問にご注目ください。ある計算を行い、それをチャートのローソク足の数と同じ大きさの配列(時系列ではない)に保存するインジケータを書いています。元々、ターミナルパラメータでチャートに2000本のローソク足がある場合、新しいローソク足が現れると、1本目は2本目の値を取り、2本目は3本目の値を取る、などと考えていました。したがって、prev_calculatedが0に等しい場合、配列全体を再計算し、それ以外は最後のバーだけを計算します。しかし、新しいローソク足が出るたびにrates_totalの値が増え、上限である2000より高くなることがわかりました。

したがって、配列を再計算する意味はない。

しかし、ターミナルがローソク足2000本ちょうどを設定すると、なぜそのようになるのでしょうか?


ターミナルが閉じると、バーの数は再び2000になり、新しいローソク足が現れると再び増え始める。


ruslanzip:
午後.ヒントをお願いします。その条件のコードはどうなるのでしょう。口座残高が 増減した場合、関数を実行する

//関数の外側で変数を宣言する。

double Balance=AccountBalance()。

//Add to tick/calculation function:

if (Balance!=AccountBalance())

{

Balance=AccountBalance()。

MyFunction(); // <-- あなたの関数

}

 
私は私の本当のアカウントにお金を持っていますが、それはあなたが唯一の賃金を撤回することができますここに書かれている?
 
Roza75:
私は私の本当のアカウントにお金を持っていますが、それはあなたが唯一の賃金を撤回することができますここに書かれている?
リアルアカウントはどこにある?
 
Artyom Trishkin:
リアルアカウントはどこにある?
Metatreder 4 アプリケーション
 
Igor Makanu:

というのも、端末はこのように動作しているからです

これは正常な動作であり、エラーではないのですね。なぜなら、いくつかの基本的なカスタム・インディケータはこの要素を考慮せずに書かれており、prev_calculated=0になるたびに完全な再計算が行われるからです。


イゴール・マカヌ

このソリューションはテスター用で、ターミナルに過負荷をかけるとどうなりますか? このアカウントで2つ目のEAを実行するとどうなりますか?

注文履歴で作業する必要があります。私たちのマジシャンには未決済の注文はありません。

リロードは?それともリロード?後者であれば、EAの挙動は変わりません。2つ目のEAを起動しても、アルゴリズムはエラーなく、同様に実行されます。

作者が何を必要とするかは、作者が自分に課した課題によって決まる。彼の質問の仕方で、私はそれに答えました。 私の質問はもっと具体的ではありませんでした。

 
The_Sheikh:

私の質問にご注目ください。ある計算を行い、それをチャートのローソク足の数と同じ大きさの配列(時系列ではない)に保存するインジケータを書いています。元々、ターミナルパラメータでチャートに2000本のローソク足がある場合、新しいローソク足が出現すると、1本目は2本目の値を取り、2本目は3本目の値を取る、などと考えていました。したがって、prev_calculatedが0となる場合、配列全体、または最後のバーだけを再計算しています。しかし、新しいローソク足が出るたびにrates_totalの値が増え、上限である2000より高くなることがわかりました。

したがって、配列を再計算する意味はない。

しかし、ターミナルがローソク足2000本ちょうどを設定すると、なぜそのようになるのでしょうか?


ターミナルが閉じると、バーの数は再び2000になり、新しいローソク足が現れると再び増え始める。


//関数の外側で変数を宣言する。

double Balance=AccountBalance()。

//Add to tick/calculation function:

if (Balance!=AccountBalance())

{

Balance=AccountBalance()。

MyFunction(); // <-- あなたの関数

}



ありがとうございました!うまくいきました。

 
Artyom Trishkin:

そこにスマホのMetatreder 4のアプリを入れています。
 
Alexey Viktorov:

そして、なぜ内部でその仕組みを解明しようとするのか。まあ、自分で関数を書くなら、ソートして一番外側のインデックスの値を取る方が便利でしょうけど。しかし、内蔵機能より速く動作することはほとんどないでしょう。さらに、内蔵の機能により、指定したインデックスの範囲内で値を検索することができます。そのため、単純なソートではうまくいきません。そこで、配列の一部を中間配列にコピーして、もうソートしてそこから必要な値を取り出すことになるのですが、配列コピーはあまり「安上がり」な機能ではありません。

脳が発達するように、理解する必要があるのです。昨日は長時間座ってスケッチをした。列挙の原理でソートしなくてもできそうだが、やはり値を格納する変数が必要で、さらにインデックスではなく値を一度に返せるので、作業が簡略化される。あなたはより良い範囲と計算を保存するためのさまざまな修正で独自の関数を作ることができます。内蔵機能は細部にわたって不足しています。しかし、組み込み関数は非常に高速です、私は非常に慎重に私の関数を書いて、すべての詳細を考慮して:速度、品質、コードの節約、関数内のチェックとパスの数を減らすための修正を実装するように、多分それはC + +で書かれている、何が関係しているか理解していない、しかし、なぜか組み込み関数はまだ品質ではなく、速度をバイパスしています、私はずっと前にこの質問でフォーラムのコミュニティに対処しています。

 
フォーラムをご利用の皆様、ごきげんよう。問題に直面し、2日目の頭痛は、私はアイデアを実装する方法を見つけ出すことができない!?あるキャンドルで長方形、円、楕円(どんな図形でも)を描く方法、新しい座標で描き直すのではありません。また、ある条件がきっかけで図になる場合はどうでしょうか。それぞれのキャンドルスティックに描かれた図形。私は最近mql4の勉強を始めたばかりなので、チャートはよくわかりません。昨日、10本目のバーに四角を印刷してみようと思い立ちました(例として)。 1本できたのですが、もう描画されません。昨日、コードを突いて突いて、最終的にはうまくいったのですが、四角が常に古い場所で消されて新しい場所に描かれ、そして一度だけ出力された四角に悩まされるのです。実装方法を知っている人をヒントにしてくださいまたは、フォーラムで支店があるところをアドバイスしてください。すでにたくさんの情報を読んでいるアカは、さらに混乱するばかりです回答ありがとうございました。