string PriceToStr(double p){ return( DoubleToStr(p, Digits) ); } : datetime OOT = OrderOpenTime(); // Assumes OrderSelect() done already int iOOT = iBarShift(NULL,0, OOT); // Bar of the open. #define iBarCURRENT 0 // Include current bar. int nSince = iOOT - iBarCURRENT + 1; // No. bars since open. int iHi = iHighest(NULL,0, MODE_HIGH, nSince, iBarCURRENT); double HH = High[iHi]; // Highest high. Print( "High since order opened on ", TimeToStr(OOT)," is ", PriceToStr(HH) );
上記のコードに対するエラーは以下の通りです。
'(' -function definition unexpected D:\Program Files-MetaTrader Malta - MetaExperts Filter2.mq4 (343, 18)
this error forstring PriceToStr(double p)
このエラーの場合 どうしたら直せるか分からない
'iBarCurrent' - variable not defined D:\Program Files-MetaFXDD Malta - MetaTrader 4╱experts╱test2.mq4 (348, 30)
このエラーは、#define iBarCURRENTを定義してから、 iBarCurrentとして それを置くからです。
修正します。
2 error(s),
この行をCodeの一番最後に、start関数の 外に置いて ください ... ...
string PriceToStr(double p){ return( DoubleToStr(p, Digits) ); }
そして、もしあなたがコードを学びたいのなら、これを読み始めてください: https://book.mql4.com//
RaptorUKとWHRoederのお二人です。
ありがとうございます。
datetime OOT = OrderOpenTime(); // Assumes OrderSelect() done already int iOOT = iBarShift("EURUSD",PERIOD_H1, OOT); // Bar of the open. #define iBarCURRENT 0 // Include current bar. int nSince = iOOT - iBarCURRENT + 1; // No. bars since open. int iHi = iHighest("EURUSD",PERIOD_H1, MODE_HIGH, nSince, iBarCURRENT); double HH = High[iHi]; // Highest high. int iLi = iLowest("EURUSD",PERIOD_H1, MODE_LOW, nSince, iBarCURRENT); double LL = Low[iLi]; // Lowest low.
もう一つ質問があります。
私が2つの注文を持っている場合、買いと売りのために1つを開いた。
どのように私は私のEAは、iOOT = iBarShift("EURUSD",PERIOD_H1, OOT); // オープンのバーを理解し、取ることができるようにすることができます。私はそこから買いポジションを取得し、その時点から最高値を計算したバーについて。
そして
iOOT = iBarShift("EURUSD",PERIOD_H1, OOT); // オープンのバーを取ります。私はそこから売りポジションを取得し、そのポイントから最低を計算したバーのために。
ありがとうございました。
for(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. ){ datetime OOT = OrderOpenTime(); // Assumes OrderSelect() done already int iOOT = iBarShift("EURUSD",PERIOD_H1, OOT); // Bar of the open. #define iBarCURRENT 0 // Include current bar. int nSince = iOOT - iBarCURRENT + 1; // No. bars since open. if (OrderType == OP_BUY){ int iHi = iHighest("EURUSD",PERIOD_H1, MODE_HIGH, nSince, iBarCURRENT); double HH = High[iHi]; // Highest high. } else{ int iLi = iLowest("EURUSD",PERIOD_H1, MODE_LOW, nSince, iBarCURRENT); double LL = Low[iLi]; // Lowest low. } }
OOTを取得するには、すでにorderSelectを行っている必要があります。
ありがとうございました。
また、他の質問もあります。
この条件はどうすればよいのでしょうか。もし(売りの最後の注文終値() > 売りの最後の注文終値の前)&& ( 売りの最後の注文終値の前 >= bid)
ポジションを閉じる
というような感じでOKでしょう。
if ( (OrderType == OP_SELL)&& OrderSelect(pos+1, SELECT_BY_POS,MODE_TRADES ) ) { if( pos>pos+1 && pos+1>MarketInfo("EURUSD",MODE_BID); // close the position
ちょうど。
私はどのように取得することができます知りたい:私はいくつかの計算のためにそれらを追加するには、最後の注文(オープンまたはクローズ)価格()(買いまたは売り)の前の順序を。
ありがとうございます。
私はどのように取得することができます知りたい:最後の注文(オープンまたはクローズ)価格()(買いまたは売り)のためのいくつかの計算のためにそれらを追加するには。
for(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. ){ datetime OOTlatest = OrderOpenTime(); // found latest open order break; } for(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. ){ datetime OOTprevious = OrderOpenTime(); // found the previous break; } if (OOTlastest == 0) // no open orders if (OOTprevious == 0) // no previous :
WHRoederさん、ありがとうございます。
本当に助かりました。もし、最後の買い注文と売り注文を取得する必要があるなら、次のようにしてそれらを比較します。
if ( the last orderopenforbuy == OOTlastest )
{ 何かをする }.
else
{ }....................以下のコードが動作します。
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. ){ if (OrderType() == OP_BUY){ int lastorderforbuy= OrderOpenPrice(); } else{ int lastorderforsell= OrderOpenPrice(); } } for(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. ){ if (OrderType() == OP_BUY){ int previousorderforbuy= OrderOpenPrice(); } else{ int previousorderforsell= OrderOpenPrice(); } } if ( ((lastorderforbuy+ previousorderforsell)/2)<=MarketInfo("EURUSD",MODE_BID)) { CLOSESHORT("EURUSD") ;}
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
親愛なる皆さん。
誰か以下のリンクをチェックして、私の質問(どのように私はorderopenpriceが開かれた後、最高を取得することができます)に答えることができます。
http://www.forexfactory.com/showthread.php?t=307937