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

 
Сергей Таболин:

間違っているかもしれませんが、EAの仕組みが全くわかっていないようですね。プログラムが動作している」とはどういう意味ですか?

ヒント - まず、OnInit、OnTick、OnDeinitが何であるかを調べてください。すべてがうまくいくと思います ))))

一般的に、あなたの回答から判断すると、あなた自身はプログラムの仕組みをよく理解していないようです。愚問としか思えないので。そう前のコメント者が思っているのと同じで、止まってしまうのです。ただ、他の言語でのプログラミング経験から、ループで本体を実行し、イベントが来たらそれに飛び込んでいくのだと思います。もし、プログラム本体がループで実行されるのであれば、なぜそのような書き方をして いるのかが分かります。
 


MT 4でExpert Advisorをテストしています。MT4のTester Logで Print()関数を1回だけ、最後の時間の値で表示するには、どの言語、またはMQL4の関数を使用すればよいか教えてください。以下は簡単なコードです。

int g;
void OnTick()
{
if (Hour()>g)
{
Print("------------------------------------=",Hour());
g=Hour();
}
}

毎正時、МТ-4 Log-FileにPrint()が出力されます。

2020.06.24 15:54:12.250 2010.01.04 06:00:00  ОПТИМ КОДА EURUSD,M1: ------------------------------------=6
2020.06.24 15:54:12.249 2010.01.04 05:00:00  ОПТИМ КОДА EURUSD,M1: ------------------------------------=5
2020.06.24 15:54:12.249 2010.01.04 04:00:00  ОПТИМ КОДА EURUSD,M1: ------------------------------------=4
2020.06.24 15:54:12.248 2010.01.04 03:00:00  ОПТИМ КОДА EURUSD,M1: ------------------------------------=3
2020.06.24 15:54:12.247 2010.01.04 02:00:00  ОПТИМ КОДА EURUSD,M1: ------------------------------------=2
2020.06.24 15:54:12.247 2010.01.04 01:00:00  ОПТИМ КОДА EURUSD,M1: ------------------------------------=1
2020.06.24 15:54:12.214 2010.01.01 00:00:00  ОПТИМ КОДА test started
2020.06.24 15:54:12.196 TestGenerator: spread set to 2
2020.06.24 15:54:09.838 Expert ОПТИМ КОДА EURUSD,M1: loaded successfully
2020.06.24 15:54:09.827 Expert ОПТИМ КОДА EURUSD,M1: removed

しかし、Print()がMT-4 Loggerに一度だけ、その時間の最後の値で出力される必要があります。ジャーナルに最後のエントリーが表示された後、最後から2番目の、つまり前のPrint()エントリーを削除するのが論理的でしょう。注文、グラフィックオブジェクトを削除する方法を知っています。しかし、LogbookからPrint()エントリーを削除する方法がまだわかりません。

よろしくお願いします。

Документация по MQL5: Общие функции / Print
Документация по MQL5: Общие функции / Print
  • www.mql5.com
Данные типа double выводятся с точностью до 16 десятичных цифр после точки, при этом данные могут выводиться либо в традиционном либо в научном формате – в зависимости от того, как запись будет наиболее компактна. Данные типа float выводятся с 5 десятичными цифрами после точки. Для вывода вещественных чисел с другой точностью либо в явно...
 
Valeriy Yastremskiy:
いいえ、審査官によってティックが切り取られることはありません。EAが動作中の場合、入力されたティックはスキップされます。終了すると、次のチックで再びスタンバイモードで起動します。
あなたの論理では、プログラムがロット設定機能に移行することはないようです。でも、公式パブリッシャーからすると、そういうプログラムになって いるんです。機能の順番は以前の記事で書きました。
 
前のコメントの方と二の足を踏んでいるので、もう一度お聞きします。公式の例では、プログラム本体でロットボリュームをカウントすることが提案されていますが、毎ティックで 計算するのが論理的ではありませんか?何のためにプログラム本体に書かれているのですか?
削除済み  
EAをインストール できない。インストールボタンがクリックできないのですが、どうしたらいいですか?正確には、押しても何も起こらない。
 
Сергей Таболин:

カラシかマキシムか?))))))))))))


質問です。

台本がある。EAから標準的な手段で起動することはできません。そこで、Expert Advisorに関数として追加する必要があります。しかし、スクリプトを編集する際にExpert Advisorで同じ変更をしたくないのです。どうすればいいのか?インクルージョンによって?

クラス)とオブジェクト
または貼り付けによる)
 
Ivan_Invanov:
あなたの論理では、ソフトがロット設定機能に行くことはないようです。しかし、公式パブリッシャーからは、このようにプログラムが書かれて いるのです。以前の記事で機能の順番を書きました。
初期化および非初期化は一度だけ動作します。最初と最後に。
削除済み  
Ivan_Invanov:
だいたい、あなたの反応から判断すると、あなた自身、プログラムの仕組みをよく理解していないようですね。だから、愚問としか言いようがないようです。前のコメント者が思っているように、止まってしまうのです。ただ、他の言語でのプログラミング経験から、ループで本体を実行し、イベントが来たらそれに飛び込んでいくのだと思います。もし、プログラム本体がループで実行されるのであれば、なぜそのような書き方になって いるのかが分かります。

あなたのコメントから察するに、それも理解できていないようですね。(((

これは「他の言語」ではなく、「MQL」なのです。

あなたへのアドバイス - この集団がどのように機能するかを正確に把握すること。

それ以外の機能はすべて派生したものです。

図解してください。

削除済み  
Ivan_Invanov:
ええ、わからないから聞いているんです。ontickがイベントなのはわかるのですが、その後のEAの流れがよくわかりません。プログラム本体にアクセスしてロット数量を計算するのか、それとも行かないのか? 公式パブリッシャーのEAは、なぜそのような書き方をしているのですか?

そして、ここにいる誰かが、あなた個人のためにドキュメントを書き直すようになるとでも思っているのですか?あなただけに?この中に?自分で掻いとけよ...。

 
Ivan_Invanov:
うん、わからないから聞いてるんだよ。ontickがイベントであることはわかるのですが、そのあとEAがどこに行くのかがよくわからないのです。なぜ、出版社がこのような書き方をして いるのでしょうか?

コードを見せれば(ただし、コードを見せれば著作権は明白になることを理解しなければならない)、EAのスキームを見て、何が呼ばれ、何が開かれないか、取引になるかならないかを言うだろう。