0

else if (ClosePosition == false)条件が true を返した場合 (つまり、EA がオープンしたポジションをクローズできなかった場合)、EA がiPhone に一度だけ通知を送信できるようにするにはどうすればよいでしょうか。現時点では、ティックごとに ping を実行します。

指定された条件が満たされたときに EA がポジションを正常に閉じると、関数のClosePositionブール値がOrderClose()返されます。EA がポジションをクローズできなかった場合trueに戻ります。ClosePosition == false

これまでの私のコードは次のとおりです

                   else if(ClosePosition == false)
                   {
                   int failedClosePosition = OrdersTotal()-1;
                   bool fail = OrderSelect(failedClosePosition,SELECT_BY_POS,MODE_TRADES);       
                   if(fail == true)
                      {
                      SendNotification("Order Number #"+IntegerToString(OrderTicket(),10)+" has failed to close. Please refer to error code "+IntegerToString(GetLastError()));
                      }
                   }
4

1 に答える 1

0

実際の解決策へのコンテキストがなければ(他の投稿のより広いビューを参照してください) 、
通知を送信するために繰り返し検出された理由は、そのような通知が送信された最初の機会までにロックアウトされるべきです(積極的に送信された一連の通知を想像してください:

int ArrayOfNotificationsAlreadySENT[][3];  //[ <OrderTicketNUMBER>,
                                           //  <Notification_E.164_TargetNUMBER>,
                                           //  <TimeStampSECONDS>
                                           //  ],

OrderTicket()そのような「トラブルメーカー」のUUIDとして番号を保存する)

反復的な検出が行われる問題については、定義を拡張して 4 番目の列を追加し、それぞれの UUID ごとにトラブル検出の量を更新し、(一般的に) いくつかのフォールバック ポリシーを使用してフローを減らすことができます。適切な再通知の「距離」は、実現可能なトラブルの状況とビジネス上許容on-first-detectedon-2nd-detect()れる再通知の密度にon-5th-detect()応じon-10th-detect()on-100th-detect()

于 2016-09-26T11:56:02.467 に答える