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

 
int型の 変数を追加し、そこに明示的に変換したdatetimeを入れたら、うまくいきました。しかし、今は比率の結果が1より小さいことが必要です、つまり。
数式MathMin(時間1-時間2,時間2-時間3)/MathMax(時間1-時間2,時間2-時間3)
が、また0を出すようになった、別に正しいのだが
 
Roman Sharanov:
int型の 変数を追加し、そこに明示的に変換したdatetimeを入れたら、うまくいきました。しかし、今は比率の結果が1より小さいことが必要です、つまり。
数式MathMin(時間1-時間2,時間2-時間3)/MathMax(時間1-時間2,時間2-時間3)
が、また0を出すようになった、別に正しいのだが
(double)MathMin(Time1-Time2,Time2-Time3)/(double)MathMax(Time1-Time2,Time2-Time3)
 
Roman Sharanov:

すでにその方法で試したが、何もなかったと書いています。

受信側の変数も double である必要があります。

 
素晴らしい、これで常に 1 を与える
MathMin と MathMax は引数が違っても同じ値を与える。
 
Roman Sharanov:

2つの時間軸の比率を求める方法を教えてください。(2つの期間のバーの比率が必要です。)
このように書いたのですが、0が出ます。時間1>時間>時間3 常に

明示的な型変換を せずに、(ダブル)で書いてみましたが

そして、例を挙げて、何が入力で、何が出力であるべきかを説明することができます。すでにすべてのヒントと質問を何度も読み返しましたが、どこから始めて、何に到達すべきかがまだ理解できていません。

例えばこんなコード

#define  PRINT(A) ::Print(#A + " = " + (string)(A));
/********************Script program start function*******************/
void OnStart()
{
 datetime t1 = TimeCurrent(), t2 = TimeCurrent()-PeriodSeconds(PERIOD_M1)*7, t3 = TimeCurrent()-PeriodSeconds(PERIOD_M15);
 PRINT(t1-t2);
 PRINT(t1-t3);
 PRINT(double(t1-t2)/double(t1-t3));
 PRINT((t1-t2)/double(t1-t3));
 PRINT(double(t1-t2)/(t1-t3));
}/*******************************************************************/

という結果になります。

2018.02.04 15:41:35.922 00 EURUSD,H1: double(t1-t2)/(t1-t3) = 0.46666667
2018.02.04 15:41:35.922 00 EURUSD,H1: (t1-t2)/double(t1-t3) = 0.46666667
2018.02.04 15:41:35.922 00 EURUSD,H1: double(t1-t2)/double(t1-t3) = 0.46666667
2018.02.04 15:41:35.922 00 EURUSD,H1: t1-t3 = 900
2018.02.04 15:41:35.922 00 EURUSD,H1: t1-t2 = 420
 
Alexey Viktorov:

また、例を挙げて、入力は何か、出力はどうあるべきかを説明してください。すでに何度か全てのアドバイスや質問を読ませていただきましたが、やはり何から始めて何に至ればいいのかが分かりません。

例えばこんなコード

という結果になります。

はい、ただし0か1が表示されますが、if else条件で解決しました。

 
Roman Sharanov:

はい、0か1を与えることを除いて、私はif else条件でそれを解決しましたが、少なくとも動作します。

ダブルのような結果を出力するように書かれています。

とこちら

そして、私の例の後でも...。言葉だけでは足りない。

if elseと何の関係があるんだ?これは条件演算子であり、条件に含まれる値の型には一切依存しない。

分子と分母が等しいときだけ1を作ることができます。しかし、0になることはありえない。

 

皆さん、ごきげんよう。

巨大な

コンピュータの中のメタエディタの

7台の端末をインストールし、それぞれがメタエディタを引きずっている状態です。

7.0では、コンテキストメニューから mqファイルを開こうとすると、おかしくなってしまいます。

定期的に別のメタエディターで開くので、とても不快な気分になります。

もしかしたら、この問題を解決する方法を知っている人がいるかもしれません。

メタエディタを1つだけ設定したい。

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

 
Northwest:

皆さん、ごきげんよう。

巨大な

コンピュータの中のメタエディタの

7台の端末をインストールし、それぞれがメタエディタを引きずっている状態です。

7.0では、コンテキストメニューからmqファイルを開こうとすると、おかしくなってしまいます。

が、定期的に別のメタエディタで開くので、心情的に不愉快です。

どなたか、この問題を解決する方法をご存知でしょうか?

メタエディタを1つだけ設定したいのですが。

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

私の場合は、MQLフォルダへの「シンボリックリンク/ラベル」で解決しました。そのため、プログラムディレクトリからメインフォルダを取り出し、ショートカットを作成し、これらのディレクトリを削除して、ショートカットに置き換えた。これで、どの端末でもExpert Advisor/Indicator/Scriptsのセットが同じになりました。また、どのメータエディタを開いても、同じファイルが表示されます。

もちろん、MQL4/5の場合は、メインディレクトリが異なります。

 
Konstantin Nikitin:

MQLフォルダへの「シンボリックリンク/ラベル」で解決しました。そのため、プログラムディレクトリからメインフォルダを取り出し、ショートカットを作成し、ディレクトリを削除し、ショートカットに置き換えた。これで、どの端末でもExpert Advisor/Indicator/Scriptsのセットが同じになりました。また、どのメータエディタを開いても、同じファイルが表示されます。

もちろん、MQL4/5ではメインディレクトリが異なります。

アドバイスありがとうございました。

ただ、「自分のEAとインジケーター」だけを異なる端末で見ることができるのは、私にとっては望ましいことです。

つまり、MQLのフォルダは「自分だけのもの」でなければならないのです。

これでは、ブルートフォース(総当り)方式で、インストールされているディストリビューションからメタエディタのファイルを抜き出すしかないですね。

1つだけ残す。そして、レジストリクリーナーで存在しないファイルのパスを削除してください。

でも、うまくいくかどうか、わからないんです。結果オーライでお願いします。