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

 
Artyom Trishkin:

推測する必要はありません。何が何のために行われているのかを考え、理解する必要があります。何かを書く必要があるとき、書く必要がないとき。

printには文字列が含まれ、数値は文字列にキャストされるべきだと考えている。
しかし、この例では、コンパイラが不調になることがわかりました。また、コンパイラがスキップするときとしないときを推測できないわけがない。

 
Roman:

printは文字列に変換されるべきと思われるので、どんな数値も文字列にキャストしなければならない。
しかし、この例は、コンパイラが鈍感になることを示した。コンパイラがいつスキップして、いつスキップしないかを推測しない方法。

もう一度言いますが、ここのコード、何がはっきりしないのでしょうか?

ZS このくらいなら。

Print((string)(uint)PeriodSeconds(PERIOD_MN1)*1000)

...確認してないんですよー、投稿に打ち直しただけなんです。

文字列への関数 変換を行う。

Print(string((uint)PeriodSeconds(PERIOD_MN1)*1000));
 

フレンズ!

MQLにDLLを接続する問題で悩んでいます。私の問題を記述しています。

1.最初はC#で.dllライブラリを書こうとしたんです。MQL4は、C#で書かれている場合、DLL内のすべてのメソッドが閉じられるので、そのようなライブラリを「食べる」ことはないことがわかりました。と積極的に探すようになりました。NuGetからダウンロードした「DLLExport」ライブラリの接続など、インターネット上でいくつかのバリエーションが見つかりました。いろいろな方法を試してみたが、うまくいかなかった。今日使えて明日使えない」という原則で、「もろもろ」解決するのは、本当に勘弁してほしいです。この方法で試してみて、実はそれ以外の方法もたくさんあるんです。

using System.Runtime.InteropServices;
using RGiesecke.DllExport;

[DllExport("Good", CallingConvention.Cdecl)] // + заменял на просто [DllExport] - не помогает
public static string Good() {

   return "GHBBBGGDDDD !!!!! РУССКИЙ! :) " + 5.ToString();
}


2.安定動作するC++のライブラリを書かなければならない可能性が高いことがわかった。1回目から接続し、テストクエリも問題なく通過しました。しかし、(DLLから)メソッドでテキストメッセージを(MQLに)返そうとし始めたとき、新しい問題が発生しました - MQLで"? メッセージを解読しようとしたが、うまくいかなかった!関数のパラメータで値を返そうとすると、"?".いろいろと検索してみたが、まだ解決策は見つかっていない。これは私が決めたバリエーションですが、クエスチョンマークが返ってきます。

extern "C" __declspec(dllexport) char* __stdcall ToString(char* &str)
{
        str = " - 889 - dsa - просто!";
        return "--- Привет! ---";
}


という形で答えが出ています。

デコードではどうにもならない...。


本質的に必要なもの

1) C#によるこの問題の本当の解決策はあるのでしょうか?安定した美しい解像度が欲しい!今はうまくいっても、新しく作ると落ちるかもしれない、という中途半端な対策はNGです。

2) C#で解決できない場合は、C++を経由する。品質を落とさずに正しく双方向にメッセージを送るには?(mql - dll - mql)です。MT4とMT5で同じように動作するバリアントが必要です。

 
Artyom Trishkin:

ここでも - コード - 何が明確でないのでしょうか?

H1以前のように周期に対応しないH1以上の定数が返される理由は不明です

Print("PERIOD_M1=",PERIOD_M1);
Print("PERIOD_M5=",PERIOD_M5);
Print("PERIOD_M30=",PERIOD_M30);
Print("PERIOD_H1=",PERIOD_H1);
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_M1=1
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_M5=5
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_M30=30
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_H1=16385
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_H4=16388

変数_Periodでも同様に返される。

 
Roman:

H1以前のように周期に対応しないH1以上の定数が返される理由は不明です

変数_Periodでも同様に返される。

 
Artyom Trishkin:

アルチョム......怖がらないで))
なぜM30にTFの値が表示されるのか?
1
5
30

そして、H1では16385から始まります。
まあ、まず値を分単位で返して、それから地獄に行くというのは理屈に合わない。
また、ヘルプにある時間枠の 戻り値としての_Periodの説明にも当てはまりません。

 
Roman:

アルチョム......怖がらないで))
なぜM30にTFの値が表示されるのか?
1
5
30

そして、H1では16385から始まります。
まあ、まず値を分単位で返して、それから地獄に行くというのは理屈に合わない。
また、ヘルプにある時間枠の 戻り値としての_Periodの説明にも当てはまりません。

Timeframeの。分数ではありません。秒数でもなく、馬場にゅーすの雁木の数でもなく、時間軸の価値 です。

Документация по MQL5: Проверка состояния / Period
Документация по MQL5: Проверка состояния / Period
  • www.mql5.com
Проверка состояния / Period - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:

タイムフレームの値。分数ではありません。秒数でもなく、馬場にゅーすの雁木の数でもなく、時間軸の価値 です。

定数はタイムフレーム値と等しくなければならない、というのはこのことです
そして、対応する論理的・数学的な意味を担います。
なぜなら、これらの値は計算に使用されるからです。

M1 = 1
M5 = 5
M30 = 30
H1 =60
H4 =240
D1
=1440

そうでない場合は、返された値の意味が失われる。
したがって、私の考えでは、それはバグです。

 
Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?
Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?
  • www.mql5.com
Так уж сложилось, что сейчас мало кто из разработчиков помнит, как написать простую DLL библиотеку и в чем особенности связывания разнородных систем. Я постараюсь за 10 минут на примерах показать весь процесс создания простых DLL библиотек и раскрою некоторые технические детали нашей реализации связывания. Демонстрация будет на примере Visual...
 
Artyom Trishkin:

よくもまあ、これだけ長時間、しかも朝から繰り返せるものだと......。また寝不足でもう朝を迎えているようですが))

せめて24時間隔離してドキュメントを熟読してほしい。それは残念だ...。このようなナンセンスなことを、C言語系のエースが言ったのは初めてである。そして、今回初めてそのすべてが説明された...。

これがService Deskで解明されたと想像すればいい。おそらく、そこではそういうバランスが取れていないから、閉鎖したのでしょう。