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

 
( OrderType() < OP_BUYLIMIT ) は、 ( OrderType () == OP_BUY ||OrderType() ==OP_SELL )同じ である。
 
Hand:


ということです。

どうもありがとうございます。

なぜLastOpenPrice(OP_BUY)とLastOpenPrice(OP_SELL)を使いたいかと言うと、以下のような条件で使いたいからです。

if ( LastOpenPrice(OP_BUY) -LastOpenPrice(OP_SELL)) > 0.0090 // そのために、最後の注文が買いで開かれたことと、最後の注文が売りで開かれたことを保持する必要があります。

あなたはそれができる......それはうまくいく......それを試してみてください。
 
それとも、現在終了している最後のBUYオーダーの ことでしょうか?
 

機能番号4の説明はわかりやすいですか?

関数番号4:

// 私は最終的な閉鎖された注文の前に閉鎖された注文を 取得したいwhatover購入または売却。

4-最後に閉じた注文の前に前の終値を 取得し、維持するための関数whatover買いまたは売り

 

の皆さん。

本当に動かない

// Used to keep global variables

extern int MagicNumberLong = 6658641;                     //Identifies long positions
extern int MagicNumberShort = 4167090;                    //Identifies short positions
  
 






double LastOpenPrice(int ordertype)
   { 

   double OpenPrice;                         
   datetime lastOpen;
   for ( int pos = OrdersTotal()- 1 ; pos >= 0 ; pos--)
      if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
      && OrderMagicNumber() == MagicNumberLong || MagicNumberShort // my magic number       //  <-------  what Magic Number do you use when you place a trade ?  it must match  ! !
      && OrderSymbol() == Symbol()    // and my pair.                  //            magic.number  should be a Globally defined variable that has your Magic Numer  
      && OrderType() == ordertype 
      && OrderOpenTime() > lastOpen )
         {
         OpenPrice = OrderOpenPrice();
         break;
         }
   return (OpenPrice);                                             //  <-------  this returns the Order Open Price  NOT the ticket
}

if (  ((iOpen("EURUSD",PERIOD_H1,0)-0.0030)>=MarketInfo("EURUSD",MODE_BID))   ) 
  {   BUY("EURUSD",B_EURUSD_LS_0,B_EURUSD_TP_0,B_EURUSD_SL_0,B_EURUSD_TS_0,"if (  ( ((iOpen(EURUSD,PERIOD_H1,0)-0.00...") ;}
if (  ( (LastOpenPrice(OP_BUY)-0.0030)>MarketInfo("EURUSD",MODE_BID) )  ) 
   {  SELL("EURUSD",S_EURUSD_LS_1,S_EURUSD_TP_1,S_EURUSD_SL_1,S_EURUSD_TS_1,"if (  ( (LastOpenPrice(OP_BUY)-0.0030)>=MarketInfo(" EURUSD",MODE_BID) )  )") ;}
if (  ( ((iOpen("EURUSD",PERIOD_H1,0)+0.0030)<=MarketInfo("EURUSD",MODE_BID)) )  ) 
  {   SELL("EURUSD",S_EURUSD_LS_0,S_EURUSD_TP_0,S_EURUSD_SL_0,S_EURUSD_TS_0,"if (  ((iOpen(EURUSD,PERIOD_H1,0)+0.00...") ;}
if (  ( (LastOpenPrice(OP_SELL)+0.0030)<MarketInfo("EURUSD",MODE_BID) )  ) 
   {  BUY("EURUSD",B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1,"if (  ( (LastOpenPrice(OP_SELL)+0.0030)<MarketInfo(" EURUSD",MODE_BID) )") ;}

画像でご覧の通りです。

2011年3月1日から2011年4月11日までEAをテストし始めました。

2011年03月01日の最初の1時間で

ポジションは開か れましたが、上記の条件から誰も利用できませんでした。 それは私を本当に狂わせました。

 
Hand:

機能番号4の説明はわかりやすいですか?

関数番号4:

// 私は最終的な閉鎖された注文の前に閉鎖された注文を 取得したいwhatover購入または売却。

4-最後に閉じた注文の前に前の終値を 取得し、維持するための関数whatover買いまたは売り

終値? 最後の注文が終了したバーの前のバーの終値 ? または、最後に終了した注文の前に終了した買いまたは売りの注文の 終値 ?
 

2番目のオプション。

最後に閉じた売買の前に閉じた売買の注文の 終値は

 
Hand:

2番目のオプション。

最後に閉じたものの前に閉じた買いまたは売りの注文の 終値?

これを試してみてください。

シンボルとマジックナンバーが一致した最後の注文の終値を 取得するには、次のようにします。LastClosePrice(1)

その前の注文を取得するには、次のようにします。LastClosePrice(2)

double LastClosePrice(int Order)
   { 
 
   double ClosePrice;                         

   for ( int pos = OrdersHistoryTotal()- 1 ; pos >= 0 ; pos--)
      if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY)            // Only my CLOSED  orders 
      && OrderMagicNumber() == magic.number // my magic number       //  <-------  what Magic Number do you use when you place a trade ?  it must match  ! !
      && OrderSymbol() == Symbol()  // and my pair.                  //            magic.number  should be a Globally defined variable that has your Magic Numer  
      && OrderType() < OP_BUYLIMIT )
         {
         Order--;
         if (Order == 0)                                            //  determines if we have found the Order we are interested in
            {
            ClosePrice = OrderCloseprice();
            break;
            }
         }
   return (ClosePrice);                                             //  <-------  this returns the Order Open Price  NOT the ticket
}

注:このコードは、上記のコードに示されているように、マジックナンバーでは動作 しません ... ...

extern int MagicNumberLong = 6658641;                     //Identifies long positions
extern int MagicNumberShort = 4167090; 


WHY ? ? ? ?
 

みんな。

誰かteamviewerプログラムを使える人がいたら、一緒にアクセスして、何が本当の問題なのかチェックして みましょう。

 
Hand:

の皆さん。

本当に動かない

画像でご覧の通りです。

2011年3月1日から2011年4月11日までEAをテストし始めました。

2011年03月01日の最初の1時間で

ポジションは開か れたが、上記の条件から誰も利用できない。 それは私を本当に狂わせた。

それはクレイジーではありません。 それは、注文が開かれるために "合理的 "である。

double LastOpenPrice(int ordertype)
   { 

   double OpenPrice;                         
   datetime lastOpen;
   for ( int pos = OrdersTotal()- 1 ; pos >= 0 ; pos--)
      if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
      && OrderMagicNumber() == MagicNumberLong || MagicNumberShort // my magic number       
      && OrderSymbol() == Symbol()    // and my pair.             
      && OrderType() == ordertype 
      && OrderOpenTime() > lastOpen )
         {
         OpenPrice = OrderOpenPrice();
         break;
         }
   return (OpenPrice); //  <-------  this returns the Order Open Price OR ZERO.

もし上記の関数がゼロを 返したら、以下のようなシナリオが発生する可能性があります。

 if (  ( (LastOpenPrice(OP_SELL)+0.0030)<MarketInfo("EURUSD",MODE_BID) )  ) <--------------- 0+0.0030=0.0030<Bid: TRUE
   {  BUY("EURUSD",B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1,"if (

この上に、「マスター」ロジックを配置することをお勧めします。 もし、LastOpenPrice(...)がゼロを返したら......あなたのゲームプランは何ですか?