열린 직위를 그룹으로 나누기 - 페이지 9

 
Sergey Voytsekhovsky :

내가 당신을 올바르게 이해한다면 이것이 올바른 방법입니다. 더 경험 많은 동지로서 pliz에게 말해주십시오. 신생아 위치를 잡기 위해 그러한 필터가 작동합니다 ??? 아니면 더 나은 옵션이 있습니까 ??

이것은 Alex를 위한 것입니다. 어떤 이유로 OnTradeTransaction() 을 사용하지 않습니다.

 
Alexey Viktorov :

따라서 다른 메시지를 뒤로 이동하도록 제안합니까? 아무도 기억하지 못하게 하시겠습니까? 이것은 정확하지 않습니다.

제 생각에는 각 문제가 별도의 주제가 될 포럼의 별도 섹션을 정의하는 것이 좋습니다. 주제 수는 한 주제에 대한 게시물 수보다 훨씬 적습니다. 따라서 상당한 수의 주제에도 불구하고 개별 질문과 오류 메시지 가 이제 푸시백되는 한 푸시백되지 않습니다.

글쎄, 당신은 당신이 모르는 것을 빨간색으로 강조 표시했습니다. 그리고 무엇이 문제였습니까? 그녀는 어떻게 나타났습니까? 그리고 새로운 방법은 무엇입니까?

그리고 오류 메시지에 대해 "정확하지 않음"이지만 보고하려면 보고하십시오. 그리고 욕망이 없으면 욕망도 없습니다. 그리고 "나는 사람들이 자신의 이야기를 하게 한다"와 같은 말을 하는 것은 변명입니다.

 
Sergey Voytsekhovsky :

내가 당신을 올바르게 이해한다면 이것이 올바른 방법입니다. 더 경험 많은 동지로서 pliz에게 말해주십시오. 신생아 위치를 잡기 위해 그러한 필터가 작동합니다 ??? 아니면 더 나은 옵션이 있습니까 ??

내 생각에 이 라인은

         if (trans.type != TRADE_TRANSACTION_ORDER_DELETE )

불필요한. 일반적으로 저는 현재 그러한 옵션에 대한 OnTradeTransaction의 운영을 검토하고 있습니다.

   if (trans.type == TRADE_TRANSACTION_HISTORY_ADD )

거래를 추가할 때 거래를 생성한 주문의 티켓이 없습니다. 하지만 오더 티켓과 그 속성이 필요하다면, 그리드 스텝이 미끄러짐으로 인해 빗나가지 않도록 오더 개시 가격이 필요하기 때문에 이것이 최선의 선택입니다. 임호.

일반적으로 나는 특정 작업에 대한 글쓰기를 지지합니다. 그리고 안전보장이사회에서 그들은 추가적인, 때로는 완전히 불필요한 변수를 요구하는 보편성을 쌓았습니다.

 
Artyom Trishkin :

글쎄, 당신은 당신이 모르는 것을 빨간색으로 강조 표시했습니다. 그리고 무엇이 문제였습니까? 그녀는 어떻게 나타났습니까? 그리고 새로운 방법은 무엇입니까?

그리고 오류 메시지에 대해 "정확하지 않음"이지만 보고하려면 보고하십시오. 그리고 욕망이 없으면 욕망도 없습니다. 그리고 "나는 사람들이 자신의 이야기를 하게 놔두겠다"와 같이 경계하는 것은 핑계입니다.

오래된 디스크 어딘가에 오래된 터미널이 있습니다. 찾으면 이전 라이브러리와 새 라이브러리를 표시하겠습니다. 그러면 실질적인 대화가 있을 것입니다. 그래서, 나는 기억합니다. 당신은 그렇지 않습니다. 그러면 무엇에 대해 이야기해야합니까? 설명하는 방법, 지금이 아닌 것을 보여줍니다.
 
Alexey Viktorov :

내 생각에 이 라인은

불필요한. 일반적으로 저는 현재 그러한 옵션에 대한 OnTradeTransaction의 운영을 검토하고 있습니다.

거래를 추가할 때 거래를 생성한 주문의 티켓이 없습니다. 하지만 오더 티켓과 그 속성이 필요하다면, 그리드 스텝이 미끄러짐으로 인해 빗나가지 않도록 오더 개시 가격이 필요하기 때문에 이것이 최선의 선택입니다. 임호.

일반적으로 나는 특정 작업에 대한 글쓰기를 지지합니다. 그리고 안전보장이사회에서 그들은 추가적인, 때로는 완전히 불필요한 변수를 요구하는 보편성을 쌓았습니다.

올바른 방향으로 저를 가르쳐 주셔서 대단히 감사합니다. 나는 이것을했습니다 (아래에서 작동하는 것 같습니다).

 void OnTradeTransaction ( const MqlTradeTransaction & trans,
                         const MqlTradeRequest & request,
                         const MqlTradeResult & result)
  {
//---
   if (trans.type == TRADE_TRANSACTION_DEAL_ADD )
      {
         if ( HistoryDealGetInteger (trans.deal, DEAL_ENTRY ) == DEAL_ENTRY_IN ) // открылась позиция
            {
               int SizeArrayPosition = ArraySize (ArrayPosition);
               ArrayResize (ArrayPosition,SizeArrayPosition+ 1 );
               
               if ( PositionSelectByTicket (trans.position)){
               ArrayPosition[SizeArrayPosition].ticket_pos = trans.position;
               ArrayPosition[SizeArrayPosition].open_price = trans.price;
               ArrayPosition[SizeArrayPosition].open_tyme  = ( datetime ) PositionGetInteger ( POSITION_TIME );
               ArrayPosition[SizeArrayPosition].type       = ( ENUM_POSITION_TYPE ) PositionGetInteger ( POSITION_TYPE );
               ArrayPosition[SizeArrayPosition].kod_clana  = 0 ;
               
               Print ( "\n"
               "Открылась новая позиция: ticket = " ,ArrayPosition[SizeArrayPosition].ticket_pos);}}}
  }

이제 나는 더 기술적인 방법으로 이익을 얻거나 직접적인 지시를 통해 마감된 포지션의 티켓을 잡는 방법에 대해 머리를 맞대고 있습니다. 그들은 주요 위치 배열에서 이러한 위치를 제거하기 위한 티켓만 필요합니다.

 
Sergey Voytsekhovsky :

올바른 방향으로 저를 가르쳐 주셔서 대단히 감사합니다. 나는 이것을했습니다 (아래에서 작동하는 것 같습니다).

이제 나는 더 기술적인 방법으로 이익을 얻거나 직접적인 지시를 통해 마감된 포지션의 티켓을 잡는 방법에 대해 머리를 맞대고 있습니다. 그들은 주요 위치 배열에서 이러한 위치를 제거하기 위한 티켓만 필요합니다.

나는 기호와 마법에 대한 또 다른 수표를 추가할 것입니다.

     if ( PositionSelectByTicket (trans.position) && PositionGetString ( POSITION_SYMBOL ) == _Symbol && PositionGetInteger ( POSITION_MAGIC ) == magick)
     {
       if ( HistoryDealGetInteger (trans.deal, DEAL_ENTRY ) == DEAL_ENTRY_IN )

다음은 위치 닫기 가 포착되는 내 코드의 일부입니다.

     if ( ! PositionSelectByTicket (trans.position))
     {
       HistorySelectByPosition (trans.position);
       ulong ordTicket = HistoryOrderGetTicket ( 0 );
       if ( HistoryOrderGetInteger (ordTicket, ORDER_MAGIC ) == magick && HistoryOrderGetString (ordTicket, ORDER_SYMBOL ) == _Symbol )
       {

ENUM_DEAL_REASON 열거의 종료 사유로 나눌 수도 있습니다.

여기 다른 고문에서

     if (! PositionSelectByTicket (trans.position))
     {
       if (trans.symbol == _Symbol && HistorySelectByPosition ( HistoryDealGetInteger (trans.deal, DEAL_POSITION_ID )))
       {
         int dealTotal = HistoryDealsTotal ();
         long posMagic = 0 ;
         ulong dealTicketIN = HistoryDealGetTicket ( 0 );
         if ( HistoryDealGetInteger (dealTicketIN, DEAL_ENTRY ) == DEAL_ENTRY_IN )
          posMagic = HistoryDealGetInteger (dealTicketIN, DEAL_MAGIC );
         if (posMagic == magick)
         {
           ulong dealTicketOUT = HistoryDealGetTicket ( 1 );
           if ( HistoryDealGetInteger (dealTicketOUT, DEAL_ENTRY ) == DEAL_ENTRY_OUT )
           {

첫 번째 경우에는 주문이 필요하고 두 번째 경우에는 거래로 충분합니다. 일반적으로 무언가가 필요할 때 쓸 것입니다.

 
Alexey Viktorov :

나는 기호와 마법에 대한 또 다른 수표를 추가할 것입니다.

다음은 위치 닫기 가 포착되는 내 코드의 일부입니다.

ENUM_DEAL_REASON 열거의 종료 사유로 나눌 수도 있습니다.

여기 다른 고문에서

첫 번째 경우에는 주문이 필요하고 두 번째 경우에는 거래로 충분합니다. 일반적으로 무언가가 필요할 때 쓸 것입니다.

좋은 저녁이에요. 당신의 반응과 관심은 저를 인정합니다. 정말 감사합니다. 젊은이가 말했듯이 - 존경과 존경.

좋은 조언 감사합니다. 나는 거의 의식적으로 마술과 상징을 포함하지 않습니다. 첫째, 지금은 실제로 필요하지 않기 때문에 고문은 빈도가 높고 최소 위치가 많기 때문에 경쟁자가 없으며 경쟁자가 없을 가능성이 큽니다. 그는 다른 사람들과 경쟁할 수 있는 곳에서 스스로 질식하고 있습니다. 물론 터미널과 계정에 하나가 있을 것입니다. 두 번째는 아마도 억지일 가능성이 높으며, 아직 잘 이해하지 못하지만 최소한 리소스를 조금 절약할 수 있습니다.

당신의 예는 훌륭합니다. 나는 확실히 그것을 지킬 것입니다. 그러나 나는 티켓도, 주문도, 거래도 없습니다. 더 정확하게는 수백 가지가 있는데 어느 것이 지금 닫힐지 모르겠습니다. 위에서, 당신은 내가 포지션을 닫는 사실이

 void OnTradeTransaction ( const MqlTradeTransaction & trans,
                         const MqlTradeRequest & request,
                         const MqlTradeResult & result)

이제 앉아서 스트림에서 제공하는 모든 것을 인쇄하려고 합니다. 내 고문은 포지션 생성기 역할을 할 것이며, 포지션을 적극적으로 배치하고 덜 적극적으로 마감하는 방법을 이미 알고 있습니다. 많은 메시지 중에서 어떤 것이 포지션의 청산에 대해 명확하게 알려주는지를 알아내는 것만 남아 있습니다. 배열/구조에서 이 위치(위치 티켓)를 찾아 삭제하는 것이 남아 있습니다. 그런 것.

그리고 타자기로서 이 함수에 대한 섹션에서 참조 책의 예제 코드를 사용하려고 합니다.

//| OnTradeTransaction_Sample.mq5 |
//| Copyright 2018, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+----------------------------------------------- --------------------+
#특성   저작권   "저작권 2018, MetaQuotes Software Corp."
#특성   링크        "https://www.mql5.com"
#특성   버전     "1.00"
#특성   설명   "TradeTransaction 이벤트 리스너 예시"

 
Sergey Voytsekhovsky :

좋은 저녁이에요. 당신의 반응과 관심은 저를 인정합니다. 정말 감사합니다. 젊은이가 말했듯이 - 존경과 존경.

좋은 조언 감사합니다. 나는 거의 의식적으로 마술과 상징을 포함하지 않습니다. 첫째, 지금은 실제로 필요하지 않기 때문에 고문은 빈도가 높고 최소 위치가 많기 때문에 경쟁자가 없으며 경쟁자가 없을 가능성이 큽니다. 그는 다른 사람들과 경쟁할 수 있는 곳에서 스스로 질식하고 있습니다. 물론 터미널과 계정에 하나가 있을 것입니다. 두 번째는 아마도 억지일 가능성이 높으며, 아직 잘 이해하지 못하지만 최소한 리소스를 조금 절약할 수 있습니다.

당신의 예는 훌륭합니다. 나는 확실히 그들을 구할 것입니다. 그러나 나는 티켓도, 주문도, 거래도 없습니다 . 더 정확하게는 수백 가지가 있는데 어느 것이 지금 닫힐지 모르겠습니다. 위에서, 당신은 내가 포지션을 닫는 사실이

이제 앉아서 스트림에서 제공하는 모든 것을 인쇄하려고 합니다. 내 고문은 포지션 생성기 역할을 할 것이며, 포지션을 적극적으로 배치하고 덜 적극적으로 마감하는 방법을 이미 알고 있습니다. 많은 메시지 중에서 어떤 것이 포지션의 청산에 대해 명확하게 알려주는지를 알아내는 것만 남아 있습니다. 배열/구조에서 이 위치(위치 티켓)를 찾아 삭제하는 것이 남아 있습니다. 그런 것.

그리고 타자기로서 이 함수에 대한 섹션에서 참조 책의 예제 코드를 사용하려고 합니다.

이 팁을 기반으로 문서에서 스스로 무언가를 찾는 사람과 작은 지식을 공유하는 것은 항상 좋습니다. © 아이.에이. 크릴로프. 뻐꾸기는 뻐꾸기를 칭찬하기 때문에 수탉을 칭찬합니다. )))

고문이 자신을 위해 독점적으로 작성된 경우 물론 약간의 자유를 가질 수 있습니다. 기호와 마법을 확인할 필요가 없다고 생각하면 필요하지 않습니다.

선택에 관하여:

모든 것, 포지션 티켓, 오더 티켓, 딜 티켓이 있습니다. 그리고 포지션을 여는 거래 및/또는 주문을 꺼내는 것조차 어렵지 않습니다. MqlTradeTransaction 구조의 이 모든 것


     if (! PositionSelectByTicket (trans.position)) // Если позицию выбрать не получилось, значит она закрыта
     {
       HistorySelectByPosition (trans.position); // Получим список ордеров и сделок относящихся к этой, конкретной позиции
       ulong ordTicket = HistoryOrderGetTicket ( 0 ); // Получили тикет ордера который породил сделку и позицию.
       if ( HistoryOrderGetInteger (ordTicket, ORDER_MAGIC ) == magick && HistoryOrderGetString (ordTicket, ORDER_SYMBOL ) == _Symbol )
       {
 
Если позицию выбрать не получилось, значит она закрыта 
Ой-ли? 
 
Алексей Тарабанов :

Alexey, 이것은 모두 OnTradeTransaction 이벤트 처리에만 적용됩니다.

이벤트가 발생했으며 포지션을 닫기 위한 거래가 이루어졌습니다. 현재 자리가 없습니다. 주문 및 거래 목록(코드에 없음)을 선택하고 다음을 읽으면 이를 확인할 수 있습니다.

           ulong dealTicketOUT = HistoryDealGetTicket ( 1 );
           if ( HistoryDealGetInteger (dealTicketOUT, DEAL_ENTRY ) == DEAL_ENTRY_OUT )
그리고 우리는 일반적으로 두 개의 주문과 두 개의 거래만 있는 헤지 계정에 대해 이야기하고 있음을 명심하십시오.