우리는 다른 방향으로 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 ( "Ордер успешно удален." ); } } } //+------------------------------------------------------------------+
//-------------------------------------------------------------------+ // удаляет отложенные стоп ордера 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 ( "Ордер успешно удален." ); }
- последние четыре строчки в общем понятны, вопрос лишь в функции PlaySound, код которой необходимо вставить после каждой строчки " Print("..." в таком виде:
bool 플레이사운드(
문자열 지불 // 파일 이름
);
... 아니면 어떻게 든 변형 된 것입니까?
발표하다 bool PlaySound( 프로그램 헤더에서 - 설정 파일에서 소리를 켜고 끌 수 있는 기능을 얻을 수 있습니다. extern bool Play = TRUE;
더 나아가 Print는 무엇을 인쇄할까요? 그리고 어떤 조건에서?
이 행동의 의미는 무엇입니까? 주문을 마감할 때 소리를 재생하고 댓글을 작성하세요(TP 또는 SL로)?
자세하고 이해하기 쉬운 답변에 A1exPit 덕분에 ... "동작의 의미"는 "TakeProfit 및 Stoploss에 의한 주문 마감"이벤트를 울리는 것입니다 = 각각 고유 한 소리가 있습니다 ...
모두 좋은 하루! 어드바이저에 주문 삭제 넣는 방법을 알려주세요.
상황은 이렇습니다.
우리는 다른 방향으로 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);
}
}
예를 들어:
// удаляет отложенные стоп ордера 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 ( "Ордер успешно удален." );
}
}
}
//+------------------------------------------------------------------+
유형 분리란 무엇입니까? 그것은 무엇을 제공합니까? 이렇게 쓰면 성능차이가 날까요?
{
bool Del_1 = OrderDelete ( OrderTicket ());
if (!Del_1)
Print ( "Ошибка удаления ордера. Код ошибки=" , GetLastError ());
else
Print ( "Ордер успешно удален." );
}
iPhone의 MT4와 MT5에서 막대가 다른 이유는 무엇입니까? 술집 의 여는 시간과 닫는 시간은 같지만. 어제 MT4 14:00에 회선이 끊어지지 않았기 때문에 이것은 분명히 방해가 됩니다.
iPhone의 MT4와 MT5에서 막대가 다른 이유는 무엇입니까? 술집 의 여는 시간과 닫는 시간은 같지만. 어제 MT4 14:00에 회선이 끊어지지 않았기 때문에 이것은 분명히 방해가 됩니다.
iPhone의 MT4와 MT5에서 막대가 다른 이유는 무엇입니까? 술집 의 여는 시간과 닫는 시간은 같지만. 어제 MT4 14:00에 회선이 끊어지지 않았기 때문에 이것은 분명히 방해가 됩니다.
- последние четыре строчки в общем понятны, вопрос лишь в функции PlaySound, код которой необходимо вставить после каждой строчки " Print ( "..." в таком виде:
bool 플레이사운드(
문자열 지불 // 파일 이름
);
... 아니면 어떻게 든 변형 된 것입니까?
발표하다 bool PlaySound( 프로그램 헤더에서 - 설정 파일에서 소리를 켜고 끌 수 있는 기능을 얻을 수 있습니다. extern bool Play = TRUE;
더 나아가 Print는 무엇을 인쇄할까요? 그리고 어떤 조건에서?
이 행동의 의미는 무엇입니까? 주문을 마감할 때 소리를 재생하고 댓글을 작성하세요(TP 또는 SL로)?
인사말. 여기저기 물어봤는데 아직 답이 안나오네요. 말해줘 제발 왜 그런 기록을 가지고
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 막대의 최소값과 최대값을 계산하고 주문합니다. 또한, 최대값이 감소하거나 최소값이 증가하면 해당 주문을 삭제하고 새 데이터를 사용하여 열어야 합니다.
방금 공부를 시작했는데 수정이 아닌 삭제가 있는 옵션은 기능의 적용을 연구하기 위한 것인데 왜 작동하지 않는지 의문이 생겼습니다.