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

 

最初の問題を解決しました(エラーになりましたありがとうございます diostar)

// if(OrdersTotal()>0){
if ((lastOpenedOpenPriceBuy()-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 ( (lastOpenedOpenPriceBuy()-0.0030>MarketInfo(EURUSD,MODE_BID) )" ) ;} ←クリックすると拡大します。

}


2つ目は

if ( ((lastOpenedOpenPriceBuy()-lastOpenedOpenPriceSell() )>=0.0060) &&( lastClosedClosePrice()<beforelastClosedClosePrice()) ) )
{ closeshort("eurusd") ;}.



CLOSESHORT関数は 以下の通りです。

int CLOSESHORT(string symbol_c) {
CloseAllPositions(symbol_c,OP_SELL,MagicNumberShort);
CloseAllPositions(symbol_c,OP_SELL,MagicNumberShort);
return(0);
}
.

ありがとうございます。

 

今、混乱しています。

最初の関数 lastOpenedOpenPriceBuy() についてのご返答でしょうか?

今のところそれしか対応できないかもしれません。で、具体的にどんな修正をしていたのか。今はどんなコードになっているのでしょうか?

 
diostar:

今、私は混乱しています。

あなただけではありません......あなたの時間を無駄にするのをやめてください。
 
RaptorUK:
あなただけではありません......時間を無駄にするのはやめましょう。

このスレッドは、おそらく最も長いスレッドです。 そして、6ページの後、混乱しています。 いいえ、私はまだそれが "無駄 "ではないと言う。

(それはただ、新しい方向性、新しい人生、新しい始まりの時期ということです。 誰にとっても)

 
私はこのスレッドに時間を費やしました、私はコードを追加 し、提案を行いました。...あなたが馬を水に引きずり込み、干し草で味付けし、リンゴを加えても、まだ馬が飲みたがらないとき、それは馬が飲みたがっていないことを理解する時です...それは水摂取のための点滴を望んでいます...その時点で、私に関する限り、馬はそれ自体で行動しています。
 
RaptorUK:
私はこのスレッドに時間を費やしてきました、私はコードを追加し、提案を行いました。馬を水に引きずり込み、干し草で味付けし、リンゴを加えてもまだ飲みたがらないときは、馬が飲みたがっていないことに気づくときです ... 水分の摂取のために点滴をしたいのです ... その時点で、私の知る限り、馬は自分でやるしかないのです。

なるほど。最終的な報酬は、馬に栄養を与えるという "運命 "ではないかもしれませんが、その分、努力した人への報酬があるんですね。

馬に感謝します。

 

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

今、私は85%のバグを修正しました。

1- 4つの関数を 作りました(このページの最後にあります)。

*lastOpenedOpenPriceBuy()

*lastOpenedOpenPriceSell()

*lastClosedClosePrice()
*beforelastClosedClosePrice()

2- 最初の問題に直面しました。

if (  ((lastOpenedOpenPriceBuy()-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 (  ( (lastOpenedOpenPriceBuy()-0.0030)>MarketInfo(EURUSD,MODE_BID) )  )") ;}
  if (  ((lastOpenedOpenPriceSell()+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 (  ( (lastOpenedOpenPriceSell()+0.0030)<MarketInfo(EURUSD,MODE_BID) )  )") ;}

を追加して修正しました。

if(OrdersTotal()>0){
  if (  ((lastOpenedOpenPriceBuy()-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 (  ( (lastOpenedOpenPriceBuy()-0.0030)>MarketInfo(EURUSD,MODE_BID) )  )") ;}
  if (  ((lastOpenedOpenPriceSell()+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 (  ( (lastOpenedOpenPriceSell()+0.0030)<MarketInfo(EURUSD,MODE_BID) )  )") ;}
  }

3- 2番目の問題は、以下の通りです。

if ( ((lastOpenedOpenPriceBuy()-lastOpenedOpenPriceSell())>=0.0060)&&(((lastOpenedOpenPriceBuy()+lastOpenedOpenPriceSell())/2)<MarketInfo("EURUSD",MODE_BID))
         &&(lastClosedClosePrice()< beforelastClosedClosePrice()) )  
   {  CLOSESHORT("EURUSD") ;}

もし私が&&(lastClosedClosePrice() < beforelastClosedClosePrice()) を削除すれば、 すべてがうまくいくでしょう

で問題ありません。

*((lastOpenedOpenPriceBuy()-lastOpenedOpenPriceSell())>=0.0060)の場合、問題なく動作します。

*(((最終OpenPriceBuy()+最終OpenPriceSell())/2)<マーケット情報("EURUSD",MODE_BID))

唯一の問題は&&(lastClosedClosePrice()< beforelastClosedClosePrice()) で発生します。

例を挙げてみましょう。

注文番号5が開いて売りであり、注文番号6が開いて閉じて買いであった場合、注文番号7が開いて買いであった場合。

この場合、(lastClosedClosePrice()< beforelastClosedClosePrice()) となります。

( 注文番号6 < 注文番号4 ) // 注文番号5がまだ閉じていないので。

どうすればいいのでしょうか? if(OrdersHistoryTotal()>0){theninsert all the conditions }
を使おうとしたのですが、ダメでした

double lastOpenedOpenPriceBuy()
  {
   double ret = 0;
   datetime time=0;
   for(int i=0; i<OrdersTotal(); i++) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()==OP_BUY && OrderOpenTime()>time) {
         time = OrderOpenTime();
         ret = OrderOpenPrice();
      }
   }
   
   return(ret);
  }


double lastOpenedOpenPriceSell()
  {
   double ret = 0;
   datetime time=0;
   for(int i=0; i<OrdersTotal(); i++) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()==OP_SELL && OrderOpenTime()>time) {
         time = OrderOpenTime();
         ret = OrderOpenPrice();
      }
   }
   
   return(ret);
  }



double lastClosedClosePrice()
  {
   double ret = 0;
   datetime time = 0;
   for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
      OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
      if(OrderType()<2 && OrderCloseTime()>time) {
         time = OrderCloseTime();
         ret = OrderClosePrice();
      }
   }
   
   return(ret);
  }


double beforelastClosedClosePrice()
  {
   double ret = 0;
   double ret2 = 0;
   datetime time = 0;
   for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
      OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
      if(OrderType()<2 && OrderCloseTime()>time) {
         time = OrderCloseTime();
         ret = ret2;
         ret2 = OrderClosePrice();
      }
   }
   if(ret==0) {
      ret = ret2;
   }
   
   return(ret);
  }
 
double lastOpenedOpenPriceBuy()
  {
   double ret = 0;
   datetime time=0;
   for(int i=0; i<OrdersTotal(); i++) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()==OP_BUY && OrderOpenTime()>time) {
         time = OrderOpenTime();
         ret = OrderOpenPrice();
      }
   }
   
   return(ret);
  }

これは私が提案したもの でも なければ、「私たち」が作ったものでもありません。これは100%あなたのものです。