공개 거래 확인 문제 - 페이지 7

 
dazamate :
네, 댓글을 다시 읽어보니 제가 한 일은 잘못되었습니다.
시간[0]을 사용해야 합니까?


예, 또는 . . . .

tradeopened = TimeHour ( TimeCurrent ());
 
OrderDelete ( OrderTicket ( ) );  

그것은 랩터를 고쳤습니다.


------> http://clip2net.com/s/14aYs

 
dazamate :

그것은 랩터를 고쳤습니다.


------> http://clip2net.com/s/14aYs

LOL, 도움이 되었다니 기쁩니다. . . :-)
 

당신은 많은 도움이되었습니다. 마침내 나는 이제 전략 조정을 시작할 수있는 상태에서 ea를 갖게되었습니다. 정말 감사합니다만 마지막으로 죄송하다는 말씀을 들으셨을 것 같은데요 하하


WHRoeder에게도 큰 감사를 드립니다.
 

Sooo.. 끝났다고 생각했잖아 lol


이동 평균 값에서 손절매를 추적하는 일부 코드를 추가했습니다. 이 코드는 매수 거래에서는 잘 작동하지만 매도 거래에서는 작동하지 않습니다. 나는 당신이 할 수있는 아무것도 찾을 수 없습니다.


 // Trailing Stop Code 

   if (Tradeopen()==true && emastoptrail==TRUE)                                  // Trades are open and Trailing stop feature is turned on
    {
       for ( int tnumber2 = OrdersTotal ()- 1 ; tnumber2 >= 0 ; tnumber2--)                   //scan through open orders
       {
         if ( OrderSelect (tnumber2, SELECT_BY_POS) && 
             OrderMagicNumber ()==Mnumber3)                                                 // The orders magic number is the same as the magic number used the profit trade
            {                                          
          
             if ( OrderType ()==OP_BUY && ( iMA ( Symbol (), 60 , ematrailperiod, 0 , 1 , 0 , 1 ) > OrderStopLoss () ))       // The stop loss is less than the moving average value
          
               {
                 OrderModify ( OrderTicket (), OrderOpenPrice (), iMA ( Symbol (), 60 , ematrailperiod, 0 , 1 , 0 , 1 ), OrderTakeProfit (), 0 );   // Modify Stop to MA value
               }
            
             if ( OrderType ()==OP_SELL && ( iMA ( Symbol (), 60 , ematrailperiod, 0 , 1 , 0 , 1 ) < OrderStopLoss () ))       // The stop loss is more than the moving average value
          
               {
                 OrderModify ( OrderTicket (), OrderOpenPrice (), iMA ( Symbol (), 60 , ematrailperiod, 0 , 1 , 0 , 1 ), OrderTakeProfit (), 0 );   // Modify Stop to MA value
               }
            }
       }
     }
 

후행 중지 코드는 문제가 아닐 수 있습니다. 일정 시간이 지나면 대기 주문을 삭제 하는 코드에 문제가 있습니다 ...


 // DELETE PENDING ORDERS THAT HAVE NOT BEEN TRIGGERED WITHIN ' int = pendinglimit'

   if (( iBarShift ( Symbol (), 60 ,tradeopened)>pendinglimit) && Tradeopen()==true)               // Check to see if pending orders have expired
     {
         for ( int tnumber = OrdersTotal ()- 1 ; tnumber >= 0 ; tnumber--)                   //scan through open orders
        {
           if ( OrderSelect (tnumber, SELECT_BY_POS) &&   
             (( OrderType ()==OP_BUYSTOP)|| ( OrderType ()== OP_SELLSTOP)) &&               // The order selected is either a pending buy on stop order or a buy on sell order
             (( OrderMagicNumber ()== Mnumber1) || ( OrderMagicNumber ()==Mnumber3)))       // The orders magic number is the same as the magic number used in this ea
          
               {
                 OrderDelete ( OrderTicket ( ) );                                             // Delete it
               }
        }
       
     }

각 거래가 열린 후 나는 이것을 실행합니다 ...

tradeopened = TimeHour ( TimeCurrent ());

나는 댓글을 ...

( iBarShift ( Symbol (), 60 ,tradeopened)

그리고 그것은 1000에서 시작하여 각각의 새로운 막대를 계속 계산하고 실행할 때 재설정되지 않습니다 ...

tradeopened = TimeHour ( TimeCurrent ());


이렇게 하면 보류 중인 주문을 삭제하는 검사가 항상 true가 되고 다음 막대 내에서 거래가 트리거되지 않으면 보류 중인 주문이 즉시 삭제됩니다. -__-

아하하하하하하하하하하하하하하하하하하하하하하하

 

고쳤을 수도 있을 것 같은데....

거래를 삭제하기 위해 한 번 더 확인하도록 변경하여 보류 중인 주문 을 열 수 있는 최대 허용 시간으로 시간을 되돌리고 거래가 열린 시간과 일치하는지 확인하도록 변경했습니다. :)

   for ( int tnumber = OrdersTotal ()- 1 ; tnumber >= 0 ; tnumber--)                   //scan through open orders
        {
           if ( OrderSelect (tnumber, SELECT_BY_POS) &&   
             (( OrderType ()==OP_BUYSTOP)|| ( OrderType ()== OP_SELLSTOP)) &&               // The order selected is either a pending buy on stop order or a buy on sell order
             (( OrderMagicNumber ()== Mnumber1) || ( OrderMagicNumber ()==Mnumber3)) &&       // The orders magic number is the same as the magic number used in this ea
              ( iTime (   Symbol (), 60 , pendinglimit) == tradeopened))
               {
                 OrderDelete ( OrderTicket () );                                             // Delete it
               }
        }
 
dazamate :

고쳤을 수도 있을 것 같은데....

거래를 삭제하기 위해 한 번 더 확인하도록 변경하여 보류 중인 주문을 열 수 있는 최대 허용 시간으로 시간을 되돌리고 거래가 열린 시간과 일치하는지 확인하도록 변경했습니다. :)

당신은 내가 상상했던 것과 거의 같은 것을 가지고 있습니다. . . .

tradeopened 변수를 사용하는 데 문제가 있습니다. . . 열린 거래가 있고 EA가 종료되면 해당 변수의 정보를 잃게 됩니다. . . 이것을 OrderOpenTime ()으로 대체하고 다음과 같이 하십시오. . .

 for ( int tnumber = OrdersTotal ()- 1 ; tnumber >= 0 ; tnumber--)                   //scan through open orders
        {
           if ( OrderSelect (tnumber, SELECT_BY_POS) &&   
             (( OrderType ()==OP_BUYSTOP)|| ( OrderType ()== OP_SELLSTOP)) &&               // The order selected is either a pending buy on stop order or a buy on sell order
             (( OrderMagicNumber ()== Mnumber1) || ( OrderMagicNumber ()==Mnumber3)) &&       // The orders magic number is the same as the magic number used in this ea

              ( iBarShift ( OrderSymbol (), PERIOD_H1 , OrderOpenTime ()) - pendinglimit) <= 0 ));     //  <----------- this . . .

               {
                 OrderDelete ( OrderTicket () );                                             // Delete it
               }
        }
 
유일한 문제는 이전에 ibarshift 기능을 사용하고 있었고 어떤 이유로 1000+를 출력하고 있다는 것입니다.
 

또한 랩터 나는 당신의 두뇌를 선택해야합니다.... 다시 :)


이동 평균 값을 도 단위로 변환하는 방법이 있습니까? 수학 포럼을 찾을 수 있는지 알아보기 위해 지금 인터넷 검색을 하고 있습니다. 그렇게하면 옆으로 시장을 감지하고 추세를 정리하고 정리하는 것이 쉬울 것입니다.

사유: