mql5言語の特徴、微妙なニュアンスとテクニック - ページ 7 1234567891011121314...247 新しいコメント fxsaber 2017.02.27 00:25 #61 RAMファイルを扱うには、次のような構成があります。const int handleRAM = FileOpen("\\\\.\\pipe\\RAM", FILE_READ | FILE_WRITE | FILE_BIN);あらかじめ適切なファイルを作成して おく。この実装では、例えば、任意の次元の(そして異なる)アレイを互いにコピーすることが、HDD/SDDを圧迫することなく、便利かつ高速に行えます。// Копирование массивов любых размерностей (и разных) друг в друга#define ARRAYCOPY(Dest, Source) \ if (ArraySize(Source) > 0) \ { \ const int handleRAM = FileOpen("\\\\REN\\pipe\\RAM", FILE_READ | FILE_WRITE | FILE_BIN); \ \ if (handleRAM != INVALID_HANDLE) \ { \ if (FileWriteArray(handleRAM, Source) > 0) \ FileReadArray(handleRAM, Dest); \ \ FileClose(handleRAM); \ } \ } 普遍的な解決策である。このようなコピーの古典は、次のようになります。// Копирует двумерный массив в одномерный#define MATRIX_TO_VECTOR(Matrix, Vector) \ if (ArraySize(Matrix) > 0) \ { \ const int Range1 = ArrayRange(Matrix, 0); \ const int Range2 = ArrayRange(Matrix, 1); \ \ ArrayResize(Vector, Range1 * Range2); \ \ int k = 0; \ \ for (int i = 0; i < Range1; i++) \ for (int j = 0; j < Range2; j++) \ { \ Vector[k] = Matrix[i][j]; \ \ k++; \ } \ }// Копирует одномерный массив в двумерный#define VECTOR_TO_MATRIX(Vector, Matrix) \ if (ArraySize(Vector) > 0) \ { \ const int Size = ArraySize(Vector); \ const int Range = ArrayRange(Matrix, 1); \ \ ArrayResize(Matrix, Size / Range + ((Size % Range == 0) ? 0 : 1)); \ \ for (int i = 0; i < Size; i++) \ Matrix[i / Range][i % Range] = Vector[i]; \ } 関数の代わりにマクロを使用するのは、関数に普遍的な大きさの配列を渡すことができないからです。 Features of the mql5 どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - [ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. Alexey Volchanskiy 2017.02.27 00:59 #62 ドミトリー・フェドセーエフポイントは、OrderSendの直後にOnTradeTransaction()が発動しないことです。要するに、ここでは議論の対象にならずに論客が群がっているだけなのです。OrderSend()の直後に何かをしなければならない場合、アルゴリズムには2つのバリエーションがあります。1.注文や案件のリストの更新を待つループを開始することができます。2.OnTick()を終了し、OnTradeTransaction()がトリガーするのを待ちます。3.新しい注文や案件がリストに表示されるかどうか、ティックで確認します。 2 と 3 を選択 )) Artyom Trishkin 2017.02.27 13:39 #63 mql5で4重のMODE_MARGINREQUIREDを置き換えることができるものは何ですか? Vitaly Muzichenko 2017.02.27 13:58 #64 アルチョム・トリシキン mql5でMODE_MARGINREQUIREDの代わりにできることは何ですか?これは、フォーラムのメンバーの誰も知らないことなので、開発者に聞く必要があります。この質問を4回ほど別のスレッドで行い、一度は「検索を使え」という回答まで得たのですが、検索では100件以上の質問があり、回答は1件もありません。5では 入金通貨以外のペアの証拠金を得る可能性がない ためか、開発元が回答していない ようです。Fiveではまだすべてが未完成で、今後もこの状態が続くと思われますが、みんなのためのOpenGLがあります =)。 Andrey Barinov 2017.02.27 14:04 #65 Artyom Trishkin: mql5で4重のMODE_MARGINREQUIREDを置き換えるものは何ですか?OrderCalcMargin() try https://www.mql5.com/ru/docs/trading/ordercalcmargin Vitaly Muzichenko 2017.02.27 14:08 #66 アンドレイ・バリノフ OrderCalcMargin() tryこれは理解できるのですが、インジケータからではうまくいきません double One_Lot=0.0; OrderCalcMargin(ORDER_TYPE_BUY,Symbol(),1.0,SymbolInfoDouble(Symbol(),SYMBOL_ASK),One_Lot); Comment(One_Lot); // залог на 1 лот Andrey Barinov 2017.02.27 14:10 #67 ヴィタリー・ムジチェンコこれは理解できるのですが、インジケータからではうまくいきません double One_Lot=0.0; OrderCalcMargin(ORDER_TYPE_BUY,Symbol(),1.0,SymbolInfoDouble(Symbol(),SYMBOL_ASK),One_Lot); Comment(One_Lot); ヘルプにちゃんと書いてあるんだけど、インジケータからだと動作しない https://www.mql5.com/ru/docs/runtime/running Artyom Trishkin 2017.02.27 14:11 #68 アンドレイ・バリノフ これはヘルプに明示的に書かれていることで、インジケータ https://www.mql5.com/ru/docs/runtime/running からは動作しない。 プログラムの種類に依存しない計算がしたい。 Andrey Barinov 2017.02.27 14:12 #69 アルチョム・トリシキン プログラムの種類に依存しない計算がしたい。 おおっ、私もいろいろと欲しいです :) Artyom Trishkin 2017.02.27 14:13 #70 アンドレイ・バリノフ おおっ、私もたくさん欲しいです :) うーん...答えになってないなぁ...。そしてこの質問は、あくまで枝葉の話題についてです。 1234567891011121314...247 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
あらかじめ適切なファイルを作成して おく。
この実装では、例えば、任意の次元の(そして異なる)アレイを互いにコピーすることが、HDD/SDDを圧迫することなく、便利かつ高速に行えます。
#define ARRAYCOPY(Dest, Source) \
if (ArraySize(Source) > 0) \
{ \
const int handleRAM = FileOpen("\\\\REN\\pipe\\RAM", FILE_READ | FILE_WRITE | FILE_BIN); \
\
if (handleRAM != INVALID_HANDLE) \
{ \
if (FileWriteArray(handleRAM, Source) > 0) \
FileReadArray(handleRAM, Dest); \
\
FileClose(handleRAM); \
} \
}
#define MATRIX_TO_VECTOR(Matrix, Vector) \
if (ArraySize(Matrix) > 0) \
{ \
const int Range1 = ArrayRange(Matrix, 0); \
const int Range2 = ArrayRange(Matrix, 1); \
\
ArrayResize(Vector, Range1 * Range2); \
\
int k = 0; \
\
for (int i = 0; i < Range1; i++) \
for (int j = 0; j < Range2; j++) \
{ \
Vector[k] = Matrix[i][j]; \
\
k++; \
} \
}
// Копирует одномерный массив в двумерный
#define VECTOR_TO_MATRIX(Vector, Matrix) \
if (ArraySize(Vector) > 0) \
{ \
const int Size = ArraySize(Vector); \
const int Range = ArrayRange(Matrix, 1); \
\
ArrayResize(Matrix, Size / Range + ((Size % Range == 0) ? 0 : 1)); \
\
for (int i = 0; i < Size; i++) \
Matrix[i / Range][i % Range] = Vector[i]; \
}
ポイントは、OrderSendの直後にOnTradeTransaction()が発動しないことです。
要するに、ここでは議論の対象にならずに論客が群がっているだけなのです。
OrderSend()の直後に何かをしなければならない場合、アルゴリズムには2つのバリエーションがあります。
1.注文や案件のリストの更新を待つループを開始することができます。
2.OnTick()を終了し、OnTradeTransaction()がトリガーするのを待ちます。
3.新しい注文や案件がリストに表示されるかどうか、ティックで確認します。
mql5でMODE_MARGINREQUIREDの代わりにできることは何ですか?
これは、フォーラムのメンバーの誰も知らないことなので、開発者に聞く必要があります。この質問を4回ほど別のスレッドで行い、一度は「検索を使え」という回答まで得たのですが、検索では100件以上の質問があり、回答は1件もありません。5では 入金通貨以外のペアの証拠金を得る可能性がない ためか、開発元が回答していない ようです。
Fiveではまだすべてが未完成で、今後もこの状態が続くと思われますが、みんなのためのOpenGLがあります =)。
mql5で4重のMODE_MARGINREQUIREDを置き換えるものは何ですか?
OrderCalcMargin() try
これは理解できるのですが、インジケータからではうまくいきません
OrderCalcMargin(ORDER_TYPE_BUY,Symbol(),1.0,SymbolInfoDouble(Symbol(),SYMBOL_ASK),One_Lot);
Comment(One_Lot); // залог на 1 лот
これは理解できるのですが、インジケータからではうまくいきません
OrderCalcMargin(ORDER_TYPE_BUY,Symbol(),1.0,SymbolInfoDouble(Symbol(),SYMBOL_ASK),One_Lot);
Comment(One_Lot);
これはヘルプに明示的に書かれていることで、インジケータ https://www.mql5.com/ru/docs/runtime/running からは動作しない。
プログラムの種類に依存しない計算がしたい。
おおっ、私もたくさん欲しいです :)