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

 
BBSL :

틱에 대해 이야기하는 경우 데이터 파일을 저장하는 코드를 작성할 수 있지만 Expert Advisor에서는 파일에서 로드해야 합니다. 컴퓨터를 끄지 않는 것이 합리적일 수 있습니까?
분명히 두 번째 옵션을 사용해야 합니다. BBSL님 감사합니다.
 
artmedia70 :

뭔가 이상한 짓을 하고 있군요... 포지션을 열면 변수에 티켓 번호를 할당하고 완전히 다른 변수를 확인합니다 ...

동시에 OrderSend() 는 실패의 경우 -1(-1)을 반환하고 0 미만이 필요할 때 1 미만이 필요한지 확인합니다.

이것이 가장 먼저 눈에 들어오는 것입니다. 하지만 거기에는 재미있는 것들이 많이 있는 것 같아요... :)


으하하하, 농담이 많죠.. 특히 확인을 시작할 때))

다시 한 번... 그럴 필요가 있으니,

주문을 엽니다.

order_id = OrderSend ( Symbol (),OP_SELL, 1.0 ,Bid, 3 , 0 , 0 , "expert comment" , 255 , 0 , Red );
   if (order_id< 0 )
     {
      error= GetLastError ();
       Print ( "send_orders, error = " ,ErrorDescription(error));
       return ;
     }
     } 

주문을 마감합니다.

 if ( OrderSelect ( 0 , SELECT_BY_POS)==true){

OrderClose(OrderTicket(), 1 ,Bid, 3 , Red );

}

맞습니다. 한 번의 주문만 가능합니까?))

 
hedger :
분명히 두 번째 옵션을 사용해야 합니다. BBSL님 감사합니다.

제발, 이것이 당신에게 도움이 되기를 바랍니다. :)
 
artmedia70 :

뭔가 이상한 짓을 하고 있군요... 포지션을 열면 변수에 티켓 번호를 할당하고 완전히 다른 변수를 확인합니다 ...

동시에 OrderSend() 는 실패의 경우 -1(-1)을 반환하고 0 미만이 필요할 때 1 미만이 필요한지 확인합니다.

이것이 가장 먼저 눈에 들어오는 것입니다. 하지만 거기에는 재미있는 것들이 많이 있는 것 같아요... :)


다음과 같이 틱 번호를 얻어야 한다는 것을 이해합니다.

nomer_ticketa = OrderSend ( Symbol (),OP_BUY, 1.0 ,Ask, 3 , 0 , 0 , "expert comment" , 255 , 0 , Green );
   if (ticket< 1 )
 
artmedia70 :

뭔가 이상한 짓을 하고 있군요... 포지션을 열면 변수에 티켓 번호를 할당하고 완전히 다른 변수를 확인합니다 ...

동시에 OrderSend() 는 실패의 경우 -1(-1)을 반환하고 0 미만이 필요할 때 1 미만이 필요한지 확인합니다.

이것이 가장 먼저 눈에 들어오는 것입니다. 하지만 거기에는 재미있는 것들이 많이 있는 것 같아요... :)


존경합니다, 감사합니다!))
 
BBSL :


다음과 같이 틱 번호를 얻어야 한다는 것을 이해합니다.

주문이 하나만 있으면 작동할 수 있지만 여전히 핸들로 열면 모든 것이 달라집니다. 티켓 번호는 변수에 저장해야 하며 주문을 선택한 후 저장된 티켓과 해당 티켓을 비교합니다.

 if (OrderTicket()==number_ticket) {
   // ... код для работы с выбранным ордером при совпадении тикетов
   }

일반적으로 루프에서 OrderSelect() 함수를 사용하여 주문 선택을 수행해야 합니다.

 for (i= 0 ; i< OrdersTotal (); i++) {                    // цикл по всем рыночным ордерам терминала
   if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) { // Если выбран любой рыночный ордер с индексом i
       if (OrderSymbol()!= Symbol ())     continue ;   // Если символ не текущего графика, переходим к выбору следующего ордера
       if (OrderMagicNumber()!=Magic)   continue ;   // Если его магик не совпадает с магиком советника - переходим к выбору следующего
//... далее можно проверять другие параметры выбранного ордера, но в этом месте уже есть выбранный ордер текущего графика и номером магика советника
       if (OrderTicket()==number_ticket) {          // проверяем тикет выбранного ордера и, если есть совпадение, выполняем с ним дальнейшие действия
         // ... код, выполняющий дальнейшие действия с найденным нужным ордером ...
         }
      }
   else if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) // Иначе, если не удалось выбрать ордер
       Print ( "Ошибка при выборе ордера из списка рыночных ордеров = " , GetLastError ());   // Выведем сообщение об ошибке и её номер в журнал.
   }

이것은 완성된 작업 코드가 아니라 이해를 위한 예시일 뿐입니다... :)

 
artmedia70 :

주문이 하나만 있으면 작동할 수 있지만 여전히 핸들로 열면 모든 것이 달라집니다. 티켓 번호는 변수에 저장해야 하며 주문을 선택한 후 저장된 티켓과 티켓을 비교합니다.

일반적으로 루프에서 OrderSelect() 함수를 사용하여 주문을 선택해야 합니다.

이것은 완성된 작업 코드가 아니라 이해를 위한 예시일 뿐입니다... :)




주문을 마감할 때 하나 이상의 주문이 있는 경우 다음 주기를 사용해야 합니다.

 int i, k= OrdersTotal ();

   for (i=k- 1 ; i>= 0 ; i--) {
 //...
 
bolt :

주문을 마감할 때 하나 이상의 주문이 있는 경우 다음 주기를 사용해야 합니다.

내 게시물의 마지막 줄을 읽으십시오. 내가 닫는 예를 썼다고 누가 말했습니까?

나머지는 일반적인 진리입니다. 교과서를 쓰세요.

 

OrderOpenPrice가 작동하지 않는 이유를 알려주십시오. 작업은 풀을 검색하여 특정 가격에 주문한 주문이 없는 경우 주문을 하고 설정된 플래그를 설정하는 것입니다.


 for ( int i= 1 ; i <= OrdersTotal () ; i++)
   {
   if ( OrderSelect (i- 1 ,SELECT_BY_POS,MODE_TRADES))
      {
       if (OrderOpenPrice() == price) 
        {
        orderset = true;
        }
      }
   }
     
if ((orderset==false)
   {
   OrderSend ( Symbol (),OP_SELLLIMIT,baselot,price, 3 , NULL ,price- 10 , "Comment" , 0001 +i, 0 , White ); 
   }
 
Pyro :

OrderOpenPrice가 작동하지 않는 이유를 알려주십시오. 작업은 풀을 검색하여 특정 가격에 주문한 주문이 없는 경우 주문을 하고 설정된 플래그를 설정하는 것입니다.



실수는 비교할 수 없습니다.