[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 582

 
Azerus :

마지막으로 게시된 Kim 함수 GetPotentialLossInCurrency (https://forum.mql4.com/en/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 키를 누르고 정보를 주의 깊게 다시 읽으십시오.

 

프로그래머를 위한 질문:
새 막대 에서 고문은 유로에 대한 주문이 살아 있는지 여부를 확인합니다(예:). 그렇지 않으면 새 거래를 만들고, 그렇다면 모든 것을 그대로 둡니다.
다음 조건을 설정합니다.

 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 :

프로그래머를 위한 질문:
새 막대에서 고문은 유로에 대한 주문이 살아 있는지 여부를 확인하고(예:) 그렇지 않으면 새 거래를 만들고, 그렇다면 모든 것을 그대로 둡니다.
다음 조건을 설정합니다.

그러나 코드가 작동하지 않습니다. 실수는 어디에 있습니까?

12개의 주문이 있고 당신의 주문이 7번째 주문이면 어떻게 되는지 확인하십시오(예:)

우리가 아닌 첫 번째를 확인하십시오. 우리는 명령을 내릴 것입니다

우리가 아닌 두 번째를 확인하십시오. 우리는 명령을 내릴 것입니다

...

일곱 번째를 확인하십시오 - 우리

여덟 번째를 확인하십시오 - 우리가 아닙니다. 우리는 명령을 내릴 것입니다

...

 


결론은 한 쌍에 대해 많은 주문을 열 때 한 동작으로 주문의 전체 겹침을 닫을 수 있다는 것입니다.

주문 수정/삭제--->유형---->닫힌 주문 닫기

닫힌 주문을 삭제합니다... MQL에 그런 기능이 있나요?

죄송합니다, 찾았습니다: https://forum.mql4.com/ru/4822

 
ilunga :

12개의 주문이 있고 당신의 주문이 7번째 주문이면 어떻게 되는지 확인하십시오(예:)

우리가 아닌 첫 번째를 확인하십시오. 우리는 명령을 내릴 것입니다

우리가 아닌 두 번째를 확인하십시오. 우리는 명령을 내릴 것입니다

...

일곱 번째를 확인하십시오 - 우리

여덟 번째를 확인하십시오 - 우리가 아닙니다. 우리는 명령을 내릴 것입니다

...


이 쌍에는 하나의 주문만 있습니다. 이 EURUSD 기호만 확인하지만 아마도 조건을 올바르게 설정하지 않았을 것입니다.

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

필요 if( OrderSymbol()= 기호 ("EURUSD"){

 
Cruc :


이 쌍에는 하나의 주문만 있습니다. 이 EURUSD 기호만 확인하지만 아마도 조건을 올바르게 설정하지 않았을 것입니다.

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

필요 if(OrderSymbol()= Symbol("EURUSD"){

전문가에서 완전 1이면 모든 주문을 거치지 않고 티켓을 기억하고 매번 닫혔는지 여부를 확인할 수 있습니다.
 
ilunga :
전문가에서 완전 1이면 모든 주문을 거치지 않고 티켓을 기억하고 매번 닫혔는지 여부를 확인할 수 있습니다.

추천해주셔서 정말 감사합니다. 거의 이렇게 할 뻔 했는데 주문이 제대로 되었는지 기억이 안 나네요. 그러면 티켓 값이 -10인가요?
 
Roman. :


보류 중인 주문에는 "예금 통화로 열린 포지션의 잠재적인 총 손실"이 없습니다 .

GetPotentialLossInCurrency() 함수는 예치 통화로 미결 포지션의 잠재적 손실 총계를 반환합니다.

우리는 시장에서의 위치에 대해 이야기하고 있습니다. 이러한 시장 기능에서 F1 키를 누르고 정보를 주의 깊게 다시 읽으십시오.


GetPotentialLossInCurrency() 함수가 열린 위치에 대해 이야기한다는 것을 완벽하게 이해합니다. 질문이 있습니다. 보류 중인 주문 을 고려할 수 없는 이유는 무엇입니까?

선적 서류 비치:

 double OrderOpenPrice (  )

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

double OrderStopLoss (   )

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

OrderOpenPrice 및/또는 OrderStopLoss가 미결 주문에만 적용된다는 말은 어디에도 없습니다.

 
Cruc :

추천해주셔서 정말 감사합니다. 거의 이렇게 할 뻔 했지만 주문이 제대로 되었는지 기억이 나지 않습니다. 그러면 티켓 값이 -10이 되나요?
티켓은 그대로 유지됩니다