Neron_76 : 그렇다면 항상 발생하지 않는 이유는 무엇입니까? 진드기 사이에 어떤 일이 발생합니까? 나는 이것에 능숙하지 않습니다.
한 심볼의 틱 사이에 다른 심볼의 틱이 발생할 수 있습니다. Expert Advisor가 다중 통화인 경우 다른 기호의 눈금이 표시됩니다. 타이머 이벤트는 틱 사이에도 발생할 수 있습니다. - OnTimer() 및 OnChartEvent() 이벤트 - 거의 "이벤트 이벤트"라고 썼습니다... 그것은 설정이 될 것입니다...
주기는 OrdersTotal () -1에서 0까지 역순으로 계산해야 합니다.
주기는 OrdersTotal () -1에서 0까지 역순으로 계산해야 합니다.
안녕하세요! 로봇을 데모 계정 에 넣었습니다. 두 번째 달에는 작동합니다. 오늘 나는 터미널을 열었습니다. 비록 그 전에 하나의 주문이 이루어졌지만 하나의 신호에 두 개의 주문이 들어왔습니다. 주문 수에 제한이 있습니다. 이유는 무엇입니까?
코드로 판단하면 두 번째 주문은 시장가 주문이 아니라 보류 중인 주문입니다.
오픈 주문 수에 대한 제한은 시장 주문에만 적용됩니다.
따라서 오류가 없으므로 문제가 없습니다.
코드로 판단하면 두 번째 주문은 시장가 주문이 아니라 보류 중인 주문입니다.
오픈 주문 수에 대한 제한은 시장 주문에만 적용됩니다.
따라서 오류가 없으므로 문제가 없습니다.
제한 사항은 미결 및 보류 중인 주문 에 적용됩니다. 한 달 반 동안 이것은 나에게 두 번째 경우이며 나머지는 모두 원래대로 전시됩니다.
다음과 같이 시도하십시오.
SetOrder( NULL , OP_BUYSTOP ,Lts,sar,sar-SL* Point (),sar+TP* Point (),Magik_number);
return ( 0 );
}
if (NumberOfPositions(Symb,- 1 ,Magik_number)== 0 && NumberOfOrders(Symb,- 1 ,Magik_number)== 0 && Delta_Sell> High [ 1 ] && sar< Close [ 1 ]) {
SetOrder( NULL , OP_SELLSTOP ,Lts,sar,sar+SL* Point (),sar-TP* Point (),Magik_number);
return ( 0 );
}
//===============================================================================================
//------------------------------- Возвращает количество позиций --------------------------------+
//===============================================================================================
int NumberOfPositions( string sy= "" , int op=- 1 , int mn=- 1 ) {
int kp= 0 ;
if (sy== "" ) sy= Symbol ();
for ( int i= 0 ; i< OrdersTotal (); i++) {
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
if (( OrderSymbol ()==sy || sy== "" ) && (op< 0 || OrderType ()==op)) {
if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) {
if (mn< 0 || OrderMagicNumber ()==mn) kp++;
}}}}
return (kp);
}
//===============================================================================================
//------------------------------- Возвращает количество ордеров --------------------------------+
//===============================================================================================
int NumberOfOrders( string sy= "" , int op=- 1 , int mn=- 1 ) {
int kp= 0 ;
if (sy== "" ) sy= Symbol ();
for ( int i= 0 ; i< OrdersTotal (); i++) {
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
if (( OrderSymbol ()==sy || sy== "" ) && (op< 0 || OrderType ()==op)) {
if ( OrderType ()> 1 && OrderType ()< 6 ) {
if (mn< 0 || OrderMagicNumber ()==mn) kp++;
}}}}
return (kp);
}
다음과 같이 시도하십시오.
SetOrder( NULL , OP_BUYSTOP ,Lts,sar,sar-SL* Point (),sar+TP* Point (),Magik_number);
return ( 0 );
}
if (NumberOfPositions(Symb,- 1 ,Magik_number)== 0 && NumberOfOrders(Symb,- 1 ,Magik_number)== 0 && Delta_Sell> High [ 1 ] && sar< Close [ 1 ]) {
SetOrder( NULL , OP_SELLSTOP ,Lts,sar,sar+SL* Point (),sar-TP* Point (),Magik_number);
return ( 0 );
}
//===============================================================================================
//------------------------------- Возвращает количество позиций --------------------------------+
//===============================================================================================
int NumberOfPositions( string sy= "" , int op=- 1 , int mn=- 1 ) {
int kp= 0 ;
if (sy== "" ) sy= Symbol ();
for ( int i= 0 ; i< OrdersTotal (); i++) {
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
if (( OrderSymbol ()==sy || sy== "" ) && (op< 0 || OrderType ()==op)) {
if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) {
if (mn< 0 || OrderMagicNumber ()==mn) kp++;
}}}}
return (kp);
}
//===============================================================================================
//------------------------------- Возвращает количество ордеров --------------------------------+
//===============================================================================================
int NumberOfOrders( string sy= "" , int op=- 1 , int mn=- 1 ) {
int kp= 0 ;
if (sy== "" ) sy= Symbol ();
for ( int i= 0 ; i< OrdersTotal (); i++) {
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
if (( OrderSymbol ()==sy || sy== "" ) && (op< 0 || OrderType ()==op)) {
if ( OrderType ()> 1 && OrderType ()< 6 ) {
if (mn< 0 || OrderMagicNumber ()==mn) kp++;
}}}}
return (kp);
}
기능 교체, 테스트는 정상입니다. 데모 거래에서 어떻게 되는지 봅시다. 그러나 어떤 이유로 내 경우에는 이러한 기능과 이러한 기능이 모두 동일한 작업을 수행하는 것 같습니다. 명령과 직위가 있는지 여부에 대한 질문에 답하십시오.
주문의 이중 설정이 반복되면 " SetOrder " 기능을 검토해야 합니다. 아마도 두 개의 요청을 제공할 것입니다. 첫 번째 요청 후에는 기능에서 나갈 수 없고 두 번째 요청을 보낼 수 있습니다.
그렇다면 항상 발생하지 않는 이유는 무엇입니까? 진드기 사이에 어떤 일이 발생합니까? 나는 이것에 능숙하지 않습니다.