どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 182

 

こんにちは。

NewBar(sy,TF)という関数があります。新しいバーが オープンしたような感じです。時間足チャートに新しいバーの出現を5分遅れで表示させたいのですが、どうすればいいですか?0.05、1.05、2.05、......、10.05、11.05、......でシグナルを取得したい。


どうすればいいのでしょうか?もしかしたら、機能そのものを何らかの方法で再設計できるかもしれませんね?

 
hoz:

さて、#property ライブラリを 削除してみましたが 、警告は出ず、一方で起動機能はない...。

何についての警告ですか?
 
Vinin:

何についての警告ですか?


どうなんだろう...これです。

セルゲイ
を表示させないようにするには、これが必要です。

 
gince:

こんにちは。

NewBar(sy,TF)という関数があります。新しいバーが開かれたかどうかをチェックします。時間足チャートで、5分遅れで新しいバーの出現を知らせる必要があります。0.05、1.05、2.05、......、10.05、11.05、......でシグナルを取得したい。


どうすればいいのでしょうか?機能そのものを変更することは可能でしょうか?


グローバルに宣言するんですね。

datetime = bdt_lastBarTime;

IN INIT:

bdt_lastBarTime = 0;

IN START。

if (g_lastBarTime == Time[0])         // На текущем баре все необходимые действия..
       return (0);                    // ..уже были выполнены

// если ...
//.. бар новый...
//.. делаем то..
//.. что нужно выполнить на очередном..
//.. новом баре

g_lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                       // .. успешно выполнены

Time[0];の代わりにiTime()をマークして、現在の時間枠以外の新しいバーを 取得することができます。

 
hoz:


グローバルに宣言するんですね。

INIT:

IN START。

Time[0];の代わりにiTime()をマークして、現在の時間枠以外の新しいバーを取得 することができます。


ただ、問題は変数名が一致しない。痛そう、痛そう。不注意なのか、習慣なのか。
 
Vinin:

ただし、ここで問題があります。変数名が一致しない。あら、そうなの。不注意か習慣のどちらか

それは不注意です。訂正します。

グローバルに宣言するのですね。

datetime = bdt_lastBarTime;

IN INIT:

bdt_lastBarTime = 0;

IN START。

if (bdt_lastBarTime == Time[0])         // На текущем баре все необходимые действия..
       return (0);                    // ..уже были выполнены

// если ...
//.. бар новый...
//.. делаем то..
//.. что нужно выполнить на очередном..
//.. новом баре

bdt_lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                       // .. успешно выполнены

Time[0];の代わりにiTime()をマークして、現在の時間枠以外の新しいバーを 取得することができます。

 

このタスクのためだけに、一目でわかるように。

bool NewBar05()
{
static bool newbar;
if (Minute()==5 && !newbar) 
   {
   newbar=true;
   return true;
   } 
if (Minute()>5 && newbar)  newbar=false;
   return  false;
}
    
 
xxxKillxxx:

同志よ、またまた失礼だが、問題がある...。なんとかエラーや警告を出さずに全ブロックのクローズを確認し、構文も出ていないのですが、EAを起動してもシグナルが出ず、予想通りトレードがクローズしません。問題は、私はEAのコードを置くことができないことであり、よく非常に必要な問題を解決するために、あなたは私に再びあなたの貴重な時間を過ごすことを気にしない場合は、それが重要である場合、私は唯一のEAは外国為替発電機4で作成されたと言うことができる、問題に対処するためのオプションは、あるかもしれません教えてください。

その理由を説明して頂きたいのですが(できれば指で、舌で、こんなプログラミングしかしないので)よろしくお願いします。


Expert Advisorの私のコードまたはコードの一部が、0.1%以上の指定された利益を閉じます。FXジェネレーター4で、エクイティが残高より高くなるようなことはできたのでしょうか?
 
Roger:

この作業のためだけに、一目でわかるように。


皆さん、ありがとうございました。

質問は次のようなものだった。

<NewBar(sy, TF)という関数が あります。新しいバーが開かれたかどうかをチェックします。時間足チャートに新しいバーの出現を5分遅れで表示させたいのですが、どうすればいいですか?つまり、0.05, 1.05, 2.05, ......, 10.05, 11.05, などでシグナルを出したい。>

質問を明確にするために。この関数は、1時間ごとに真を返しますが、5分遅れて返します。つまり、バー1.05の形成が終わり、バー2.05が出現したとき、関数は後者が出現したときに真を返します。この関数は,バーが1.10,2.10,...と表示されたときに真を返す。

写真では、黄色の線が次のバーが真であることを示しています。

あなたのヒントに従って、私はこの方法を試してみましたが、うまくいきません。

bool isNewBar5 ()
{

    static int   LastBar = 0; 
    datetime      curbar = iTime (Symbol(), 60, 0) +300; 
    int                h = Hour();
    if (LastBar != curbar && h == h + 1 && Minute() == 5)
    {
        LastBar = curbar;
        return (true);
    }
    else
    {return (false);}
}
 
gince:

こんにちは。

関数NewBar(sy, TF)が利用可能です。新しいバーがオープンしたかどうかをチェックします。時間足チャートで5分遅れで新しいバーのシグナルを取得する必要があります。0.05、1.05、2.05、......、10.05、11.05、......でシグナルを取得したい。


どうすればいいのでしょうか?もしかしたら、関数そのものを書き換えることができるのでは?


int bt=((TimeCurrent()-5*60)/3600)*3600;

btの値は毎時5分に変更されます。最後に3600を掛けないことも可能で、その場合はエポックの最初からの小節番号となり、これだけで新しい小節を 定義することができます。