コーディングの方法は? - ページ 67

 

カウンター?

私は何ヶ月もインジケーターをプログラミングしているので、エキスパートが少し不足していますが、私はそれを解決するつもりです。その過程で、私は少し助けを必要とします。私が一緒に投げた私の専門家の中で、私はそれが取引を閉じることを正当化する条件があるかどうか、バーの終わりにチェックしています。

私はグローバル変数で開始します。

//--- Global variable

datetime PreviousBar; // record candle/bar time[/CODE]

and set one bool in init()

int init()

{

do_this = true;

}

[/CODE]

blah blah boring stuff.... etc, etc

then in the main loop I have:

[CODE]

if(do_this == true)

{

PreviousBar = Time[0];

do_this= false; // so it does this only once only

}

if(NewBar() == true)

{

if(TotalOpenOrders() == blah blah close my order you crazy monkey)

}

and outside the main loop I have:

[CODE]//--- returns true if current bar just formed

bool NewBar()

{

if(PreviousBar<Time[0])

{

PreviousBar = Time[0];

return(true);

}

else

{

return(false);

}

return(false);

}

OK、それはバーごとに一回行うように設定されています。私がやりたいのは、90秒とか60秒とかを増加させる関数を持っていて、その時間を増加させた後にブールを真に設定することです。基本的に、私はバーの終わりにではなく、60、90、120秒または何かごとに指標をチェックしたいです。どうすればいいのでしょうか?

よろしくお願いします。

- nittany1

 
nittany1:
私はインジケーターのプログラミングを何ヶ月もやっているので、エキスパートが少し不足していますが、それを解決するつもりです。その過程で、私は少し助けを必要としています。私が一緒に投げた私の専門家で、私はそれが取引を閉じることを正当化する条件があるかどうか、バーの終わりにチェックする必要があります。

私はグローバル変数から始めます。

//--- Global variable

datetime PreviousBar; // record candle/bar time[/CODE]

and set one bool in init()

int init()

{

do_this = true;

}

[/CODE]

blah blah boring stuff.... etc, etc

then in the main loop I have:

[CODE]

if(do_this == true)

{

PreviousBar = Time[0];

do_this= false; // so it does this only once only

}

if(NewBar() == true)

{

if(TotalOpenOrders() == blah blah close my order you crazy monkey)

}

and outside the main loop I have:

[CODE]//--- returns true if current bar just formed

bool NewBar()

{

if(PreviousBar<Time[0])

{

PreviousBar = Time[0];

return(true);

}

else

{

return(false);

}

return(false);

}

OK、それはバーごとに1回実行するように設定されています。私がやりたいのは、90秒とか60秒とかを増加させる関数を持っていて、その時間を増加させた後にブールを真に設定することです。基本的に、私はバーの終わりにではなく、60、90、120秒または何かごとに指標をチェックしたいです。どうすればいいのでしょうか?

どんな助けでもありがとうございます。

- nittany1

これでできるはずです。MTはティックベースの実行を使用するので、秒単位の精度は不可能であることを忘れないでください(Init()サブですべてをループさせない限り)。

if (CallIndicatorsCheck())

{

// ここにあなたのコードを

bool CallIndicatorsCheck()

{

static datetime Oldtime;

int Secs = 90;

bool Flag;

if (CurrTime() >= Oldtime) {

Oldtime = CurrTime() + Secs;

Flag = true; }.

return(Flag)。

}

 

コメントの配置

どなたか、コメントをデフォルトの左上ではなく、画面の右上隅に 配置するコードを教えていただけませんか?

ありがとうございます。

 
wolfe:
どなたか、デフォルトの左上ではなく、 上のコーナーに コメントを配置するコードを教えていただけませんか? ありがとうございます。

できません。MQL4マニュアルより。

void Comment( ...)この関数は、ユーザーによって定義されたコメントをチャートの左上隅に出力します。

もし、死ぬまでに必要であれば、オブジェクトを作成 することができます。

 
wolfe:
誰か、コメントをデフォルトの左上ではなく、画面の右上隅に 配置するコードを見せてくれませんか? ありがとうございます。

LinusGuyの言うとおりで、直接的な方法はありません。 簡単な回避策は、コメント欄に空白を入れることです。

Comment(" hello world!");

とすると、テキストが右側にオフセットされます。

また、改行を入れてページをドロップダウンさせることもできます。

Comment("\n﹀ㅂ﹀)┛⁾⁾。

とか、改行とスペースを組み合わせて画面右下に表示させることもできます。

モグ

 
mog:
LinusGuyの言うとおり、直接的な方法はない。 簡単な回避策は、Commentにスペースを入れることです。

Comment(" hello world!");

とすると、テキストが右側にオフセットされます。

また、改行を入れてページを下に落とすことも可能です。

Comment("\n﹀ㅂ﹀)ㄘ⁾⁾。

とか、改行とスペースを組み合わせて画面右下に印刷することもできます。

モグ

ありがとうございます。 やってみるよ!

 

負けトレードの後、Xバーの間、新しいトレードがない。

こんにちは、チーム - 誰かが助けてくれることを願っています。

最後の取引が損失だった場合、新しい取引を10バー開始しないようにするにはどうすればよいですか?

乾杯

 

以下の関数は、口座履歴に過去の10本目のバー(現在のバーは0)のオープニング以降に決済した損切りの取引がある場合にtrueを返します。

それ以外の場合は偽を返します。

bool postMortem()

{

datetime since = Time[ bar+10 ];

for ( int i = OrdersHistoryTotal() - 1; i >= 0; i-- ) {

if ( ! OrderSelect( i, SELECT_BY_POS, MODE_HISTORY )

continue;

if ( OrderProfit() = since )

return( true );

}

return( false );

}

[/PHP]

If you add that function to your EA, then include a statement like the following in the start() function, then Bob's your uncle.

[PHP]if ( postMortem() ) return( 0 );
 

thx very much for that - I will try it

よろしくお願いします。

 

皆さん、同じ悩みを抱えていませんか?

私はエキスパートをコーディングしました。私は価格がある指標と同じであるとき、ポジションを開きたいのです。これを行うには、私は次の文を使用します。

//購入する

double indicatorpast = icustom(...................1);

double indicatornow = icustom(....................,0);

if (close[1]indicatornow) OpenBUY();

if (close[1]>indicatorpast && close[0]<indicatornow) OpenSELL()。

しかし、このステートメントでは、価格がインジケータを越えたときだけでなく、インジケータの上でもポジションをオープンしてしまいます。私はインジケータを超えたときだけポジションを開くようにしたいので、次のことを試してみました。

//買いの場合

double indicatorpast = icustom(...................1);

double indicatornow = icustom(...................,0);

if (close[1]<indicatorpast && close[0]==indicatornow) OpenBUY()。

if (close[1]>indicatorpast && close[0]==indicatornow) OpenSELL()です。

しかし、このステートメントは実行されません。

あなたは何が起こっているのか知っていますか?私は文の中にエラーがないと思うので。

ありがとうございます。