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

 
TG :
예, 마지막 질문이지만 질문의 본질은 이전 주문이 마이너스로 마감되었고 함수에 표시할 시간이 없으며 먼저 주문이 열리고 몇 개의 틱을 통과한 다음에만 함수가 표시된다는 것입니다. 마지막 손실이지만 주문이 이미 열렸습니다. 그것을 극복하는 방법?
유효성 검사로 코드 스켈레톤을 작성했습니다.
 
다시 해봤어 확인할 시간이 없다고 먼저 무스가 없는 것처럼 지나가고 거래가 열리면 그 무스가
 
artmedia70 :

보류 중인 주문 매개변수인 만료를 사용하지 않는 이유는 무엇입니까?

물론 이 매개변수를 사용할 수 없을 가능성이 있습니다.

일부 거래 서버는 보류 중인 주문 만료 날짜의 사용을 금지할 수 있습니다. 이 경우 만료 매개변수에 0이 아닌 값을 설정하려고 하면 오류 147(ERR_TRADE_EXPIRATION_DENIED)이 생성됩니다.

그럼 당연히 그냥...

조언해주신대로 라인을 변경했더니 상담원이 작동을 멈췄습니다...

ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+PriceDistance*Point,3,Ask+PriceDistance*Point-StopLoss*Point,Ask+PriceDistance*Point+TakeProfit*Point,"PD",1, TimeCurrent()+ 10*60 , 녹색);

그러나 나는 금지가 없다는 것을 확실히 알고 있습니다.

무엇이 잘못되었을 수 있는지 알려주세요.

 
TG :
다시 해봤어 확인할 시간이 없다고 처음에는 무스가 없는 것처럼 지나가다가 거래가 열리면 무스가
기적은 일어나지 않습니다. 당신은 텔레파시 ...
 
OlegArH :

조언해주신대로 라인을 변경했더니 상담원이 작동을 멈췄습니다...

ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+PriceDistance*Point,3,Ask+PriceDistance*Point-StopLoss*Point,Ask+PriceDistance*Point+TakeProfit*Point,"PD",1,TimeCurrent()+ 10*60, 녹색);

그러나 나는 금지가 없다는 것을 확실히 알고 있습니다.

무엇이 잘못되었을 수 있는지 알려주세요.

그는 거의 일을 멈추지 않았지만 당신의 기준은 아마도 절름발이 일 것입니다. 코드가 없으면 어드바이저가 일하지 않는 이유를 생각하기 어렵습니다...
 
artmedia70 :
그는 일을 거의 멈추지 않았지만 당신의 기준은 아마도 절름발이일 것입니다. 코드가 없으면 어드바이저가 일하지 않는 이유를 생각하기 어렵습니다...

여기까지 내가 가진 모든 것입니다:

extern double 이익실현 = 50;
외부 이중 StopLoss=100;
extern 더블 PriceDistance = 50;
extern 이중 로트 = 1;
extern 이중 후행 정지 = 50;
//+----------------------------------------------- --------------------+
//| |
//+----------------------------------------------- --------------------+
정수 시작()
{
int cnt, 티켓, 합계;

총계=주문총계();
if(총<1)
{
ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+PriceDistance*Point,3,Ask+PriceDistance*Point-StopLoss*Point,Ask+PriceDistance*Point+TakeProfit*Point,"PD",1,0,Green) ;
수면(10000);
ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-PriceDistance*Point,3,Bid-PriceDistance*Point+StopLoss*Point,Bid-PriceDistance*Point-TakeProfit*Point,"PD",2,0,Red) ;
}

for(cnt=0;cnt<전체;cnt++)
{
주문 선택(cnt, SELECT_BY_POS, MODE_TRADES );
if(OrderType()<=OP_SELL && // 열린 위치 확인
OrderSymbol()==Symbol()) // 기호 확인
{
if(OrderType()==OP_BUY) // 롱 포지션 오픈
{
// 닫아야 하나?
if(1!=1)
{
OrderClose(OrderTicket(),OrderLots(), 입찰, 3, 보라색); // 닫기 위치
리턴(0); // 출구
}
// 후행 정지 확인
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
리턴(0);
}
}
}
}
else // 숏 포지션으로 이동
{
// 닫아야 하나?
if(1!=1)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,바이올렛); // 닫기 위치
리턴(0); // 출구
}
// 후행 정지 확인
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
리턴(0);
}
}
}
}
}
}
반환(0);
}

// 끝.

이런 형태로 쟁기질을 하고.... 하지만, 따라서 무기한 거래를 연다, 이 새끼야.

미리 감사합니다!

 
OlegArH :

여기까지 내가 가진 모든 것입니다:

extern double 이익실현 = 50;
외부 이중 StopLoss=100;
extern 더블 PriceDistance = 50;
extern 이중 로트 = 1;
extern 이중 후행 정지 = 50;
//+----------------------------------------------- --------------------+
//| |
//+----------------------------------------------- --------------------+
정수 시작()
{
int cnt, 티켓, 합계;

총계=주문총계();
if(총<1)
{
ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+PriceDistance*Point,3,Ask+PriceDistance*Point-StopLoss*Point,Ask+PriceDistance*Point+TakeProfit*Point,"PD",1,0,Green) ;
수면(10000);
ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-PriceDistance*Point,3,Bid-PriceDistance*Point+StopLoss*Point,Bid-PriceDistance*Point-TakeProfit*Point,"PD",2,0,Red) ;
}

for(cnt=0;cnt<전체;cnt++)
{
주문 선택(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // 열린 위치 확인
OrderSymbol()==Symbol()) // 기호 확인
{
if(OrderType()==OP_BUY) // 롱 포지션 오픈
{
// 닫아야 하나?
if(1!=1)
{
OrderClose(OrderTicket(),OrderLots(), 입찰, 3, 보라색); // 닫기 위치
리턴(0); // 출구
}
// 후행 정지 확인
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
리턴(0);
}
}
}
}
else // 숏 포지션으로 이동
{
// 닫아야 하나?
if(1!=1)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,바이올렛); // 닫기 위치
리턴(0); // 출구
}
// 후행 정지 확인
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
리턴(0);
}
}
}
}
}
}
리턴(0);
}

// 끝.

이런 형태로 쟁기질을 하고.... 하지만, 따라서 무기한 거래를 연다, 이 새끼야.

미리 감사합니다!


코드를 붙여넣는 방법을 배우십시오 . 모두 읽으십시오.
 
Roman. :

코드를 붙여넣는 방법을 배우십시오 . 모두 읽으십시오.

로만님, 답변 감사합니다!
나는 할 일이 조금 있습니다. 로봇이 자동으로 열리는 순간부터 잠시 동안 거래를 열도록 강제하는 것입니다.

예를 들어 로봇이 PENDING 거래를 열면 자동으로 만료 시간을 현재 거래에서 +600초로 설정하면 끝입니다....

동시에 내가 "트레이닝"하는 DC는 가격이 10 포인트 + 시작 가격에 가까워지면 딜레이 수정에 제한이 있기 때문에 그가 직접 삭제할 때 옵션이 작동하지 않습니다. 아직 열리지 않은 주문.

또한 결론은 주문이 이미 열려 있는 경우 삭제할 필요가 없으며 "실행"되고 "죽음"과 함께 붕괴되도록 해야 한다는 것입니다. 그리고 orderdelite를 설정하면 이 함수는 이미 실행된 주문도 닫습니다. (?)

교과서에 관해서는, 글쎄, 나는 본질적으로 프로그래머가 아니며, 밝게 표현 된 휴머니스트입니다. 나는 그림을 그리고, 조각하고, 작곡하고 다른 어떤 이유로 갇히지 않습니다!)))

솔직히 들어가려고 했다. 일부는 왔는데 뭔가 안맞아요...

내가 여기 있는 이유는....

 
OlegArH :

로만님, 답변 감사합니다!
나는 할 일이 조금 있습니다. 로봇이 자동으로 열리는 순간부터 잠시 동안 거래를 열도록 강제하는 것입니다.

예를 들어 로봇이 PENDING 거래를 열면 자동으로 만료 시간을 현재 거래에서 +600초로 설정하면 끝입니다....

동시에 내가 "트레이닝"하는 DC는 가격이 10 포인트 + 시작 가격에 가까워지면 딜레이 수정에 제한이 있기 때문에 그가 직접 삭제할 때 옵션이 작동하지 않습니다. 아직 열리지 않은 주문.

또한 결론은 주문이 이미 열려 있는 경우 삭제할 필요가 없으며 "실행"되고 "죽음"과 함께 붕괴되도록 해야 한다는 것입니다. 그리고 orderdelite를 설정하면 이 함수는 이미 실행된 주문도 닫습니다. (?)

교과서에 관해서는, 글쎄, 나는 본질적으로 프로그래머가 아니며, 밝게 표현 된 휴머니스트입니다. 나는 그림을 그리고, 조각하고, 작곡하고 다른 어떤 이유로 갇히지 않습니다!)))

솔직히 들어가려고 했다. 일부는 왔는데 뭔가 안맞아요...

내가 여기 있는 이유는....

여기에 쓴 내용을 말로 설명하십시오.

 extern double TakeProfit = 50 ;
extern double StopLoss= 100 ;
extern double PriceDistance = 50 ;
extern double Lots = 1 ;
extern double TrailingStop = 50 ;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
   int cnt, ticket, total;

   total= OrdersTotal ();
   if (total< 1 ) {
      ticket= OrderSend ( Symbol (),OP_BUYSTOP,Lots,Ask+PriceDistance* Point , 3 ,Ask+PriceDistance* Point -StopLoss* Point ,
                       Ask+PriceDistance* Point +TakeProfit* Point , "PD" , 1 , 0 , Green );
       Sleep ( 10000 );
      ticket= OrderSend ( Symbol (),OP_SELLSTOP,Lots,Bid-PriceDistance* Point , 3 ,Bid-PriceDistance* Point +StopLoss* Point ,
                       Bid-PriceDistance* Point -TakeProfit* Point , "PD" , 2 , 0 , Red );
      }

   for (cnt= 0 ;cnt<total;cnt++) {
       OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
       if ( OrderType ()<=OP_SELL &&                         // check for opened position
         OrderSymbol ()== Symbol ()) {                       // check for symbol
         if ( OrderType ()==OP_BUY) {                       // long position is opened
             if ( 1 != 1 ) {
               OrderClose ( OrderTicket (), OrderLots (),Bid, 3 , Violet ); // close position
               return ( 0 );                                 // exit
               }
                                                         // check for trailing stop
             if (TrailingStop> 0 ) {
               if (Bid- OrderOpenPrice ()> Point *TrailingStop) {
                   if ( OrderStopLoss ()<Bid- Point *TrailingStop) {
                     OrderModify ( OrderTicket (), OrderOpenPrice (),Bid- Point *TrailingStop, OrderTakeProfit (), 0 , Green );
                     return ( 0 );
                     }
                  }
               }
            }
         else {                                           // go to short position
                                                         // should it be closed?
             if ( 1 != 1 ) {
               OrderClose ( OrderTicket (), OrderLots (),Ask, 3 , Violet ); // close position
               return ( 0 );                                 // exit
               }
                                                         // check for trailing stop
             if (TrailingStop> 0 ) {
               if (( OrderOpenPrice ()-Ask)>( Point *TrailingStop)) {
                   if (( OrderStopLoss ()>(Ask+ Point *TrailingStop)) || ( OrderStopLoss ()== 0 )) {
                     OrderModify ( OrderTicket (), OrderOpenPrice (),Ask+ Point *TrailingStop, OrderTakeProfit (), 0 , Red );
                     return ( 0 );
                     }
                  }
               }
            }
         }
      }
   return ( 0 );
}

개인적으로, 첫눈에 당신의 아이디어는 퍼즐로 판명되었습니다. 단위가 1과 같지 않으면 주문을 닫으십시오 ...

그 뒤로 나머지는 안봤음...

추신하고 시도하지 마십시오, 한주기에 일반 Expert Advisor를 작성하는 것이 가능하다고 생각조차하지 마십시오 ...

 
OlegArH :

...그리고 orderdelite를 설정하면 이 함수는 이미 실행된 주문도 닫습니다. (?)

...


아니요. 서로를 주의 깊게 알아 가십시오 . 트리거된 지연 - 시장 1이 됨 - 이 기능은 그에게 어떤 식으로든 관련되지 않습니다.

"이전에 접수된 보류 주문 을 삭제합니다. 함수가 성공적으로 완료되면 TRUE를 반환합니다. FALSE를 반환합니다.

기능이 실패할 때. 오류에 대한 정보를 얻으려면 GetLastError() 함수를 호출해야 합니다."