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

 

目利きの皆様へ

正しい枝で質問しているのだろうか!?

問題は、#defineを使って、次のようなコードに展開される構成要素を定義することは可能か、ということです。

if(a) printf("%s(%04d)", __FUNCTION__, __LINE__)+printf("%s", _Symbol)を実行。

これは理解のため...正しい作りは違うかもしれません。理想的には、出力文字列の先頭にあるprintf()が、条件が一致したときに、文字列の前に「Function(string in function)」という構文で出力するような解決策を見出したいのです。これはすべて、書かれた説明書を短くするためです

そして、赤くハイライトされた構成は、これ(類似)に置き換えて欲しいです。

#define P(a) if(variable>=a) printf("%s(%04d)", __FUNCTION__, __LINE__)

私はInetで少し似たようなものを 見つけましたが、私はクラスを扱ったことがないので、まだ作業コードを何とかすることができません。という形で下位コンストラクトを適用してみました。

P(3)+printf("%s(%s) Accuracy=%d", Symbol, (Command==0? "Buy": "Sell"), Accuracy);

しかし、このような記述があると、「Print」エラーが発生します - void型の式は不正です ...

 

こんにちは。

の違いについて教えてください。

if(!OrderSelect(order,SELECT_BY_TICKET,MODE_TRADES)){PrintFormat("OrderSelect error %d",GetLastError());return;}; }.

и

if(OrderSelect(order,SELECT_BY_TICKET,MODE_TRADES)==false){PrintFormat("オーダーセレクトエラー %d",GetLastError());return;}。

おつかれさまでした

 
ski1973:

こんにちは。

の違いについて教えてください。

if(!OrderSelect(order,SELECT_BY_TICKET,MODE_TRADES)){PrintFormat("OrderSelect error %d",GetLastError());return;}; }.

и

if(OrderSelect(order,SELECT_BY_TICKET,MODE_TRADES)==false){PrintFormat("オーダーセレクトエラー %d",GetLastError());return;}。

おつかれさま

論理的な違いはありません。違いは、この論理的な比較の書き方にあるのみです。

!"マークは "NOT "です。すなわち、if(!Select())とif(Select()==false)は同じである。ロシア語では、次のようになります: if(NOT Select()).

ブーリアン変数の値を素早く「反転」させることができます。

bool var = true;
Print("1. var=",(string)var);
var=!var;
Print("2. var=",(string)var);
 

もうひとつ質問があります。以下は、プログラムの例です。

double Lots=0.01。

int slippage=30;

int Subr1()

{

int result=-1;

int_result=OrderSend(_symbol,OP_BUY,Lots,slippage,0,0)となります。

if(int_res<0){PrintFormat("OrderSend error = ",GetError());}; {PrintFormat("OrderSend error = ",GetError());}。

return int_result;

}

void OnTick()

{

int numer=-10;
if(OrdersTotal()==0)numer=Subr1();

if(OrdersTotal()>0)Subr2(数値);

を返します。

}

void Subr2(int order)

{

if(!OrderSelect(order,SELECT_BY_TICKET,MODE_TRADES)){PrintFormat("OrderSelect error %d",GetLastError());return;}; }.else PrintFormat("Ok, OrderTicket = ",OrderTicket());

}

レスポンス:OrderSelect エラー 4051。SELECT_BY_POSに置き換えると、OrderSelectエラー1が発生します。反応はストラテジーテスターと「実データで実行」でも同じです。SELECT_BY_TICKETの場合、MODE_TRADESを削除してみましたが、違いがありません。 何が問題で、どうしたらいいのでしょうか。ありがとうございました。

 
ski1973:

レスポンス:OrderSelect エラー 4051。SELECT_BY_POSに置き換えると、OrderSelectエラー1が発生します。反応はストラテジーテスターでも「実データで実行」でも同じです。SELECT_BY_TICKETの場合、MODE_TRADESを削除してみました:違いはありません。 何が問題で、どのように修正すればいいのでしょうか?ありがとうございました。

SELECT_BY_POS は、オーダーのリストとデザインの中で「優先順位によって」オーダーを選択することです。

void Subr2(int order)
{
if(!OrderSelect(order,SELECT_BY_TICKET,MODE_TRADES)){PrintFormat("OrderSelect error %d",GetLastError());return;} else PrintFormat("Ok, OrderTicket = ",OrderTicket());
}

注文キュー番号で注文を選択しようとしている ...で、ここでチケット番号を使っているのですが、注文は1件だけで、チケット番号は10023444 ...。だから何? ここでは、 1から2、3までの 数字が必要です...まあ、あなたは市場で持っているどのように多くの注文、...0、1、2から番号を修正...です。- 番号付けは配列の0から始まり、OrdersTotal()-1までと なります。

SELECT_BY_TICKET は動作するはずですが、チケット番号、つまりマーケットにある注文がある時点までで、それ以上は注文を送るためのチェックがあり、注文が送られないと、チケット = -1 !

そして、全体として、注文を扱う設計は正しくありません。もし、あなたがMQLを勉強しようと決めたなら、注文を扱うための既製の例を以下に示します。https://www.mql5.com/ru/forum/131859

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
Vitaly Muzichenko:

配列の話をしたり、FXの話をしたり。なんというパラドックスでしょうか。

そして、MT4/MT4の基本アレイはすべてバッファリングされていることは、バカでもわかることです。

MT4/MT5のプログラマーと同じレベルではなく、ユーザーが基本的なアレイを操作できるようにするため。

さらに、MT4/MT5の基本配列は、独自の拡張子(.htsまたは.hss - 正確には覚えていませんが、このようなもの)を持っているのです。

つまり、テキスト形式(拡張子が.txt)ではなく、独自の形式で端末にやってくるのです。

また、MT4/MT5では、基本配列がデコードされ、選択された時間枠(1分、5分、15分など)の配列に変換され、その後初めて複製、バッファリングが行われます。

なぜ、バッファリングされているのですか?

比較のため。だから、データが失われることはない。これらの配列のうち1つは常に(時々)再計算され、2つ目は(1つ目からコピーされた)ユーザーデータにコピーするときに使用されます。

つまり、ユーザーがデータを利用できるようにするための手続きは、かなり複雑なのです。

これは、一応、配列についてです。

ちなみに、AndroidもWindowも基本的なMT4/MT5アレイの拡張子は同じです。

--------------------------------------------------------------------------------------------------------------------------------

DYNAMICデータを第三者からMT4/MT5にインポートすることについては、私の知る限りでは、そのようなインポートは提供されていません。

そのため、MT4/MT5ではC++BuilderでのClient/Serverプロシージャは存在しません。

--------------------------------------------------------------------------------------------------------------------------------

この手順でライブラリに載るのかなぁ

http://tol64.blogspot.com/2015/12/easy-and-fast-gui-mql.html

もちろん、そこにもないことがほとんどでしょう。

つまり、ダイナミックアレイを MT4/MT5にベーシックフォーマットでインポートすると、自動的に標準的なデータ処理が行われます。

Библиотека "Easy And Fast GUI" для создания графических интерфейсов на MQL
  • tol64.blogspot.com
С этой статьи я начинаю еще одну серию, относящуюся к разработке графических интерфейсов. На текущий момент нет ни одной библиотеки кода, которая позволяла бы легко и быстро создавать качественные графические интерфейсы в MQL-приложениях. Я имею в виду графические интерфейсы, к которым мы все привыкли в известных операционных системах. Цель проекта — дать конечному пользователю такую возможность и научить это делать с помощью моей библиотеки. Я постарался сделать ее максимально понятной в изучении, с возможностями дальнейшего развития.
 
neverness:

そして、MT4/MT4の基本アレイはすべてバッファリングされていることは、バカでもわかることです。

MT4/MT5のプログラマーは、ユーザーに基本的な配列を扱わせるようなレベルではありません。

さらに、MT4/MT5の基本配列は、独自の拡張子(.htsまたは.hss - 正確には覚えていませんが、このようなもの)を持っているのです。

つまり、テキスト形式(拡張子が.txt)ではなく、独自の形式で端末にやってくるのです。

また、MT4/MT5では、基本配列がデコードされ、選択された時間枠(1分、5分、15分など)の配列に変換され、その後初めて複製、バッファリングが行われます。

なぜ、バッファリングされているのですか?

比較のため。だから、データが失われることはない。これらの配列のうち1つは常に(時々)再計算され、2つ目は(1つ目からコピーされた)ユーザーデータにコピーするときに使用されます。

つまり、ユーザーがデータを利用できるようにするための手続きは、かなり複雑なのです。

これは、一応、配列についてです。

ちなみに、AndroidもWindowも基本的なMT4/MT5アレイの拡張子は同じです。

頭の中がぐちゃぐちゃで、私なんかが見ても

配列、ファイル、時系列、インジケーターバッファなど、MQLでいろいろと混乱させていますね。

MT4とMT5は異なる方法で履歴データを保存します。MT4では、ユーザーは.hst ファイルhttps://docs.mql4.com/ru/files/fileopenhistory にアクセスすることができます。

MT5 では、履歴ファイルに直接アクセスすることはできませんが、カスタムシンボルで作業することは可能です。https://www.mql5.com/ru/docs/customsymbols

FileOpenHistory - Файловые операции - Справочник MQL4
FileOpenHistory - Файловые операции - Справочник MQL4
  • docs.mql4.com
[in]  Режим открытия. Это может быть одна величина или их комбинация: FILE_BIN, FILE_CSV, FILE_READ, FILE_WRITE, FILE_SHARE_READ, FILE_SHARE_WRITE. Клиентский терминал может подключаться к серверам разных брокерских компаний. Исторические данные (файлы HST) каждой брокерской компании хранятся в соответствующей подпапке папки истории...
 
Igor Makanu:

頭の中がぐちゃぐちゃになっちゃって、それどころじゃなかったー。

配列、ファイル、インジケーターバッファなど、すべてのMQLを混乱させました。

MT4とMT5は異なる方法で履歴データを保存します。MT4では、ユーザーは.hst ファイルhttps://docs.mql4.com/ru/files/fileopenhistory にアクセスすることができます。

MT5 では、履歴ファイルに直接アクセスすることはできませんが、カスタムシンボルで作業することは可能です。https://www.mql5.com/ru/docs/customsymbols

私の投稿では、履歴ファイルのことは一言も全く言っていないのですが。

また何かごっちゃになってるし、また話題も逸れてる。

DYNAMICデータセットの話をしたんです。それは全く別の話です。違いを実感してください。

 
neverness:

私の投稿では、履歴ファイルのことは全く言っていません。

また混乱し、また話題を逸らしていますね。

ダイナミックデータアレイの話でした。それは全く別の話です。

さらに、MT4/MT5の基本配列は、独自の拡張子(.htsまたは.hss - 正確には覚えていませんが、そのようなもの)さえ持っているのです。

OK、どうぞ、あなたがこのフォーラムのスレッドにいる目的が理解できません。

ネバーネス

DYNAMICデータセットの話をしたんです。これは全く別の話題です。違いを実感してください。

また、どのプログラミング言語でも、動的配列は 動的配列、時系列は時系列 であり、時系列の作業(アクセス)の一部は配列の作業のように整理されて いることを理解する必要があります...。
 
Igor Makanu:

OK、どうぞ、あなたがこのフォーラムのスレッドにいる目的が理解できません。

また、どのプログラミング言語でも、動的配列は 動的配列、時系列は時系列であり、時系列の作業(アクセス)の一部は配列の作業として整理 されていることを理解する必要があるように思います...。

ここで、端末のデータ形成の問題が大きくクローズアップされる。

http://profitraders.com/Python/hstRead.html

この記事は、MT4->Service->Figures Archiveにあるヒストリカルデータに関するものではないことに、読者の注意を喚起したい。

と、相場の取得と処理のプロセスに直接関与する.hst形式の端末のDYNAMICデータについてです。

------------------------------------------------------------------------------------------

私の説明が足りなかったかもしれませんね。他の作家を読む明らかになることを期待しています。

Чтение файла HST истории котировок Metatrader 4 — ProfiTraders.com
  • profitraders.com
Файлы истории котировок Metatrader 4 имеют расширение и находятся в папке данных торгового терминала, в каталоге . Они сгруппированы в подкаталогах, имена которых совпадают с названиями серверов, например: или . Имена файлов начинаются с наименования торгового инструмента, далее указывается таймфрейм (количество минут), например, для часового...