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

 
"if(FirstTarget_Buy == Bid)"를 넣으면? (물론 작동하지 않기 때문에 그렇지는 않습니다.)
 
DomGilberto :
"if(FirstTarget_Buy == Bid)"를 넣으면? (물론 작동하지 않기 때문에 그렇지는 않습니다.)

또는 같은 것. . .

 if (Bid >= FirstTarget_Buy + ( Point / 2 ) )
   {
   //  close the Order
   }

. . . 두 배를 비교하는 문제를 염두에 두십시오(가격이 != 가격이 될 수 있습니까? )

또한 스프레드에 대해 생각해야 하며 대상이 스프레드를 포함하는지 아니면 제외하는지에 대해 생각해야 합니다.

 

(한숨) ok - 도와줘서 고마워 Raptor! 답답해 지고 있습니다. 맹세컨대 이 시간이 많이 소요될 필요는 없습니다... 위의 If 문이 작동하지 않을 것입니다.

난 솔직히 끝장이야...

위의 "if" 문(이 경우 아무 일도 일어나지 않음)을 포함하지 않고 "Bid"에 마감 주문을 넣으면 여러 반쪽(반의 절반 등)을 닫을 것입니다. - 나는 일할 수 없습니다. 하지만 이 절반을 마감할 때를 아는 방법은...

더 많은 제안을 해주시면 감사하겠습니다. 도움을 주셔서 감사합니다!

 
DomGilberto :

(한숨) 알았어 - 도와줘서 고마워 랩터! 답답해 지고 있습니다. 맹세컨데 이 시간이 많이 소요될 필요는 없습니다... 위의 If 문은 작동하지 않습니다.

나는 솔직히 말해서...

위의 "if" 문을 포함하지 않고(이 경우 아무 일도 발생하지 않음) "Bid"에 마감 주문을 넣으면 여러 반쪽(반의 절반 등)을 닫을 것입니다. - 나는 일할 수 없습니다. 하지만 이 절반을 마감할 때를 아는 방법은...

충족해야 하는 가격 조건을 지정하지 않으면 가능한 한 빨리 주문의 절반만 마감되고 Bid 는 항상 Bid이며 OP_BUY를 마감하는 데 유효합니다.

if 문은 작동합니다. . . 이유를 찾지 못하면 그 앞에 Print() 를 추가하십시오. . . 그리고 그 후.

 Print ( "Current Bid: " , DoubleToStr(Bid, Digits ), " FirstTarget_Buy: " , DoubleToStr(FirstTarget_Buy, Digits )  );

if (Bid >= FirstTarget_Buy + ( Point / 2 ) )
   {
   Print ( "Bid >= FirstTarget_Buy - Current Bid: " , DoubleToStr(Bid, Digits ), " FirstTarget_Buy: " , DoubleToStr(FirstTarget_Buy, Digits )  );

   //  close the Order
   }

걱정하지 마세요. 더 답답해집니다. . . 코드가 원하는 대로 작동하고 전략 테스터에서 실행하고 동전 던지기만큼 좋은 것을 발견할 때

 
알았어 고마워! 가끔 ST를 실행한 다음 중지했는데 저널에 아무 것도 인쇄되지 않는 이유를 알려주실 수 있나요?

" 코드가 원하는 대로 작동하고 전략 테스터 에서 실행하여 동전 던지기만큼 좋은 것을 발견할 때 "

네 상상할 수 밖에 없습니다! 나는 실제로 약 6페이지(얼마나 많은 줄인지 확실하지 않음)를 작성했습니다. 코드 - 이 중요한 부분을 추가하고 있습니다... 그 중 하나는 1:1에서 50%를 마감하고 손익분기점으로 이동하는 것입니다... 하지만 로트 마감은 직관적이지 않습니다(제가 생각하는 한)
 
DomGilberto :
알았어 고마워! 가끔 ST를 실행한 다음 중지했는데 저널에 아무 것도 인쇄되지 않는 이유를 알려주실 수 있나요?

올바른 저널 탭을 보고 있습니까? 두 가지가있다 . . . 전략 테스터 창에서 봐야 하는 것과 전문가 탭 옆에서 봐야 하는 것. 가장 좋은 방법은 tester\logs에 저장된 로그 파일을 보는 것입니다.

 
2013.08 . 01 13 : 44 : 27      2013.02 . 01 15 : 00   trendfishing_play_ground EURUSD,H1: FirstTarget_Buy: 1.37931
2013.08 . 01 13 : 44 : 27      2013.02 . 01 15 : 00   trendfishing_play_ground EURUSD,H1: Order Lots Open = 0.18
2013.08 . 01 13 : 44 : 27      2013.02 . 01 15 : 00   trendfishing_play_ground EURUSD,H1: Order Ticker Number = 10
2013.08 . 01 13 : 44 : 27      2013.02 . 01 15 : 00   trendfishing_play_ground EURUSD,H1: The Lots to close is: 0.09000
2013.08 . 01 13 : 44 : 27      2013.02 . 01 15 : 00   trendfishing_play_ground EURUSD,H1: The Lotstep is: 0.01000
2013.08 . 01 13 : 44 : 27      2013.02 . 01 15 : 00   trendfishing_play_ground EURUSD,H1: The minimum lots are: 0.01000
   if(OrderType()==OP_BUY && Bid >= FirstTarget_Buy +(Point / 2)){
                  Print("Bid >= FirstTarget_Buy - Current Bid: ", DoubleToStr(Bid, Digits), " FirstTarget_Buy: ", DoubleToStr(FirstTarget_Buy, Digits)  );
                  bool Close_Half_Order_Buy = OrderClose(OrderTicket(),half,Bid,3,CLR_NONE);
                  if(Close_Half_Order_Buy!=TRUE)Print("Close_Half_Order_Buy Last Error = ", GetLastError());
                  }
완벽합니다. firsttarget_buy가 정확히 맞습니다. 닫을 로트의 수는 정확히 맞습니다. 이것은 모두 보류 중인 주문에 대해 인쇄됩니다. 그러나 올바르게 계산 했는데도 해당 가격에 닫히지 않습니까? "OP_BUY"일 때 선택합니다... 이런 질문을 해서 죄송합니다만, 왜 이것이 작동하지 않는지 모르겠습니다.
 
DomGilberto :
완벽합니다. firsttarget_buy가 정확히 맞습니다. 닫을 로트의 수는 정확히 맞습니다. 이것은 모두 보류 중인 주문에 대해 인쇄됩니다. 그러나 올바르게 계산했는데도 해당 가격으로 마감되지 않습니까? "OP_BUY"일 때 선택합니다... 이런 질문을 해서 죄송합니다만, 왜 이것이 작동하지 않는지 모르겠습니다.

if( . . . . 전에 인쇄를 추가하지 않았습니다.

 Print ( "Current Bid: " , DoubleToStr(Bid, Digits ), " FirstTarget_Buy: " , DoubleToStr(FirstTarget_Buy, Digits )  );   //  add this line too . . .

if (Bid >= FirstTarget_Buy + ( Point / 2 ) )
   {
   Print ( "Bid >= FirstTarget_Buy - Current Bid: " , DoubleToStr(Bid, Digits ), " FirstTarget_Buy: " , DoubleToStr(FirstTarget_Buy, Digits )  );

   //  close the Order
   }

. . . 그것 없이 입찰가가 FirstTarget_buy보다 크거나 같다는 것을 어떻게 알 수 있습니까? 그렇지 않은 경우 if() 는 true가 아니며 Order는 부분적으로 닫히지 않습니다. . . 그리고 아직 주문이 보류 중인 경우 OP_BUY가 아닙니다.

 
2013.08 . 01 14 : 19 : 36      2013.02 . 01 15 : 00   trendfishing_play_ground EURUSD,H1: Current Bid: 1.35972 FirstTarget_Buy: 1.37931
2013.08 . 01 14 : 19 : 36      2013.02 . 01 15 : 00   trendfishing_play_ground EURUSD,H1: FirstTarget_Buy: 1.37931
2013.08 . 01 14 : 19 : 36      2013.02 . 01 15 : 00   trendfishing_play_ground EURUSD,H1: Order Lots Open = 0.18
2013.08 . 01 14 : 19 : 36      2013.02 . 01 15 : 00   trendfishing_play_ground EURUSD,H1: Order Ticker Number = 9
2013.08 . 01 14 : 19 : 36      2013.02 . 01 15 : 00   trendfishing_play_ground EURUSD,H1: The Lots to close is: 0.09000
2013.08 . 01 14 : 19 : 36      2013.02 . 01 15 : 00   trendfishing_play_ground EURUSD,H1: The Lotstep is: 0.01000
2013.08 . 01 14 : 19 : 36      2013.02 . 01 15 : 00   trendfishing_play_ground EURUSD,H1: The minimum lots are: 0.01000

입찰가가 " FirstTarget_buy" 이상인 경우를 알 수 있습니까? 나는 2:1 보상 비율로 이익을 취하는 목표까지 실행하는 거래를 테스트합니다... 그래서 1:1 보상으로 간다는 것을 압니다 - 랏을 반으로 줄여야 하는 곳... 모든 인쇄 기능 은 다음에서 인쇄됩니다. 보류 중인 주문(즉, 보류 중인 주문이 있고 테스트를 중지하면 모든 인쇄물이 표시됩니다. 그러나 보류 중인 주문 중 하나가 실행된 후 테스트를 중지하면 "인쇄"라는 측면에서 아무 것도 인쇄되지 않습니다. 일기장에서?)

내가 이것에 매달렸다는 것이 믿기지 않습니다. 이것이 지금까지 가장 큰 도전이 되고 있습니다. 그러나 저는 훨씬 더 복잡한 다른 것들이 있다고 느낍니다...

(업데이트: "for" 루프를 통해 가격을 끌어오기 위해 틱 단위로 입찰가를 모니터링해야 한다고 가정하고 있습니까?

"IF()" 문이 참이 되려면 입찰가가 결국 내 " FirstTarget_buy"와 같습니까?

 
DomGilberto :

입찰가가 " FirstTarget_buy" 이상인 경우를 알 수 있습니까? 나는 2:1 보상 비율로 이익을 취하는 목표까지 실행하는 거래를 테스트합니다... 그래서 1:1 보상으로 간다는 것을 압니다 - 랏을 반으로 줄여야 하는 곳... 모든 인쇄 기능은 다음에서 인쇄됩니다. 보류 중인 주문(즉, 보류 중인 주문이 있고 테스트를 중지하면 모든 인쇄물이 표시됩니다. 그러나 보류 중인 주문 중 하나가 실행된 후 테스트를 중지하면 "인쇄"라는 측면에서 아무 것도 인쇄되지 않습니다. 일기장에서?)

자, 이제 당신은 발전하고 있습니다. . . OP_BUY가 보류 중인 주문 과 동일한 방식으로 모든 변수를 인쇄하는 코드를 트리거하지 않는 이유를 알아내면 됩니다. . . 당신이 그 코드를 게시하고 싶다면 내가 볼 것이다.