//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//| ot - время открытия ( 0 - любое время открытия) |//+----------------------------------------------------------------------------+bool ExistPositions(string sy="", int op=-1, int mn=-1, datetime ot=0) {
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (ot<=OrderOpenTime()) return(True);
}
}
}
}
}
}
return(False);
}
皆さん、こんにちは。
新ビルドでのインジケーターの始まりについてコメントください。サイクルスタート(正しいやり方)に興味がある。以下はBolingerBandsのコードです。疑問のある箇所にはコメントをお願いします//どんな意味があり、何のために あるのか?
これまでのチュートリアルでは、すべてが同じで、https://book.mql4.com/ru/samples/icustom。
そして、ドキュメントを読む?理解しがたい表現を踏んで、魔法のF1キーを押すか、ホームページで読むか。
https://docs.mql4.com/ru/array/arraysetasseries
https://docs.mql4.com/ru/basis/function/events#oncalculate
皆さん、こんにちは。状況がつかめないので、助けてください。
私のコードでは、buf0は 画面に描画される必要があり、buf1は 描画されず、さらなる配列処理と別のバッファ(例えばbuf2)への出力のためにカウントされます。 buf1 を文字列で隠している。
SetIndexBuffer(0,Buf0)を設定。
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1)を設定します。
SetIndexBuffer(1,Buf1)を設定。
SetIndexStyle (1,DRAW_NONE); // この の線を隠したい。
しかし、インジケータを設定すると、計算の違いからオフセットが発生してしまう...。
質問: この差をなくして、buf0が 正常に描画されるようにする方法はありますか?皆さん、こんにちは。現状が把握できないので、助けてください。
私のコードでは、buf0は 画面に描画される必要があり、buf1は 描画されず、さらなる配列処理と別のバッファ(例えばbuf2)への出力のためにカウントされます。 buf1 を文字列で隠している。
SetIndexBuffer(0,Buf0)を設定。
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1)を設定します。
SetIndexBuffer(1,Buf1)を設定。
SetIndexStyle (1,DRAW_NONE); // この の線を隠したい。
しかし、インジケータを設定すると、計算の違いからオフセットが発生してしまう...。
質問: この差をなくして、buf0が 正常に描画されるようにする方法はありますか?INDICATOR_DATAとINDICATOR_CALCULATIONについてお読みください。
そしてその前に#property indicator_buffers と IndicatorBuffers(10); 10 は私のインジケータからで、ME 509 ビルドのようにバッファの数に制限がないことを示すために削除していません。
パラメータ
array[]
[in][out] 設定する数値の配列。
フラグ
[in] 配列のインデックス付けの方向。
戻り値
成功した場合はtrueを、そうでない場合はfalseを返す。
しかし、何を与え、どのようになるのか for(i=0; i<InpBandsPeriod; i++) and for(i=InpBandsPeriod; i<0; i--) .trueとfalseはループに反映されるのでしょうか。build 5xxでは存在しませんでした。 ArraySetAsSeries を使わなくても可能かもしれませんが、その場合、デフォルトはどうなるのでしょう。あるいは、そうでないかもしれません。
AlexeyVikのおかげで、解決しました...
509ビルドの古いmql4言語はいつまで使えるのか、新しいビルドから急いで言語を習得する必要があるのか、どなたか教えてください。
kimの機能が使えない...。
ウィザードでこれ以上ポジションがなければポジションが開く はずなのですが・・・・・・私との新しいバーごとに開いてしまうのです・・・・・。
kimの機能が使えない...。
ウィザードでこれ以上ポジションがなければポジションが開くはずなのですが・・・・・・私との新しいバーごとに開いてしまうのです・・・・・・。
この ot -open time(0- any open time)を見て、あなたはどう思いますか?
この ot - open time(0 - any open time)を見て、あなたはどう 思いますか?
そして、なぜ
がない場合は、オープン
この otを 見る - オープニングタイム( 0 - 任意のオープニングタイム)、そしてあなた?
ということは、そのようなマジックを使って、何時オープンしてもオープンポジションが ないことを確認する必要がありますね...マジックの単純な制限...乾杯
if(ExistPositions(NULL,-1,44444,-1)==false)// このマジックナンバーのオープンポジションがない場合、チェックします......。
......または多分私は理解していない......私はポジションが開いたときに気にしないので、私は-1を持っている......とにかくそれは新しいバーで、古いものが閉じられたときにのみ開かれます...条件がこの魔法の数字でオープンポジションがない場合のみ開くことができると指定されているからです。
をさらに簡単にすると、ポジションを開いて、閉じるまで待つ...ということです。閉じてからまた開くと、確かにこのマジシャンのポジションをすべてのバーで開くべきではありません... - 再び、このマジシャンのオープンポジションがないかどうかを確認する条件です。