[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 87

 
sergeev:

713
borilunad 15.01.2013 12:10

この関数を挿入したとき、なぜ|isCloseLastPosByTake() == True||テスターのエキスパートが非常に遅くなり始めたのか、10倍!|1つの謎を解いていただけませんか?これは4つの互いに排他的な条件のうちの1つなので、コードの実行を速くするためにsummed条件のようにif chainを使うことはできないのです。何かアドバイスはありますか?アドバイスをよろしくお願いします。

この関数は、注文を調べて、取値での最後の終値を見つけます。この機能を高速化するために作り直す。金さんの場合、どれも普遍的なものなので、そこから不要なものをどんどん処分していけるということです。繰り返しになりますが、すべてはExpert Advisorのロジックに依存します。
 

買い注文の出し方を教えてください。売り 注文 条件if(OrdersTotal()==0&& ma0<ma1 && ma1<ma2). スイッチを使うべきという ことは理解できました (x,a,b)代わりに何を書 けばいいのでしょうか?

if(OrdersTotal()==0)

switch(x)case'a':case'b':

ありがとうございました。


 
artmedia70:
この関数は、テイクでクローズした最後の注文を探すために、注文を調べます。この機能を高速化するために作り直す。金さんのプログラムでは、どれもユニバーサルなものなので、不要なものがたくさん取り除けるのです。繰り返しになりますが、すべてはExpert Advisorのロジックに依存します。
ありがとうございました。どこかのオペレーターを使えばいいと思っていたのですが、1つの同じ動作に対して「or」でケースをスルーしてしまうのです。
 
KoOr:

買い注文の出し方を教えてください。売り 注文条件if(OrdersTotal()==0&& ma0<ma1 && ma1<ma2). スイッチを使うべきという ことは理解できました (x,a,b)代わりに何を書 けばいいのでしょうか?

if(OrdersTotal()==0)

switch(x)case'a':case'b':

ありがとうございました。




if(OrdersTotal()==0)
 {
  if( ma0<ma1 && ma1<ma2) OrderSend(....,OP_SELL,.......);
  if( ma0>ma1 && ma1>ma2) OrderSend(....,OP_BUY,.......);
 }
注文は1つだけで、それ以上は売りも買いも開きません。
 

なぜこの関数が-1を返すのか、一日中悩んでいます。

int typ(string t, int m)
{  datetime z=0 ; int p=-1,i;
   int d=OrdersHistoryTotal();
   if ( t=="0") t=Symbol(); 
   for( i=0;i<=d;i++){
   if ( OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) ) {                     
   if ( (OrderSymbol() == t || t=="0" ) && ( OrderMagicNumber() == m || m==-1 ) ){
   if ( OrderCloseTime()>z&&OrderType()<=1)  
   {
   z =OrderCloseTime(); 
   p =OrderType();
   }}}}
return(p);
} 

呼び出しは次のようになります。

Comment(typ("0",-1));

すべての注文は履歴に残る !

何がエラーになるのでしょうか?

 
VOLDEMAR:

なぜこの関数が-1を返すのか、一日中悩んでいます。

呼び出しは次のようになります。

すべての注文は履歴に残る !

何がエラーになるのでしょうか?



Comment(typ(Symbol(),-1));
0」はなく、「EURUSD」「AUDUSD」などがあります。
 
Sepulca:


0」という記号はなく、「EURUSD」「AUDUSD」などがあります。

もしそのようなシンボルがなければif( t=="0") t=Symbol(); それから t を EA が添付されているシンボルと等しくする。
 
が、if DayOfWeek( ) ==1 という条件があるのはどうしてでしょう・・・。......は、火曜日に会うのですか?
 
VOLDEMAR:

そのようなシンボルがない場合if( t=="0") t=Symbol(); then t を EA が添付されたシンボルと等しくする ;

すみません、気が付きませんでした...。じゃあ、これだ。

for( i=0;i<d; i++){

最後の注文番号はOrdersTotal()-1;ですが、それは問題ではありません。試してみたところ、テスターではクローズした注文の履歴が表示されず、デモ口座ではあなたのコードが動作することが判明しました。

 

私のコードには、あなたが書いたものはありません。

しています。

int d=OrdersHistoryTotal();

で、先に通過してしまう...。

まあ、そんなことはどうでもよくて、問題はコードの別のところにあることがわかったのですが.

理由: