MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1534 1...152715281529153015311532153315341535153615371538153915401541...1953 新しいコメント Tretyakov Rostyslav 2021.07.07 10:00 #15331 Eugen8519:このように注文が終了します 上に書いたように... またはOnTick()のコードを投稿してください。 Tretyakov Rostyslav 2021.07.07 10:20 #15332 Eugen8519:このように注文が終了します この構造は //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- if(UseTimeLimit) { YesStop=true; MqlDateTime str1; TimeToStruct(TimeCurrent() , str1); if(str1.hour > startHour && str1.hour < stopHour) YesStop=false; } if(YesStop==false) { if(EMA0...) { ..... OPENORDER("Sell"); } if(EMA0...) { ..... OPENORDER("Buy"); } } //--- if(EMA0...) { ..... CLOSEORDER("Sell"); } if(EMA0...) { ..... CLOSEORDER("Buy"); } } //+------------------------------------------------------------------+ void CLOSEORDER(string ord) { ..... } //--- void OPENORDER(string ord) { ..... } Eugen8519 2021.07.07 10:30 #15333 ありがとうございます。今晩チェックして、後で報告します。 Vitaly Muzichenko 2021.07.07 10:30 #15334 MakarFX:この構造は 間違っていなければ、次のように書くことができます。 if(UseTimeLimit) { YesStop=true; MqlDateTime str1; TimeCurrent(str1); if(str1.hour > startHour && str1.hour < stopHour) YesStop=false; } Tretyakov Rostyslav 2021.07.07 10:40 #15335 Eugen8519: そうですか、アドバイスありがとうございます。今夜チェックして、後で報告します。 フクロウの起動時の設定でUseTimeLimitが設定されている場合 この関数は、 OnTick()ではなく、OnInit()で使用するのがよいでしょう。 Tretyakov Rostyslav 2021.07.07 10:44 #15336 Vitaly Muzichenko:間違っていなければ、このように書くことができます。 実はこんな風に書いているんです。 if(TimeHour(time[i])>=Time_Start&&TimeHour(time[i])<TimeFinish) 或いはもっと単純に if(Hour()>=Time_Start&&Hour()<TimeFinish) Oleksandr Nozemtsev 2021.07.07 10:54 #15337 こんにちは、インジケータラインの正しい平均化の方法を教えてください。周期Per_1の基本曲線は、Buffer_2[]で平均化周期Per_ 2の単純平均化のブロックを追加するまでは、普通に描画される(Buffer_1[])。 int OnCalculate(デフォルトパラメータ) { int i, j, limit; if(rates_total <= Per_1) return(0)です。 //最後に計算したバーを再計算します。 limit = rates_total - prev_calculated - Per_1; if(prev_calculated > 0) limit++です。 //calculate and fill in indicator buffers (インジケータ・バッファの計算と充填) for(i=0; i < limit; i++) { //インジケーターのメインラインを 計算する Buffer_1[i] = 曲線の式 double Sum = 0; for(j = i; j < Per_2 + i; j++) { //平均化ラインを計算する Sum += Buffer_1[j]; Buffer_2[i] = Sum / Per_2; } } return(rates_total); } Any questions from newcomers MACD histogram arrow display Indicator display different in Tretyakov Rostyslav 2021.07.07 10:58 #15338 Oleksandr Nozemtsev:こんにちは。コード挿入ここに、その答えがあるようです。 Vitaly Muzichenko 2021.07.07 11:03 #15339 Eugen8519: それが問題で、starthour->stophourのオーダーを開いたり閉じたりしているだけです また、オープンオーダーは、ストップアワー後にクローズされません。 ストップアワー後の取引はできないため クローズ前のオープン、トローリングなどのポジション維持のロジックをずっと書き続けてきたんです。ほとんどの場合、他のものを開く前に、すでに開いているものをチェックしなければならないのは事実です。 あなたの論理は正しいので、ブロックを入れ替えるだけでいいのです。 MqlDateTime str; void OnTick() { // Close Positions TrailingStop(); if(условие_закрытия) { ClosePos(); } // Open Positions if(UseTimeLimit) { TimeCurrent(str); if(str.hour > startHour && str.hour < stopHour) { OpesPos(...); ... } } // end } Oleksandr Nozemtsev 2021.07.07 11:22 #15340 MakarFX:コード挿入ここに、その答えがあるよう です。 カッコイイ!うまくいきました!ありがとうございます。 1...152715281529153015311532153315341535153615371538153915401541...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
このように注文が終了します
上に書いたように...
またはOnTick()のコードを投稿してください。
このように注文が終了します
この構造は
この構造は
間違っていなければ、次のように書くことができます。
そうですか、アドバイスありがとうございます。今夜チェックして、後で報告します。
フクロウの起動時の設定でUseTimeLimitが設定されている場合
この関数は、 OnTick()ではなく、OnInit()で使用するのがよいでしょう。
間違っていなければ、このように書くことができます。
実はこんな風に書いているんです。
if(TimeHour(time[i])>=Time_Start&&TimeHour(time[i])<TimeFinish)
或いはもっと単純に
if(Hour()>=Time_Start&&Hour()<TimeFinish)
こんにちは、インジケータラインの正しい平均化の方法を教えてください。周期Per_1の基本曲線は、Buffer_2[]で平均化周期Per_ 2の単純平均化のブロックを追加するまでは、普通に描画される(Buffer_1[])。
int OnCalculate(デフォルトパラメータ)
{
int i, j, limit;
if(rates_total <= Per_1)
return(0)です。
//最後に計算したバーを再計算します。
limit = rates_total - prev_calculated - Per_1;
if(prev_calculated > 0)
limit++です。
//calculate and fill in indicator buffers (インジケータ・バッファの計算と充填)
for(i=0; i < limit; i++)
{
//インジケーターのメインラインを 計算する
Buffer_1[i] = 曲線の式
double Sum = 0;
for(j = i; j < Per_2 + i; j++)
{
//平均化ラインを計算する
Sum += Buffer_1[j];
Buffer_2[i] = Sum / Per_2;
}
}
return(rates_total);
}
こんにちは。
コード挿入
ここに、その答えがあるようです。それが問題で、starthour->stophourのオーダーを開いたり閉じたりしているだけです
ストップアワー後の取引はできないため
クローズ前のオープン、トローリングなどのポジション維持のロジックをずっと書き続けてきたんです。ほとんどの場合、他のものを開く前に、すでに開いているものをチェックしなければならないのは事実です。
あなたの論理は正しいので、ブロックを入れ替えるだけでいいのです。
コード挿入
ここに、その答えがあるよう です。カッコイイ!うまくいきました!ありがとうございます。