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

 

バー開始時のみ注文を出すには?

こんにちは。

今、ある指標で2つ前のバーとその前のバーの間にあるレベルのクロスが発生した場合のみ注文をオープンするEAを実装しています。

例えば、日足チャートで、1月18日と1月19日の間にクロスがあった場合、1月20日に注文を出したいのです。

というようなことをしました。

注文を出すときに、注文の開始 時間を記録します。

そして、次のようなテストを行います。Is(CurrentTime() - LastOrderOpenTime) < Period()?。

もしイエスなら、それは現在のバーがまだ終了していないことを意味し、私は新しい注文を開けるべきではない。また、この条件がfalseになったとき、私はチャートの次のバーにいるはずで、クロスは最後のバーの前に起こり、次のシグナルが出るまで注文を開いてはいけないということです。

問題は、これをチャートに貼り付けると、バーが終了するまで新しい注文を作り続けてしまうことです。どなたか、何がいけなかったのか、教えてください。

 
dvarrin:
こんにちは。

2つ前のバーとその前のバーの間で、ある指標によるあるレベルのクロスが発生した場合のみ注文を出すというEAを実装しています。

例えば、日足チャートで、1月18日と1月19日の間にクロスがあった場合、1月20日に注文を出したいのです。

というようなことをしました。

注文を出すときに、注文の開始時間を記録します。

そして、次のようなテストを行います。Is(CurrentTime() - LastOrderOpenTime) < Period()?。

もしイエスなら、それは現在のバーがまだ終了していないことを意味し、私は新しい注文を開くべきではない。また、この条件が偽になったとき、私はチャートの次のバーにいるはずで、クロスは最後のバーの前に起こったので、次のシグナルが出るまで注文を開けるべきではない。

問題は、チャートに貼り付けると、バーが終了するまで新しい注文を作成し続けることです。どなたか、私が何を間違えたか教えてください。

よくわからないのですが、これは、ある人がいつか私のために書き留めたものです。 ググってみないと、元の作者にちゃんと謝辞を述べられないのですが。

これは、新しいバーのオープニングにいるかどうかを判断するのに役立ちます。

int newbar()

{

double g;

int m,s,k;

m=Time[0]+Period()*60-TimeCurrent();

g=m/60.0;

s=m%60;

m=(m-m%60)/60;

return(m);

}[/CODE]

And I use it like this:

[CODE]if (newbar()==Period())

お役に立てれば幸いです。

 
dvarrin:
こんにちは。

2つ前のバーとその前のバーの間で、ある指標によるあるレベルのクロスが発生した場合のみ注文を出すというEAを実装しています。

例えば、日足チャートで、1月18日と1月19日の間にクロスがあった場合、1月20日に注文を出したいのです。

というようなことをしました。

注文を出すときに、注文の開始時間を記録します。

そして、次のようなテストを行います。Is(CurrentTime() - LastOrderOpenTime) < Period()?。

もしイエスなら、それは現在のバーがまだ終了していないことを意味し、私は新しい注文を開くべきではない。そして、この条件が偽になったとき、私はチャートの次のバーにいるはずで、クロスは最後のバーの前に起こったので、次のシグナルが出るまで注文を開けるべきではない。

問題は、チャートに貼り付けると、バーが終了するまで新しい注文を作成し続けることです。どなたか、私が何を間違えたか教えてください。

そこで、次のようなテストを行っている。Is(CurrentTime() - LastOrderOpenTime) < Period()?(現在の時間 - 最後の注文の開始時間)?

を追加することができます // return (0);

または

これは役に立つかもしれません。

for(int i=0;i<OrdersTotal();i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) break;

if(OrderSymbol()== Symbol () && OrderMagicNumber()== MN)

{

if( OrderOpenTime() >= iTime(0, PERIOD_D1, 0) samebar++;

}

}

2.から選択できます。

if ( samebar > 0 ) return (0);

または

if (samebar < 1) {あなたの注文コード;}.

私はコーディングが得意ではないので、誰もが私が正しいコードを配置するかどうかを確認 しようとするかもしれない。

 
dvarrin:
こんにちは。

2つ前のバーとその前のバーの間で、ある指標によるあるレベルのクロスが発生した場合のみ注文を出すというEAを実装しています。

例えば、日足チャートで、1月18日と1月19日の間にクロスがあった場合、1月20日に注文を出したいのです。

というようなことをしました。

注文を出すときに、注文の開始時間を記録します。

そして、次のようなテストを行います。Is(CurrentTime() - LastOrderOpenTime) < Period()?。

もしイエスなら、それは現在のバーがまだ終了していないことを意味し、私は新しい注文を開くべきではない。そして、この条件が偽になったとき、私はチャートの次のバーにいるはずで、クロスは最後のバーの前に起こったので、次のシグナルが出るまで注文を開けるべきではない。

問題は、チャートに貼り付けると、バーが終了するまで新しい注文を作成し続けることです。どなたか、私が何を間違えたか教えてください。

うーん...

if(iOpen(Symbol(),0,0)==iClose(Symbol(),0,0)&&iLow(Symbol(),0,0)==iHigh(Symbol(),0,0))

{

//A new bar has happend.

}
 

前のトレードの利益を知るには?また、ロット、サイドは?

 
Dan7974:
前の取引の利益を知るにはどうすればよいですか?また、ロット、サイドは?

OrdersTotal()の代わりにOrdersHistoryTotal()を使用してください。 それから、OrderProfit(), OrderLots() 等を使用します。 これは手動でしか行えません。「注文履歴」タブを右クリックして、「すべての履歴」を選択します。

OrderSelect()で'MODE_HISTORY'を使用する必要があることを追記すべきでした...

 
omelette:
OrdersTotal()の代わりにOrdersHistoryTotal()を使ってください。 それからOrderProfit()、OrderLots()などを使ってください。 これは手動でしかできないと思います。 'Orders History' タブを右クリックして 'All History' を選択してください。 OrderSelect() で 'MODE_HISTORY' を使用する必要があることを追加する必要がありました...

オムレツさん、こんにちは。

BTの履歴を見るのに、問題があることをご存知でしょうか。数ヶ月前にこのバグについてMetaquoteに問い合わせたのですが、何の回答もありませんでした...。多分、今は直っているのでしょうが・・・。

 

こんにちは

ある通貨の金利引き締めサイクルと、別の通貨の金利引き下げサイクルをどのようにコード化するのでしょうか?

EAはスワップ電流とスワップ過去のレートを見ることができますか?

OILFXPRO

 
ファイル: