Zero Divide(문제를 찾았지만 그 이유는 무엇입니까?) - 페이지 3

 
double loss_for_1_lot = pips_to_bsl/ ts * tv ;

div가 0이 되는 것은 tv가 아닙니다. ts만 가능합니다. 5자리 브로커에서 ts는 0(4자리)을 인쇄할 수 있습니다.

다른 곳에서 기록을 다운로드 하기 전에 브로커로부터 시장 정보를 얻기 위해 해당 쌍을 열지 않은 것처럼 들립니다.

 

게시된 코드에 의해 0분할 이 생성된다는 것이 믿기 어렵습니다.

DomGilberto는 이 스크립트를 컴파일하고 0 ticksize를 반환한다고 생각되는 차트에 첨부합니다.

 int start()
  {
//----
   int i = Bars - 1 ;
   int cnt;
   int tscnt = 0 ;
   int tvcnt = 0 ;
   double ts = MarketInfo( Symbol (), MODE_TICKSIZE);
   double tv = MarketInfo( Symbol (), MODE_TICKVALUE);
   while (i >= 0 )
   { if (ts < 0.00001 ) tscnt++;
     if (tv < 0.00001 ) tvcnt++;
    i--;
   }
   Alert ( "TickSize returned an erroneous value " ,tscnt, " times." );
   Alert ( "TickValue returned an erroneous value " ,tvcnt, " times." );
//----
   return ( 0 );
  }
 
DomGilberto :

내가 만든 이 비디오(40초 정도)가 내가 말하고 있는 내용을 설명하기를 바랍니다.

비디오: http://screencast.com/t/uMHY5DpM

스크립트를 라이브 차트(실제 계정)에 놓으면 틱 값과 틱 크기가 해당 "명목 계정"에서 "0"을 반환하는 첫 번째 부분을 볼 수 있습니다.

두 번째 부분은 동일한 브로커를 사용하지만 로트 기반 피드에 있으며 이번에는 틱 값과 틱 크기를 반환합니다. 다시 말하지만, 나는 당신이 제비를 사용하여 거래한다는 것을 설명합니다....

그래서 전략 테스터와 관련하여 나는 그것이 왜 효과가 있었고 때로는 그렇지 않았는지 전혀 모릅니다. 백 테스트도 실행하는 동안 계정이 연결되었습니다(데모 명목 공급 계정(단위)에서).

내 다음 질문은 이것이 내가 명목 Fed 계정에서 얻을 수 있는 일반적인 응답이라면 이 상황에서 내 포지션 규모 계산을 수정하는 방법을 제안할 수 있습니까? 그것은 많은 기반 피드에 완벽하게 작동합니다 ... 그것이 조금 더 잘 설명되기를 바라십니까?

"테스트" 코드에서 다른 코드를 사용하고 있다면 무엇을 증명합니까?

TICKVALUE는 now에서 현재 값을 반환한다는 것을 알고 있습니까? . . 전략 테스트 실행 중에도? 따라서 기본 통화가 예금 통화가 아닌 모든 통화 쌍의 경우 올바르지 않고 로트 계산이 잘못됩니다. . .

 

비디오에서는 첫 번째 인스턴스에서 GBPUSD를 사용한 다음 두 번째 인스턴스에서 GBPJPY를 사용합니다.

스크립트를 GBPUSD 일반 로트 차트에 첨부했다면 tickvalue에 대한 값을 얻을 수 있지만 ticksize도 0이 될 것이라고 생각합니다.

이는 스크립트 경고가 이중을 사용하고 있으므로 0.00001이 0으로 인쇄되기 때문입니다.

DoubleToStr (MarketInfo(Symbol(),MODE_TICKVALUE),8)을 대신 사용하십시오.

 

네, 먼저 모든 분들의 도움에 감사드립니다.

다음은 "Gumrai"와 "SDC"에 대한 비디오입니다. 두 분이 제게 요청하신 내용을 확인하는 것입니다. 여기에 게시한 코드와 분명히 일치하는 MQL4 별칭으로 스크립트에 레이블을 지정했습니다. 비디오: http://screencast.com/t/kglCd2hCae

일시 중지 중에 브로커 및 해당 피드가 변경되지 않았습니다. 명목상의 피드 계정(단위)이기도 합니다.

@RaptorUK: 예, TICKVALUE가 지금부터 현재 값을 반환한다는 것을 알고 있었습니다. 지금 보고 있는 두 번째 부분이 논리적이라고 생각합니다. 위치 크기 조정이 올바른지 확인하기 위해 명목 피드 계정의 일부로 tickvalue를 어떻게 활용할 수 있는지 혼란스럽습니다...?

 
DomGilberto :

네, 먼저 모든 분들의 도움에 감사드립니다.

다음은 "Gumrai"와 "SDC"에 대한 비디오입니다. 두 분이 제게 요청하신 내용을 확인하는 것입니다. 여기에 게시한 코드와 분명히 일치하는 MQL4 별칭으로 스크립트에 레이블을 지정했습니다. 비디오: http://screencast.com/t/kglCd2hCae

일시 중지 중에 브로커 및 해당 피드가 변경되지 않았습니다. 명목상의 피드 계정(단위)이기도 합니다.

@RaptorUK: 예, TICKVALUE가 지금부터 현재 값을 반환한다는 것을 알고 있었습니다. 지금 보고 있는 두 번째 부분이 논리적이라고 생각합니다. 위치 크기 조정이 올바른지 확인하기 위해 명목 피드 계정의 일부로 tickvalue를 어떻게 활용할 수 있는지 혼란스럽습니다...?


그 비디오는 고통스럽고 내 화면에 너무 큽니다.

스크립트 코드와 경고 결과를 게시하지 않는 이유는 무엇입니까?

내가 제안한 코드로 된 스크립트에 무엇을 입력했는지 모르지만 "08"이 될 수 있는 방법은 없습니다.

사용

 Alert ( "TICKVALUE= " ,DoubleToStr(MarketInfo( Symbol (),MODE_TICKVALUE), 8 ));
Alert ( "TICKSIZE= " ,DoubleToStr(MarketInfo( Symbol (),MODE_TICKSIZE), 8 ));
 
DomGilberto :


@RaptorUK: 예, TICKVALUE가 지금부터 현재 값을 반환한다는 것을 알고 있었습니다. 지금 보고 있는 두 번째 부분은 논리적이라고 생각합니다. 위치 크기 조정이 올바른지 확인하기 위해 명목 피드 계정의 일부로 tickvalue를 어떻게 활용할 수 있는지 혼란스럽습니다...?

먼저 TICKVALUE가 실제로 아직 수행하지 않은 0 결과를 반환하는지 확인해야 합니다.
 
GumRai :


그 비디오는 고통스럽고 내 화면에 너무 큽니다.

스크립트 코드와 경고 결과를 게시하지 않는 이유는 무엇입니까?

내가 제안한 코드로 된 스크립트에 무엇을 입력했는지 모르지만 "08"이 될 수 있는 방법은 없습니다.

사용


죄송합니다. "DoubleToStr"을 입력하는 것을 잊었다는 것을 이제 깨달았습니다!!

TickSize = 0.00100000

틱 값 = 0.00001026

(GBPJPY 명목 피드에서 삭제됨)

@SDC 여기에서 코드를 복사하여 새 스크립트에 넣었습니다. 반환되고 있었던 것입니다.

 
Ok 새로운 업데이트, 나는 0 분할 이 발생하는 정확한 위치를 반복하면서 놀았습니다.

내 코드의 이 영역은 수학을 분해하는 수식을 인쇄하도록 했습니다. 이 문제가 발생하는 곳은 구매 보류 주문에 있습니다... 아직 코드 "pips_to_ssl"의 이 부분은 pips to SELL stop loss... 구매 중지 보류 주문에 사용되지 않습니다....

 double loss_for_1_lot1 = pips_to_ssl/  ts * tv  ;
   if ( loss_for_1_lot1 == 0.0 )Print( " ERROR - loss_for_1_lot1 = 0.0 || The formula for this is: " , pips_to_ssl, "/" ,ts, "*" ,tv);


2013.10 . 02 11 : 57 : 19      2001.02 . 12 16 : 00   Trend Fishing - V1 - Notional Lots USDJPYnb,H1:  ERROR - loss_for_1_lot1 = 0.0 || The formula for this is : 0 / 0.001 * 0.0001

double pips_to_ssl=SellStopPrice-sellPrice;
   if(pips_to_ssl == 0)Print(" ERROR - pips_to_ssl = 0 || The formula for this is: ", SellStopPrice,"-",sellPrice); 

2013.10.02 12:08:01	2001.02.12 16:00  Trend Fishing - V1 - Notional Lots USDJPYnb,H1:  ERROR - pips_to_ssl = 0 || The formula for this is: 117.249-117.249

 
DomGilberto :
Ok 새로운 업데이트, 나는 0 분할이 발생하는 정확한 위치를 반복하면서 놀았습니다.

내 코드의 이 영역은 수학을 분해하는 수식을 인쇄하도록 했습니다. 이 문제가 발생하는 곳은 구매 보류 주문에 있습니다... 아직 코드 "pips_to_ssl"의 이 부분은 pips to SELL stop loss... 구매 중지 보류 주문에 사용되지 않습니다....



내 이전 게시물을 다시 참조하십시오

"참고로

 double loss_for_1_lot = pips_to_bsl/ ts * tv ; //<<<<<<<<<<<<<<<<<<<<<<<<<<< This is giving me a "0" randomly sometimes?

pips_to_bsl이 0인 경우에도 0이 됩니다. 이게 가능해?"

bsl 또는 ssl, 동일한 코딩.