[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 582

 
Azerus:

Kim氏が最近公開した関数GetPotentialLossInCurrency(https://forum.mql4.com/ru/11287/page107)は、オープンオーダーしか考慮していません。

私はそれに保留中の注文を含めることによってそれを少し広げようとした(単に他のタイプを追加することによって):しかし、保留中の注文は考慮されません。数え方が違うのでしょうか?ドキュメントには何も書かれていないのですが...。


未決済注文には、「預け入れ通貨の未決済ポジションの全損の可能性」はありません。

GetPotentialLossInCurrency( )関数は、預入通貨における未決済ポジションの潜在的な損失の合計を返します。

市場におけるポジションを指します。これらのマーケット機能でF1キーを押して、情報をよく読み直してください。

tv=MarketInfo(OrderSymbol(), MODE_TICKVALUE);
              if (OrderType()==OP_BUY) {
                pl+=(OrderOpenPrice()-OrderStopLoss())/po*OrderLots()*tv;
              }
              if (OrderType()==OP_SELL) {
                pl+=(OrderStopLoss()-OrderOpenPrice())/po*OrderLots()*tv;
              }
              pl+=OrderCommission()+OrderSwap();
 
Roman.:


未決済注文は、「預金通貨の未決済ポジションの全損失の可能性」はありません。

GetPotentialLossInCurrency( )関数は、預入通貨における未決済ポジションの潜在的な損失の合計を返します。

マーケットでのポジションの話です。これらのマーケット機能でF1キーを押して、情報をよく読み直してください。

 

プログラマーへの質問:
新しいバーで、Expert Advisorはユーロの注文が生きているかどうかをチェックし(例えば)、生きていなければ新しい取引を行い、生きていればそのまますべてを残します。
そのような条件を入れてください。

 for(int i=1; i<=OrdersTotal(); i++)          // Цикл перебора ордер
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         int Tip=OrderType();                   // Тип ордера
         if(OrderSymbol()!="EURUSD"||Tip>1){continue;}else{// Не наш ордер

      
   RefreshRates();
  double point5 =MarketInfo("EURUSD", MODE_POINT);//Запрос Point
 double bid5 =MarketInfo("EURUSD", MODE_BID); // Запрос значения Bid
 double ask5 =MarketInfo("EURUSD", MODE_ASK); // Запрос значения Ask
  double SL5 = NormalizeDouble(bid5+(Stop*point5), MarketInfo("EURUSD", MODE_DIGITS));
 double TP5 = NormalizeDouble(bid5-(Profit*point5), MarketInfo("EURUSD", MODE_DIGITS)); 
  double SL5v = NormalizeDouble(bid5-(Stop*point5), MarketInfo("EURUSD", MODE_DIGITS));
 double TP5v = NormalizeDouble(bid5+(Profit*point5), MarketInfo("EURUSD", MODE_DIGITS));  
 if ((iVolume("EURUSD",Period(),4)) > (iVolume("EURUSD",Period(),1))) { 
 ticket=OrderSend("EURUSD",OP_SELL,lot_EUR,bid5,Slip,0,0);// Открытие Sell
 OrderSelect(ticket,SELECT_BY_TICKET);
 OrderModify(OrderTicket(),OrderOpenPrice(),SL5,TP5 ,0,CLR_NONE); 
 {Alert (GetLastError());} // Сообщение об ошибке
}else{ticket=OrderSend("EURUSD",OP_BUY,lot_EUR,ask5,Slip,0,0); // Открытие BUY
 OrderSelect(ticket,SELECT_BY_TICKET);
 OrderModify(OrderTicket(),OrderOpenPrice(),SL5v,TP5v ,0,CLR_NONE); 
 { Alert (GetLastError());} // Сообщение об ошибке
}}

        }                                       // Конец анализа орд.
     }                                          // Конец перебора орд.

しかし、このコードはうまくいきません。どこにエラーがあるのか?

 
Cruc:

ここで、プログラマーに質問です。
新しいバーで、EAはEUR注文が生きているかどうかをチェックします(例えば、生きていない場合は新しい取引を開始し、生きている場合はすべてをそのままにします)。
そんな条件を設定しました。

しかし、そのコードはうまくいきません。どこにエラーがあるのか?

例えば、12個の注文があり、あなたの注文が7個目だった場合、どうなるか見てみましょう。

最初の1枚をチェック - 私たちのものではありません。

2枚目をチェック、私たちのものではありません。

...

7をチェックする - 私たちの

第八を確認する、それは我々のものではない。

...

 


1つのペアで大量の注文を出すと、重なった注文を一挙に決済することができるというものです。

注文の変更・削除--->タイプ----->重複した注文をクローズする

重なったオーダーを削除する...MQLにそのような関数はありますか?

おっと、発見しました:https://forum.mql4.com/ru/4822

 
ilunga:

十数件の注文があり、自分の注文が7件目であった場合どうなるかを見る

は、私たちのものではありません。

2枚目を確認してください、私たちのものではありません。

...

7をチェックする - 私たちの

第八を確認し、それは私たちのものではありません、順序を設定します。

...


このペアで開いている注文は1つだけです。 私は与えられたEURUSDシンボルのみをチェックしますが、私は条件を正しく設定されていない必要があります。

if(OrderSymbol()!="EURUSD"||Tip>1){continue;}else{。

if(OrderSymbol()= Symbol("EURUSD"){) が必要です。

 
Cruc:


このペアで開いている注文は1つだけです。 指定されたEURUSDシンボルのみをチェックしているのですが、条件の設定が間違っているようです。

if(OrderSymbol()!="EURUSD"||Tip>1){continue;}else{。

need if(OrderSymbol()= Symbol("EURUSD"){)

Expert Advisorに1つのシンボルしかない場合、そのチケットを覚えておくだけで、すべての注文を通さずに毎回チェックすることができます。
 
ilunga:
EAに1つだけある場合、そのチケットを覚えておけば、すべての注文を確認することなく、毎回クローズされたかどうかをチェックすることができます。

注文がトリガーされた場合、チケットは値-10を取るのか?
 
Roman.:


未決済注文は、「預け入れ通貨での未決済ポジションの全損失の可能性」がありません

GetPotentialLossInCurrency( )関数は、預入通貨における未決済ポジションの潜在的な損失の合計を返します。

市場におけるポジションを指します。これらのマーケット機能でF1キーを押し、情報をよく読み直してください。


GetPotentialLossInCurrency()関数がオープンポジションについて話していることは非常によく理解しています。質問があるのですが、なぜ保留中の注文も 計上できないのでしょうか?

ドキュメントのことです。

double OrderOpenPrice(  )

 Возвращает цену открытия для выбранного ордера.
 Ордер должен быть предварительно выбран с помощью функции OrderSelect().

double OrderStopLoss(   )

 Возвращает значение цены закрытия позиции при достижении уровня убыточности (stop loss) для текущего выбранного ордера.
 Ордер должен быть предварительно выбран с помощью функции OrderSelect().

OrderOpenPrice や OrderStopLoss が未決済注文にのみ 適用されるとは、どこにも書いてありません。

 
Cruc:

推薦していただきありがとうございました。ほとんど理解できました。ただ、注文がトリガーされるかどうかが思い出せません。チケットは-10という値を取るのでしょうか?
チケットはそのままで