절반 부지를 폐쇄합니다. - 페이지 13

 
미안하지만 그게 나에게 어떤 도움이 될지 전혀 이해가 되지 않습니다. for 루프와 호출된 void에서 어떤 일이 발생하는지는 중요하지 않습니다. 그것은 "int start()"에서 내가 처음으로 호출하는 것에 관한 것입니까?

위에서 붙여 넣은 것처럼 OrderTicket()이 무엇인지와 관계없이 주문을 절반으로하면 열려있는 "OP_BUY"가 계속해서 호출됩니까?

"in start()"와 위의 코드 내에서 이미 절반을 닫은 후 매번 "OP_BUY"를 계속 호출하지 않도록 코드를 작성하는 방법이 필요합니다.
 
DomGilberto :
미안하지만 그게 나에게 어떤 도움이 될지 전혀 이해가 되지 않습니다. for 루프와 호출된 void에서 어떤 일이 발생하는지는 중요하지 않습니다. 그것은 "int start()"에서 내가 처음으로 호출하는 것에 관한 것입니까?

위에서 붙여 넣은 것처럼 OrderTicket()이 무엇인지와 관계없이 주문을 절반으로하면 열려있는 "OP_BUY"가 계속해서 호출됩니까?

"in start()"와 위의 코드 내에서 이미 절반을 닫은 후 매번 "OP_BUY"를 계속 호출하지 않도록 코드를 작성하는 방법이 필요합니다.

호출되는 void는 start() 내에서 호출되는 함수일 뿐입니다. . . 코드가 start()에 직접 있는 것과 같습니다.

의사 코드:

OP_BUY를 찾아라

발견된 경우 - BE의 TP입니까?

TP가 BE에 없고 Bid >= 첫 번째 목표인 경우 TP를 BE로 이동하고 주문의 절반을 마감합니다.

TP가 BE에 있으면 아무 것도 하지 않음

 

네!!! RaptorUK 감사합니다!

죄송합니다, 저는 당신이 알고 있는 것만큼 바보가 아닙니다 ;) - 가끔 제가 새로운 것을 접할 때 상황이 약간 반복되어야 합니다...

나는 모든 사람들이 몇 페이지 전에 나에게 말하고 있다는 것을 깨달았습니다. 이해하지 못하거나 이해하지 못한 점에 대해 사과드립니다!


오른쪽! 우리는 마침내 절반을 마감하고 손익분기점으로 이동하고 같은 가격으로 계속되는 절반의 마감을 중단했습니다 :D! 그래서 거의 완벽에 가깝습니다!!

이제 내가 할 일은 본질적으로 다른 출구에 대해 이것을 복사하여 붙여넣고 몇 가지 규칙과 건초를 변경하는 것입니다! 당신의 삼촌 Bobs = 정렬되었습니다 :)

다른 사람들이 원할 경우 공평하게 사용할 수 있도록 여기에 모든 것을 게시할 것입니다. - 결국, 다른 사람들의 많은 인내 덕분에 코드를 작성할 수 있을 뿐만 아니라 이해할 수도 있습니다. :)

 
그것은 이상합니다. 때때로 백 테스트를 할 때 @ 1:1의 절반 닫기가 작동하지 않지만 더 짧은 백 테스트를 할 때 작동합니까? 이상한 ... 전략 테스터 가 쓰레기이기 때문입니까, 아니면 코드에 결함이 있습니까?
 
아 그리고 가격이 1:1의 첫 번째 목표에 도달하지 않았지만 손절매가 진입점보다 크다면 어떻게 하시겠습니까? 그땐 어떻게 룰을 만들지....
 
DomGilberto :
아 그리고 가격이 1:1의 첫 번째 목표에 도달하지 않았지만 손절매가 진입점보다 크다면 어떻게 하시겠습니까? 그땐 어떻게 룰을 만들지....


언제 손익분기점으로 수정하나요??

목표에 도달하지 못한 경우 OrderStopLoss()에서 거래가 마감됩니다.

 
deVries :


언제 손익분기점으로 수정하나요??

목표에 도달하지 못한 경우 OrderStopLoss()에서 거래가 마감됩니다.


나는 OrderClose()를 사용하여 절반을 닫고 그것이 true를 반환하면 손익분기점을 손익분기점으로 이동하기 위해 breakeven void를 호출합니다. 그렇게 하면 로트의 나머지 미결 포지션이 계속해서 청산되지 않습니다. 왜냐하면 포지션이 손익분기점으로 이동했다면 고정된 이익실현 가격에 도달할 때까지 해당 포지션을 더 이상 청산하지 않을 것이라고 썼기 때문입니다. 1:2.

그러나 일부 거래는 거래가 첫 번째 목표에 도달하기 전에도 진입과 같거나 손익분기점을 넘어 절반의 마감을 촉발하지 않습니다...

또한 일부 거래는 출구에서 절반을 벗어난 다음 손익분기점으로 이동하여 완벽하게 작동합니다.... 일부 거래는 작동해야 하는데 작동하지 않습니까? 이것은 열악한 데이터와 전략 테스터 의 결함 때문일 수 있습니까? 아니면 내 코드에 불일치가 있습니까?

아 그리고 나는 여전히 OrderModify 1을 받고 있다 - 빌어먹을 짜증나는...

 

부품을 닫고 SL을 수정하여 손익분기점을 넘긴 후 주문을 어떻게 식별하고 있습니까? 원래 티켓 번호를 사용할 수 없다는 것을 알고 계십니까? 주문을 종료하면 원래 티켓 번호가 닫힙니다. 나머지 부분에는 새로운 티켓 번호가 부여됩니다. 이를 식별하는 한 가지 방법은 부품을 닫기 전에 OrderOpenTime()을 가져오는 것입니다. 부분적으로 주문을 종료한 후 나머지 부분은 새 티켓 번호를 받지만 OrderOpenTime()은 이전과 동일합니다.

또한 해당 OrderOpenTime()을 사용하여 이를 식별하고 부분적으로 계속해서 닫히는 것을 방지할 수 있습니다.

또는 부품을 닫기 전에 수정할 수 있습니다. 주문의 나머지 부분은 수정된 SL 또는 TP를 유지합니다.

여기 테스트가 있습니다. 0.09에서 개장 0.07 종가 0.02

티켓 번호는 변경되지만 오픈 시간 은 동일하게 유지됩니다.

23:42:48 2013.08.01 11:28 SDCMegaTrend EURUSD,M1: 오픈 #14 1.3240에서 0.09 EURUSD 매수 sl: 1.3037 tp: 1.3737 ok
23:42:48 2013.08.01 12:26 SDCMegaTrend EURUSD,M1: 마감 #14 1.3240에 0.07 EURUSD 매수 sl: 1.3037 tp: 1.3737 at price 1.3253
23:42:48 2013.08.01 12:26 SDCMegaTrend EURUSD,M1: 알림: 티켓 14 주문 마감 전 시간: 1375356521
23:42:48 2013.08.01 12:26 SDCMegaTrend EURUSD,M1: 경고: 티켓 15 주문오픈타임: 1375356521
23:42:48 2013.08.01 12:45 SDCMegaTrend EURUSD,M1: #15 종가 0.02 EURUSD에서 1.3240 sl: 1.3037 tp: 1.3737 가격 1.3242

 
SDC :

부품을 닫고 SL을 수정하여 손익분기점을 넘긴 후 주문을 어떻게 식별하고 있습니까? 원래 티켓 번호를 사용할 수 없다는 것을 알고 계십니까? 주문을 종료하면 원래 티켓 번호가 닫힙니다. 나머지 부분에는 새로운 티켓 번호가 부여됩니다. 이를 식별하는 한 가지 방법은 부품을 닫기 전에 OrderOpenTime()을 가져오는 것입니다. 부분적으로 주문을 종료한 후 나머지 부분은 새 티켓 번호를 받지만 OrderOpenTime()은 이전과 동일합니다.

또한 해당 OrderOpenTime()을 사용하여 이를 식별하고 부분적으로 계속해서 닫히는 것을 방지할 수 있습니다.

또는 부품을 닫기 전에 수정할 수 있습니다. 주문의 나머지 부분은 수정된 SL 또는 TP를 유지합니다.

여기 테스트가 있습니다. 0.09에서 개장 0.07 종가 0.02

티켓 번호는 변경되지만 오픈 시간은 동일하게 유지됩니다.

23:42:48 2013.08.01 11:28 SDCMegaTrend EURUSD,M1: 오픈 #14 1.3240에서 0.09 EURUSD 매수 sl: 1.3037 tp: 1.3737 ok
23:42:48 2013.08.01 12:26 SDCMegaTrend EURUSD,M1: 마감 #14 1.3240에 0.07 EURUSD 매수 sl: 1.3037 tp: 1.3737 at price 1.3253
23:42:48 2013.08.01 12:26 SDCMegaTrend EURUSD,M1: 알림: 티켓 14 주문 마감 전 시간: 1375356521
23:42:48 2013.08.01 12:26 SDCMegaTrend EURUSD,M1: 경고: 티켓 15 주문오픈타임: 1375356521
23:42:48 2013.08.01 12:45 SDCMegaTrend EURUSD,M1: #15 종가 0.02 EURUSD에서 1.3240 sl: 1.3037 tp: 1.3737 가격 1.3242


아 - 굉장합니다. 감사합니다. 나는 OrderOpenTime()에 대해 완전히 잊어버렸습니다. 그것은 그것을 하는 좋은 방법입니다! 팁 주셔서 감사합니다. 지금 실험해 보겠습니다.

이전 게시물에 이어 지금은 훨씬 더 원활하게 실행할 수 있었습니다. OrderModify 오류 1은 이제 거의 나타나지 않습니다. 이제 더 원활하게 작동하는 것 같습니다.

유일한 문제는 손절매 가 OrderEntry()보다 >=인 거래가 있는 경우(롱에 대해 이야기한다고 가정) 마감에 대한 주요 기준 때문에 주문의 절반을 마감하지 않는다는 것입니다. 절반은 충족되지 않았습니다.

여기에 있는 이 코드는 로트의 절반을 청산하고 동일한 가격으로 계속해서 절반을 청산하는 것을 중지하는 코드입니다. :



    

int start()
{

   if (OpenOrdersThisPair( Symbol ())> 0 ) //If there is a trade open = do below, which ever is applicable.
      {
       if (OrderType()==OP_BUY && OrderOpenPrice() > OrderStopLoss())
         {
         CloseHalfOrder(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
         }
      
       if (OrderType()==OP_SELL && OrderOpenPrice() < OrderStopLoss())
         {
         CloseHalfOrder1(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
         }   
      } 
}
OrderOpenTime() 함수를 통합하여 모든 거래가 1:1로 반 로트를 마감하고 스톱 IS >= OrderOpen()까지 누락되지 않도록 하려면 어떻게 해야 합니까?
 

모든 주문이 부분적으로 마감되었는지 확인할 수 있는 몇 가지 방법이 있습니다. 내가 가장 좋아하는 방법은 부분적으로 마감되었을 때 TP를 한 핍씩 수정하는 것입니다.

예를 들어 100핍의 TP가 필요하므로 99핍의 TP로 주문을 엽니다. 테이크 프로핏 에 도달하기 전에 내 주문이 40핍에서 마감될 것임을 알고 있습니다. 그런 일이 발생하면 TP를 100핍으로 수정합니다. 따라서 이익이 40핍 이상이고 TP가 100핍 미만인 모든 주문은 부분 마감되어야 합니다. TP > 99핍인 모든 주문은 이미 일부 마감되었습니다. 그런 식으로 하면 SL이 무엇인지는 중요하지 않습니다. 계산하기 전에 모든 주문 가격 두 배를 정규화했는지 확인하십시오.