orderopenpriceが開かれた後の最高値を取得するにはどうしたらよいですか? - ページ 2

 
コードの勉強を始めて、スレッドに凸するのはやめましょう。
 

ただ、少し手助けが必要です。

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

int LastOpenTicketForBuy(){
    datetime lastTime  = 0;
    int      lastTicket = -1; // None open.
    int magi.number=0;
    //for(int pos=0; pos<OrdersTotal(); i++) {
      OrderSelect(pos, SELECT_BY_POS);
    for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
        OrderSelect(pos, SELECT_BY_POS)                 // Only my orders w/
    &&  OrderMagicNumber()  == magic.number             // my magic number
    &&  OrderSymbol()       == Symbol()                 // and my pair.
    &&  OrderOpenTime()     >  lastTime
    && OrderType()==OP_BUY
    ){
      lastTime   = OrderOpenTime();
      lastTicket = OrderTicket();
    }
    return(lastTicket);
}

int LastOpenTicketForSell(){
    datetime lastTime  = 0;
    int      lastTicket = -1; // None open.
    int magi.number=0;
    for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
        OrderSelect(pos, SELECT_BY_POS)                 // Only my orders w/
    &&  OrderMagicNumber()  == magic.number             // my magic number
    &&  OrderSymbol()       == Symbol()                 // and my pair.
    &&  OrderOpenTime()     >  lastTime
    && OrderType()==OP_SELL
    ){
      lastTime   = OrderOpenTime();
      lastTicket = OrderTicket();
    }
    return(lastTicket);
}

int previousorderforbuy(){
    datetime lastTime  = 0;
    int      lastTicket = -1; // None open.
    int magi.number=0;
    for(int pos--; pos >= 0 ; pos--) if (
        OrderSelect(pos, SELECT_BY_POS)                 // Only my orders w/
    &&  OrderMagicNumber()  == magic.number             // my magic number
    &&  OrderSymbol()       == Symbol()                 // and my pair.
    &&  OrderOpenTime()     >  lastTime
    && OrderType()==OP_BUY
    ){
      lastTime   = OrderOpenTime();
      lastTicket = OrderTicket();
    }
    return(lastTicket);
}

int previousorderforsell(){
    datetime lastTime  = 0;
    int      lastTicket = -1; // None open.
    int magi.number=0;
    for(int pos--; pos >= 0 ; pos--) if (
        OrderSelect(pos, SELECT_BY_POS)                 // Only my orders w/
    &&  OrderMagicNumber()  == magic.number             // my magic number
    &&  OrderSymbol()       == Symbol()                 // and my pair.
    &&  OrderOpenTime()     >  lastTime
    && OrderType()==OP_SELL
    ){
      lastTime   = OrderOpenTime();
      lastTicket = OrderTicket();
    }
    return(lastTicket);
}
 

をご覧ください。

何が問題なのか見て教えてください。


私はいくつかの関数を作成する必要があります。
1-買いの ための最後の注文のオープン 価格を取得し、維持するための関数。
2- 最終の売り 注文のオープン価格を取得し、保持するための関数。
3-取得し、最終的な終値注文を保持する関数は、買いまたは売りの以上

int LastOpenTicketForBuy(){ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open. 
int magi.number= 0 ;
for ( int pos = OrdersTotal ()- 1 ; pos >= 0 ; pos--)
if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber () == magic.number // my magic number
&& OrderSymbol () == Symbol () // and my pair.
&& OrderType ()==OP_BUY )
{ lastTime = OrderOpenTime ();
lastTicket = OrderTicket (); }
return (lastTicket);}

int LastOpenTicketForSell()
{ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open.

int magi.number= 0 ;
for ( int pos = OrdersTotal ()- 1 ; pos >= 0 ; pos--)
if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber () == magic.number // my magic number
&& OrderSymbol () == Symbol () // and my pair.
&& OrderType ()==OP_SELL )
{ lastTime = OrderOpenTime (); 

lastTicket = OrderTicket (); }
return (lastTicket);}

int lastcloseorder()
{ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open. 
int magi.number= 0 ; 
for ( int pos = OrdersTotal ()- 1 ; pos >= 0 ; pos--)
if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/ 
&& OrderMagicNumber () == magic.number // my magic number
&& OrderSymbol () == Symbol () // and my pair.
&& OrderCloseTime () > lastTime
&& OrderType ()==OP_BUY||OP_SELL )
{ lastTime = OrderCloseTime (); lastTicket = OrderTicket (); }
return (lastTicket);}




そして、if ((LastOpenTicketForBuy()+LastOpenTi cketForSell())/2)<MarketInfo("EURUSD",MODE_BID)Clo se the positionを置きます。

 
あなたの意見では、return (lastTicket); は何をするのですか?
 

つまり、次のようにすればいいのでしょうか?

1-ダブルLastOpenForBuy()の代わりにintを置く

2-put double orderforbuy then return( orderforbuy )

この方法では、私は買いだけのために開かれた最後の順序を得ることができます。

double LastOpenForBuy(){ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open. 
int magi.number= 0 ; double orderforbuy;
for ( int pos = OrdersTotal ()- 1 ; pos >= 0 ; pos--)
if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber () == magic.number // my magic number
&& OrderSymbol () == Symbol () // and my pair.
&& OrderType ()==OP_BUY )
{ orderforbuy = OrderOpenprice ();
lastTicket = OrderTicket (); }
return (orderforbuy);}

 
Hand:

ということですか?

それは質問です ... ...私はそれ以外のことを意味しません ... ... あなたの答えは何ですか?

もし、私に助けて欲しいのなら、私の質問に答える必要があります ... ... そして、"私は知らない "という答えは受け入れられません。 少し考えてみてください。

 

あなたの意見では、return(lastTicket); は何をするのですか?

現在選択されている注文の チケット番号を返します。

 
Hand:

WHRoederさん、ありがとうございます。

本当に助かりました。もし、最後の買い注文と売り注文を取得する必要があるなら、次のようにしてそれらを比較します。

if ( the last orderopenforbuy == OOTlastest )

{ 何かをする }.

else

{ }....................................下のコードでうまくいくか?

これは本当に動作するのでしょうか?

ファーストループ

for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (

2番目のループに入る

 for(pos--; pos >= 0 ; pos--) if (

2番目のループが終了し、1番目のループに戻ると、1番目のループは、posが前回からどこに行ってしまったか分からない。

 

このコードはうまくいくかもしれません...ただ、1つだけ変更する必要があります。

2番目のfor文

for(pos--; pos >= 0 ; pos--) if (

を別のイテレータに変更する必要があります。

for(int a=pos--; a>=0 ; a--) if(// abort the use of pos again and introduce a new iterator, a

そして同様に、2番目のループのロジックのすべてにおいて、posを新しいイテレータ(この場合、a)に置き換える必要があるだけです。

 
Hand:

あなたの意見では、return(lastTicket); は何をするのですか?

現在選択されている注文のチケット番号を返します。

あなたは言った....

"いくつかの関数を作成する必要があります。
1-買いの ための最後の注文のオープン価格を 取得し、維持するための関数。
2- 最終注文の売りの オープン価格を取得し、保持するための関数。

3-最後の終値注文を 取得し、保持する関数です。

では、なぜチケット番号を返しているのですか? あなたがコピーして貼り付けているコードを読んで、それを理解し、学ぶ... ...