PositionSelect

추가 작업을 위해 오픈 포지션을 선택합니다. 함수가 성공적으로 완료되면 true를 반환합니다. 실패 시 False를 반환합니다. 오류에 대한 정보를 얻으려면 GetLastError()를 호출하십시오.

bool  PositionSelect(
   string  symbol      // 심볼명
   );

매개 변수

Symbol

[in]  금융증권의 이름.

반환값

bool 유형의 값.

참고

포지션 (ACCOUNT_MARGIN_MODE_RETAIL_NETTINGACCOUNT_MARGIN_MODE_EXCHANGE)의 "netting" 해석의 경우, 언제든지 하나의 포지션이 하나의 심볼에 대해 존재할 수 있습니다. 이 포지션은 하나 이상의 거래의 결과입니다. Toolbox 창의 Trading 탭에도 표시되는 유효한 보류 주문과 포지션을 혼동하지 마십시오

개별 포지션이 허용되는 경우 (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING), 하나의 심볼로 여러 포지션을 오픈할 수 있습니다. 이 경우 PositionSelect는 가장 낮은 포지션의 티켓을 선택합니다.

Function PositionSelect()는 위치에 대한 데이터를 프로그램 환경으로 복사하고 PositionGetDouble(), PositionGetInteger()PositionGetString()를 추가로 호출하면 이전에 복사된 데이터가 반환됩니다. 즉, 포지션 자체는 더 이상 존재하지 않을 수 있지만(또는 볼륨, 방향 등이 변경됨), 이 포지션의 데이터는 여전히 얻을 수 있습니다. 포지션에 대한 새로운 데이터를 수신하려면 해당 포지션을 참조하기 전에 PositionSelect()를 호출하는 것이 좋습니다.

예:

#define   SYMBOL_NAME   "EURUSD"
 
//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 함수                                          |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 지정된 심볼에서 포지션을 선택
   if(!PositionSelect(SYMBOL_NAME))
     {
      PrintFormat("PositionSelect(%s) failed. Error %d",SYMBOL_NAMEGetLastError());
      return;
     }
 
//--- 포지션이 선택되면 PositionGetDouble(), PositionGetInteger() 및 PositionGetString()을 사용하여 해당 데이터를 얻을 수 있습니다.
//--- 선택된 포지션 티켓 획득
   ResetLastError();
   long ticket=PositionGetInteger(POSITION_TICKET);
   if(ticket==0)
     {
      PrintFormat("Failed to get %s position ticket. Error %d"SYMBOL_NAMEGetLastError());
      return;
     }
     
//--- 티켓이 성공적으로 수신되면 선택한 포지션 심볼과 티켓을 저널에 출력합니다.
   PrintFormat("The position that is selected on the %s symbol has ticket %I64d"SYMBOL_NAMEticket);
   /*
   결과:
   The position that is selected on the EURUSD symbol has ticket 2810846623
   */
  }

참고 항목

PositionGetSymbol(), PositionsTotal(), Position Properties