초보자의 질문 MQL4 MT4 MetaTrader 4 - 페이지 29

 
yaaarik777 :

모두 좋은 하루! 어드바이저에 주문 삭제 넣는 방법을 알려주세요.

상황은 이렇습니다.

우리는 다른 방향으로 2개의 보류 중인 주문 을 배치합니다. 그 중 하나가 실행되는 즉시 다른 하나는 삭제되고 더 이상 배치되지 않습니다.

도움을 주시면 대단히 감사하겠습니다.

고맙습니다.

예를 들어:

//-------------------------------------------------------------------+
//   удаляет отложенные ордера по type                               +
//+------------------------------------------------------------------+

void DeleteOrders( int type)
{
   int cnt = OrdersTotal ();
   for ( int i=cnt- 1 ; i>= 0 ; i--) {
         if (! OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) continue ;
         //По желанию
         if ( OrderSymbol () != Symbol ()) continue ;
         //По желанию
         if ( OrderMagicNumber () != mn) continue ;
        
         if ( OrderType () != type) continue ;
        
         if (type == OP_BUYSTOP || type == OP_SELLSTOP )
            {
             bool Del_1 = OrderDelete ( OrderTicket ());
               if (!Del_1)
                   Print ( "Ошибка удаления ордера. Код ошибки=" , GetLastError ());
               else
                   Print ( "Ордер успешно удален." );
            }
         if (type == OP_BUYLIMIT || type == OP_SELLLIMIT )
            {
             bool Del_2 = OrderDelete ( OrderTicket ());  
               if (!Del_2)
                   Print ( "Ошибка удаления ордера. Код ошибки=" , GetLastError ());
               else
                   Print ( "Ордер успешно удален." );
            }
  }
}
//+------------------------------------------------------------------+
 

글쎄, 그 전에 위치가 나타났는지 확인 하고 추가 주문을 담글 시간입니다.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 16.06.2008                                                     |
//|  Описание : Удаление ордеров, противоположных позиции                      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
void DeleteOppositeOrders( string sy= "" , int op=- 1 , int mn=- 1 ) {
   bool eb, es;

   switch (op) {
     case OP_BUY : eb=ExistPositions(sy, OP_BUY , mn); break ;
     case OP_SELL : es=ExistPositions(sy, OP_SELL , mn); break ;
     default :      eb=ExistPositions(sy, OP_BUY , mn);
                  es=ExistPositions(sy, OP_SELL , mn); break ;
  }

   if (eb) {
    DeleteOrders(sy, OP_SELLLIMIT , mn);
    DeleteOrders(sy, OP_SELLSTOP , mn);
  }
   if (es) {
    DeleteOrders(sy, OP_BUYLIMIT , mn);
    DeleteOrders(sy, OP_BUYSTOP , mn);
  }
}
 
Vladimir Zubov :

예를 들어:

//-------------------------------------------------------------------+
//   удаляет отложенные стоп ордера SELLSTOP или BUYSTOP по type     +
//+------------------------------------------------------------------+

void DeleteOrders( int type)
{
   int cnt = OrdersTotal ();
   for ( int i=cnt- 1 ; i>= 0 ; i--) {
         if (! OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) continue ;
         //По желанию
         if ( OrderSymbol () != Symbol ()) continue ;
         //По желанию
         if ( OrderMagicNumber () != mn) continue ;
        
         if ( OrderType () != type) continue ;
        
         if (type == OP_BUYSTOP || type == OP_SELLSTOP )
            {
             bool Del_1 = OrderDelete ( OrderTicket ());
               if (!Del_1)
                   Print ( "Ошибка удаления ордера. Код ошибки=" , GetLastError ());
               else
                   Print ( "Ордер успешно удален." );
            }
         if (type == OP_BUYLIMIT || type == OP_SELLLIMIT )
            {
             bool Del_2 = OrderDelete ( OrderTicket ());  
               if (!Del_2)
                   Print ( "Ошибка удаления ордера. Код ошибки=" , GetLastError ());
               else
                   Print ( "Ордер успешно удален." );
            }
  }
}
//+------------------------------------------------------------------+

유형 분리란 무엇입니까? 그것은 무엇을 제공합니까? 이렇게 쓰면 성능차이가 날까요?

if (type > 1 && type < 6 )
   {
     bool Del_1 = OrderDelete ( OrderTicket ());
     if (!Del_1)
     Print ( "Ошибка удаления ордера. Код ошибки=" , GetLastError ());
     else
     Print ( "Ордер успешно удален." );
   }
 
iPhone의 MT4와 MT5에서 막대가 다른 이유는 무엇입니까? 술집 의 여는 시간과 닫는 시간은 같지만. 어제 MT4 14:00에 회선이 끊어지지 않았기 때문에 이것은 분명히 방해가 됩니다.
파일:
image.png  82 kb
image.png  81 kb
 
안녕하세요! 알려주세요. Android용 mt4 636 버전을 다운로드했는데 브로커 목록이 표시되지 않습니다. 더 이상 지원하지 않는 터미널 버전인가요?(지원된다면 작업파일은 어디서 다운받을 수 있나요?
 
MetaGSss :
iPhone의 MT4와 MT5에서 막대가 다른 이유는 무엇입니까? 술집 의 여는 시간과 닫는 시간은 같지만. 어제 MT4 14:00에 회선이 끊어지지 않았기 때문에 이것은 분명히 방해가 됩니다.
그들은 당신이 가격이 어디로 갈지 미리 알기를 원합니다
 
MetaGSss :
iPhone의 MT4와 MT5에서 막대가 다른 이유는 무엇입니까? 술집 의 여는 시간과 닫는 시간은 같지만. 어제 MT4 14:00에 회선이 끊어지지 않았기 때문에 이것은 분명히 방해가 됩니다.
물론 극단적 인 사람들을 위해 퍼짐)))
 
MetaGSss :
iPhone의 MT4와 MT5에서 막대가 다른 이유는 무엇입니까? 술집 의 여는 시간과 닫는 시간은 같지만. 어제 MT4 14:00에 회선이 끊어지지 않았기 때문에 이것은 분명히 방해가 됩니다.
캐릭터도 조금씩 다름)
 

- последние четыре строчки в общем понятны, вопрос лишь в функции PlaySound,  код которой необходимо вставить после каждой строчки " Print ( "..." в таком виде:  

bool 플레이사운드(

문자열 지불 // 파일 이름

);

... 아니면 어떻게 든 변형 된 것입니까?

발표하다 bool PlaySound( 프로그램 헤더에서 - 설정 파일에서 소리를 켜고 끌 수 있는 기능을 얻을 수 있습니다. extern bool Play = TRUE;

더 나아가 Print는 무엇을 인쇄할까요? 그리고 어떤 조건에서?

이 행동의 의미는 무엇입니까? 주문을 마감할 때 소리를 재생하고 댓글을 작성하세요(TP 또는 SL로)?






자세하고 이해하기 쉬운 답변에 A1exPit 덕분에 ... "동작의 의미"는 "TakeProfit 및 Stoploss에 의한 주문 마감"이벤트를 울리는 것입니다 = 각각 고유 한 소리가 있습니다 ...
 

인사말. 여기저기 물어봤는데 아직 답이 안나오네요. 말해줘 제발 왜 그런 기록을 가지고

if (x!=maxpr1){x=maxpr1; 주문삭제(티켓D);}

if (z!=minpr1){z=minpr1; 주문삭제(티켓업);}

항상 오류를 던진다

: OrderDelete 기능 에 대한 유효하지 않은 티켓

: 주문 삭제 오류 4051

설명서에 따르면

유효하지 않은 함수 매개변수 값

매개 변수가 동일한 것처럼 보이지만.

조건을 제거하고 그대로 두면

주문삭제(티켓D);

주문삭제(티켓업);

성공적으로 삭제됩니다(그러나 조건에 따라 필요함). 내가 무엇을 잘못하고 있지? 여기에 전체 내용이 있습니다.

https://www.mql5.com/en/forum/160683/page31#comment_3911573

EA는 마지막 X 막대의 최소값과 최대값을 계산하고 주문합니다. 또한, 최대값이 감소하거나 최소값이 증가하면 해당 주문을 삭제하고 새 데이터를 사용하여 열어야 합니다.

방금 공부를 시작했는데 수정이 아닌 삭제가 있는 옵션은 기능의 적용을 연구하기 위한 것인데 왜 작동하지 않는지 의문이 생겼습니다.