먼저 예약 된 int에 "exp"를 사용할 수 없습니다.
두 번째로 "SL"을 표현합니다.
SL = MathFloor (( iATR ( NULL , PERIOD_D1 , 7 , 0 )* MathPow ( 10 , Digits - exp )+ 1 )* 0.1 );
init 섹션에서 나쁜 생각
오류 4066 "SL" = 0이 발생하면
그런 다음 "많은"에 대해 제로 분할 을 얻습니다.
lots=MoneyRisk/SL/( MarketInfo ( Symbol (), MODE_TICKVALUE )*multi);
표시기가 멈추고 표시기를 다시 로드해야 합니다.
분명히 업데이트를 피할 수는 없지만 ;-) " 제로 나누기 " 상황은 피해야 합니다.
따라서 변수 중 하나가 0과 같은지 확인해야 합니다.... 0 나누기를 피하는 경우를 대비하여
그리고 지표를 멈출 수 없기 때문에 무언가를 알아내야 합니다.
예시:
SL = MathFloor (( iATR ( NULL , PERIOD_D1 , 7 , 0 )* MathPow ( 10 , Digits - exp )+ 1 )* 0.1 ); if (SL == 0 ) // because error 4066 (for example) { SL = Someting; } lots=MoneyRisk/SL/( MarketInfo ( Symbol (), MODE_TICKVALUE )*multi);
그건 그렇고, 나는이 지표와 같은 문제가 있습니다. 그러나 "구" MetaTrader에서는 왜 문제가 되지 않았습니까? 여기서 나는 항상 ATR(5)에 대해 0을 받습니다. 왜?!?! 그런 일은 없었다.. 나는 이 새로운 MetaTrader가 싫어...!
int start() //---- { double Spread = MarketInfo ( Symbol (), MODE_SPREAD ); double ATR = iATR ( NULL , PERIOD_D1 , 5 , 0 ); int exp1 = 0 ; if ( Digits == 5 || Digits == 3 ) { Spread=Spread* 0.1 ; exp1 = 1 ; } Comment ( "ADR(5): " , DoubleToStr (ATR* MathPow ( 10 , Digits -exp1), 1 ), " || TODAY: " ,( iHigh ( NULL , PERIOD_D1 , 0 )- iLow ( NULL , PERIOD_D1 , 0 ))* MathPow ( 10 , Digits -exp1), " || " , DoubleToStr ((( iHigh ( NULL , PERIOD_D1 , 0 )- iLow ( NULL , PERIOD_D1 , 0 ))* MathPow ( 10 , Digits -exp1)/(ATR* MathPow ( 10 , Digits -exp1))* 100 ), 2 ), "%" , "\n" + "SPREAD: " , Spread, " || RATIO: " , DoubleToStr ((Spread/ATR)* MathPow ( 10 ,-( Digits -exp1- 2 )), 2 ), "%" ); //---- return ( 0 ); }
문제를 찾은 것 같아요! 확실히 업데이트 문제입니다. 이제 통화를 변경하면 표시기가 작동합니다. 그러나 나는 오늘 아직 열지 않은 통화 쌍을 열었습니다. 그런 다음이 메시지를 받았습니다.
문제를 찾은 것 같아요! 확실히 업데이트 문제입니다. 이제 통화를 변경하면 표시기가 작동합니다. 그러나 나는 오늘 아직 열지 않은 통화 쌍을 열었습니다. 그런 다음이 메시지를 받았습니다.
gevoyageur, 나는 당신이 나에게서 이 게시물을 보지 못했다고 생각합니다:
2014.04.02 08:16 #
당신 말이 맞아.. 난 피할 수 없어. :-)
"내 말은 SL 계산을 계속하기 전에 업데이트가 완료될 때까지 기다릴 수 있다는 것입니까? 문제는 SL에 임의의 값을 줄 수 없다는 것입니다. 그러면 전체 표시기가 쓸모가 없기 때문입니다. 그래서 확인하고 싶습니다. 오류 4066이 발생하면 어떻게든 기다렸다가 다시 확인하고 계속 진행하고 싶습니다."
거기에서 내가 조언을 따를 수 없다는 설명을 볼 수 있으며 해당 솔루션에 왔기 때문에 qjol이 나에게 조언한 것을 확실히 확인했음을 알 수 있습니다.
코더 여러분,
나는 나를 위해 잘 작동하는 작은 Moneymanagement 지표를 만들었습니다. 그러나 새로운 MQL4 이후로 내가 처리할 수 없는 문제가 발생합니다.
이 표시기를 차트로 끌면 일부 숫자가 맨 오른쪽에 인쇄됩니다. 첫 번째 숫자는 핍 단위의 손절매를 의미하고 두 번째 숫자는 로트 크기입니다. 옵션에서 위험을 선택할 수 있습니다. 다른 숫자는 손절매 수준입니다. 그러나 통화 쌍 을 변경하면 숫자가 사라집니다. 대신 "Label"이라는 단어가 여러 번 보입니다. 그리고 지표 목록을 보면 내 지표도 사라졌습니다. 따라서 요약하면 통화 쌍을 변경한 후 표시기가 사라지고 숫자 대신 레이블이 남습니다.
나는 완전히 혼란 스럽다. 이 표시기는 문제 없이 작동하는 데 사용되었습니다. 도움을 주시면 감사하겠습니다.
코드는 다음과 같습니다.