MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1601

 
PapaYozh:

こちらはインデックスゼロから、 つまり最初からです。

迷いますね...まったくもってその通りです!
 
PapaYozh:

これは、ゼロインデックスから、 つまり最初から検索するものです。

PapaYozh:

こちらはゼロ インデックスから、つまり最初からです。

ああ...これですべて納得です、ありがとうございました。

 
Maxim Kuznetsov:

for(int i=OrdersTotal()-1;i>=0;i--) {

   if (! OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue;

   double prosad=DBL_MIN;

   if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue;

   for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) {

      double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() );

      delta /= MarketInfo(OrderSymbol(),MODE_POINT);

      if (delta>prosad) prosad=delta;

   }

  PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE);

}

手書きで、未テストで、エラーだらけ :-) 自分のニーズに合わせて調整し、使用する。

あなたのコードで -"!" が何を意味するのか教えてください。

まだよくわからない

とか、作者以外の人が解説してくれないかな?

 
законопослушный гражданин:

あなたのコードでは、-"!"はどのような意味ですか?

まだよく分かっていないんです。

とか、作者以外の人が説明できるのか?

!- これはブーリアン否定であり、NOT

if { !OrderSelect() } は、"ifOrderSelect is NOT successful" に変換されます。

それぞれ "NOTイコール"

 
Maxim Kuznetsov:

!- はブール否定、NOT

if { !OrderSelect() } は "if NOT successfulOrderSelect" と変換されます。

!

しゃい

 
Maxim Kuznetsov:

for(int i=OrdersTotal()-1;i>=0;i--) {

   if (!OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue;

   double prosad=DBL_MIN;

   if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue;

   for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) {

      double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() );

      delta /= MarketInfo(OrderSymbol(),MODE_POINT);

      if (delta>prosad) prosad=delta;

   }

  PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE);

}

手書きで書いたため、チェックされておらず、エラーが多い :-) 必要に応じて調整し、使用する。

私はコードを「クリーンアップ」したかもしれませんが、この行は警告を表示します for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--)

型変換によるデータ消失の可能

何が問題なのかわからない?

 
законопослушный гражданин:

コードをきれいにしたようですが、この行で for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) と警告が出ています。

型変換によるデータ消失の可能

どこが悪いのかわからない?

パラメータを間違えてしまった...ターミナルをバイパスしてフォーラムに「その場」で書き込むとよくあるゴタゴタです

iBarShift(OrderSymbol(),PERIOD_M1,OrderOpenTime()) は、次のようにします。

 
Maxim Kuznetsov:

パラメータが混在している...ターミナルをバイパスしてフォーラムに直接「オンザフライ」で書き込む場合によくある混乱

iBarShift(OrderSymbol(),PERIOD_M1,OrderOpenTime()) は、次のようにします。

しゃい

 
законопослушный гражданин:

コードをきれいにしたようですが、この行で for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) と警告が出ています。

型変換によるデータ消失の可能

どこが悪いのかわからない?

何が悪いのかよくわからないのですが、この「もの」全体をExpert Advisorに取り付けて、テストレポートの情報を出力してStrategy Testerで実行することは可能ですか?

はたしてうまくいくのだろうか?

 

対処法のヒントがあれば教えてください。

履歴のテスターで、単純な注文を開くとエラーになることがあるのですが...。

OrderSend(_Symbol,OP_SELL,0.5,Bid,0,0,0,NULL,0)
2021.08.26 14:56:33.375 2017.08.07 08:00:00  Trader EURUSD,H1: OrderSend error 3

ERR_INVALID_TRADE_PARAMETERS - これは一体何なのか、どういうことなのか?