초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 878

 
Artyom Trishkin :
이제 그래픽으로 설명한 것을 말로 설명하십시오. 높음, 낮음, 열기, 닫기를 사용합니다.
말로 설명하면 이미 TK를 작성했다고 생각하십시오. :)
언어 구성을 코드로 대체하는 것이 남아 있습니다.
알았어, 지금 할게)
 

양초 크기 = 높음[i] - 낮음[i]

위쪽 그림자 = 높음[i] - 열기[i]

캔들 본체 = 열기[i] - 닫기[i]

낮은 그림자 = 닫기[i] - 낮음[i]

양초 몸체와 크기의 비율 - (높음[i] - 낮음[i]) / (시가[i] - 종가[i])

짧은 그림자의 크기는 특정 임계값을 초과해서는 안 됩니다. - ( close[i] - low[i]) <= close[i]

양초 방향 - 높음[i] > 열기[i] > 닫기[i] > 낮음[i]

 
Artyom Trishkin :

마우스를 넣었습니다.

  • 위 가격+Ctrl 클릭 - 한도 판매
  • 가격 아래 클릭 + Ctrl - 구매 한도
  • 위 가격 클릭+Ctrl+Shift - Buy Stop
  • 가격 아래 클릭+Ctrl+Shift - 매도 스톱
시프트로 BuyStopLimit 및 SellStopLimit을 설정할 수도 있습니다.

MT5 테스터에서 비주얼 모드로 주문하는 방법인가요? 이벤트 처리는 어떻게 되나요? OnChartEvent()가 작동하지 않습니다...?

 
Vladimir Karputov :

테스터가 올바르게 작동하고 있습니다. 프로그램 논리의 오류: 두 문자는 서로 다른 사람의 두 삶과 같습니다(여기서 "사람"은 "기호"와 유사함). 그리고 두 번째 사람은 첫 번째 사람과 동시에 일어나야 할 의무가 없습니다("깨어남"은 " 새 바 의 출현"과 유사합니다).

즉, 첫 번째 기호와 두 번째 기호에 새 막대가 나타날 때까지 기다려야 합니다.


추가됨: 기사 새 막대 이벤트 처리기

귀하의 신속한 응답에 감사드립니다. 이 모든 것을 다중 통화 모드에서 구현하는 방법에 대해 생각할 것입니다.
 

이러한 질문 - 촛대 조합을 검색하는 데 중요한 조건 열거 순서가 있습니까?

예시:

     if (((high[i- 1 ]-low[i- 1 ]) < (high[i]-low[i])) && (open[i- 1 ] >= Lower1[i]) && ((close[i- 1 ]-open[i- 1 ]) >= 3 *(close[i]-open[i])) &&
      (close[i- 1 <= Base[i]]) && (high[i- 1 ] <= 0.5 *(high[i]-close[i])) && (close[i- 1 ] <= open[i]) && ((close[i]-open[i])<= 0.33 *(high[i]-close[i])) &&
      ((close[i]-open[i]) >= (open[i]-low[i])) && (close[i] <= Base[i])) // когда пин-бар ниже, либо равен линии Base
 

안녕하세요. 네팅 계정, 한 방향의 지정가 주문이 몇 개나 포지션이 되었는지 계산하고 싶습니다.

함수가 잘못 계산됩니다. 그 이유는 무엇입니까?

 int CurrentPos_sell_nettin()
  {
   string symb= _Symbol ;
   int     total       = 0 ;   // Всего сделок в списке выбранной истории
   int     count       = 0 ;   // Счетчик сделок по символу позиции
//--- Если история позиции получена
   for ( int i= 0 ; i< PositionsTotal (); i++)
     {
       ulong pt= PositionGetTicket (i);
       long ID= PositionGetInteger ( POSITION_IDENTIFIER );
       if ( PositionGetString ( POSITION_SYMBOL )==symb && HistorySelect ( PositionGetInteger ( POSITION_TIME ), TimeCurrent ()+ 60 ))
        {
         //--- Получим количество сделок в полученном списке
         total= HistoryDealsTotal ();
         //--- Пройдем по всем сделкам в полученном списке
         for ( int i= 0 ; i<total; i++)
           {
             ulong dt = HistoryDealGetTicket (i);
             long did = HistoryDealGetInteger (dt, DEAL_POSITION_ID );
             ENUM_DEAL_ENTRY in_out= HistoryDealGetInteger (dt, DEAL_ENTRY );
             if (did==pt && in_out== DEAL_ENTRY_IN )
              {
               if (m_position.PositionType()== POSITION_TYPE_SELL )
                 {
                  count++;
                 }
              }
           }
        }
     }
//---
   return (count);
  }
 
lil_lil :

안녕하세요. 네팅 계정, 한 방향의 지정가 주문이 몇 개나 포지션이 되었는지 계산하고 싶습니다.

함수가 잘못 계산됩니다. 그 이유는 무엇입니까?

HistorySelectByPosition 으로 시작하십시오. 그러면 이 포지션에만 참여하는 거래를 받게 됩니다.

 
clickaider :

이러한 질문 - 촛대 조합을 검색하는 데 중요한 조건 열거 순서가 있습니까?

예시:

예를 보세요 - 30개의 서로 다른 패턴이 있습니다.

 
Artyom Trishkin :

Artyom, 질문을 반복합니다. 답변해 주십시오.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

초보자의 질문 MQL5 MT5 MetaTrader 5

알렉세이 코지친 , 2018.06.03 15:39

MT5 테스터에서 비주얼 모드로 주문하는 방법인가요? 이벤트 처리는 어떻게 진행되나요? OnChartEvent()가 작동하지 않습니다...?


 
Alexey Viktorov :

HistorySelectByPosition으로 시작하십시오. 그러면 이 포지션에만 참여하는 거래를 받게 됩니다.

고맙습니다.

지금 무슨 일이야?

 int CurrentPos_sell_nettin()
  {
   string symb= _Symbol ;
   int     total       = 0 ;   // Всего сделок в списке выбранной истории
   int     count       = 0 ;   // Счетчик сделок по символу позиции
//--- Если история позиции получена

   for ( int i= 0 ; i< PositionsTotal (); i++)
     {
       ulong pt= PositionGetTicket (i);
       long ID= PositionGetInteger ( POSITION_IDENTIFIER );
       if ( PositionGetString ( POSITION_SYMBOL )==symb && HistorySelect ( PositionGetInteger ( POSITION_TIME ), TimeCurrent ()+ 60 ))
        {
         if ( PositionSelect (symb))
           {
             long pos_id= long ( PositionGetInteger ( POSITION_IDENTIFIER ));

             if (pos_id> 0 )
              {
               if ( HistorySelectByPosition ( ulong (pos_id)))
                  total= HistoryDealsTotal ();
               //--- Пройдем по всем сделкам в полученном списке
               for ( int i= 0 ; i<total; i++)
                 {
                   ulong dt = HistoryDealGetTicket (i);
                   long did = HistoryDealGetInteger (dt, DEAL_POSITION_ID );
                   ENUM_DEAL_ENTRY in_out= HistoryDealGetInteger (dt, DEAL_ENTRY );
                   if (did==pt && in_out== DEAL_ENTRY_IN )
                    {
                     if (m_position.PositionType()== POSITION_TYPE_SELL )
                       {
                        count++;
                       }
                    }
                 }
              }
           }
        }
     }
//---
   return (count);
  }
사유: