오류, 버그, 질문 - 페이지 7 1234567891011121314...3184 새 코멘트 Sergey Gritsay 2010.06.14 21:02 #61 FEDOR_MQL : 그리고 이 개발 단계에서 매개변수, 함수 호출 및 함수 자체에 컴파일 오류가 표시되어야 합니다. 그렇다면 왜? 그것은 나에게 오류를 보여줍니다 예, 실제로 어떤 이유로 인해 오류가 발생하지 않아야 하지만 오류가 있습니다. 이것만은 개발자들에게 주의를 당부 드리고, 이렇게 다시 해보니 에러는 없는데 스위치 스위치를 사용하면 여전히 에러가 납니다. //+------------------------------------------------------------------+ #property copyright "2010, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" //--- input parameters input double Lots= 0.1 ; input bool MM = true; input double Risk = 10.0 ; double lots; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { return ( 0 ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { if (MM) lots = LotSon(); //вызов функции LotSon else lots = Lots; } //+------------------------------------------------------------------+ double LotSon() { double LotMin = SymbolInfoDouble ( Symbol (), SYMBOL_VOLUME_MIN ); double LotMax = SymbolInfoDouble ( Symbol (), SYMBOL_VOLUME_MAX ); double LotStep = SymbolInfoDouble ( Symbol (), SYMBOL_VOLUME_STEP ); double Lot = AccountInfoDouble ( ACCOUNT_FREEMARGIN )/ 100000.0 * Risk; Lot = MathMin (LotMax, MathMax (LotMin,Lot)); if (Lot < LotMin) Lot = LotMin; if (Lot > LotMax) Lot = LotMax; // Вариант первый /* switch(LotStep) { case 0.01: Lot=NormalizeDouble(Lot,2);break; case 0.1 : Lot=NormalizeDouble(Lot,1);break; case 1.0 : Lot=NormalizeDouble(Lot,0);break; } */ // Вариант второй if (LotStep == 0.01 )Lot= NormalizeDouble (Lot, 2 ); if (LotStep == 0.1 ) Lot= NormalizeDouble (Lot, 1 ); if (LotStep == 1.0 ) Lot= NormalizeDouble (Lot, 0 ); // Вариант третий // if (LotStep == 0.01) Lot=NormalizeDouble(Lot,2); // else if (LotStep == 0.1) Lot=NormalizeDouble(Lot,1); // else if (LotStep == 1.0) Lot=NormalizeDouble(Lot,0); return (Lot); } [삭제] 2010.06.14 21:16 #62 sergey1294 : 예, 실제로 어떤 이유로 인해 오류가 발생하지 않아야 하지만 오류가 있습니다. 개발자들에게 이것에 주의를 당부하고 이렇게 다시 수정해 보니 오류는 없지만 스위치 스위치 를 사용할 때 여전히 오류가 발생합니다. switch (LotStep) { case 0.01 : Lot= NormalizeDouble (Lot, 2 ); break ; case 0.1 : Lot= NormalizeDouble (Lot, 1 ); break ; case 1.0 : Lot= NormalizeDouble (Lot, 0 ); break ; } 여기서 int 형태로 제비를 보내야 합니다. 0.01 = 1000 및 0.10 = 10000... Sergey Gritsay 2010.06.14 21:31 #63 Interesting : 여기서 int 형태로 제비를 보내야 합니다. 0.01 = 1000 및 0.10 = 10000... 당신에 따르면, 그 기능은 SymbolInfoDouble ( Symbol (), SYMBOL_VOLUME_STEP ); 0.01 대신 값 1000을 반환합니다. [삭제] 2010.06.14 21:39 #64 sergey1294 : 당신에 따르면, 그 기능은 0.01 대신 값 1000을 반환합니다. 아니요, 코드가 다음과 같으면 오류가 사라질 것이라는 사실에 대해 이야기하고 있었습니다. switch (StepSize) { case 1000 : Lot= NormalizeDouble (Lot, 2 ); break ; case 10000 : Lot= NormalizeDouble (Lot, 1 ); break ; case 100000 : Lot= NormalizeDouble (Lot, 0 ); break ; } Sergey Gritsay 2010.06.14 21:41 #65 이제서야 알아차렸다. switch double을 사용할 수 없으면 이 경우에 이 옵션을 사용할 수 없습니다. [삭제] 2010.06.14 21:44 #66 sergey1294 : 이제서야 알았다. double을 사용할 수 없으면 이 경우에 이 옵션을 사용할 수 없습니다. 먼저 lot을 int로 변환하면 가능합니다. 위에서 말했던... Sergey Gritsay 2010.06.14 21:46 #67 그러한 구조를 사용하는 것이 불가능한 이유는 여전히 남아 있습니다. if (LotStep == 0.01 ) return ( NormalizeDouble (Lot, 2 )); if (LotStep == 0.1 ) return ( NormalizeDouble (Lot, 1 )); if (LotStep == 1.0 ) return ( NormalizeDouble (Lot, 0 )); FEDOR_MQL 2010.06.14 22:28 #68 Interesting : 먼저 lot을 int로 변환하면 가능합니다. 위에서 말했던... 실례가 안된다면 코드를 볼 수 있습니까? 그런 다음 다른 것을 시도하지만 아무 것도 작동하지 않습니다. 또는 저장소의 백분율로 고문 위험에 더 간단하게 추가할 수 있는 다른 옵션이 있습니까? 고맙습니다! [삭제] 2010.06.14 22:36 #69 FEDOR_MQL : 실례가 안된다면 코드를 볼 수 있습니까? 그런 다음 다른 것을 시도하지만 아무 것도 작동하지 않습니다. 또는 저장소의 백분율로 고문 위험에 더 간단하게 추가할 수 있는 다른 옵션이 있습니까? 고맙습니다! 결국 무엇을 얻어야 하는지에 따라 여기 , 예를 들어 위험을 감수하면서 여러 가지 흥미로운 기능을 제공했습니다. 그리고 이 코드가 작동하려면 로트에 100000을 곱하고 매개변수( int 변수)로 스위치(StepSize)에 전달하기만 하면 됩니다. 추신 그리고 일반적으로 솔직히 말해서 이러한 모든 옵션의 목적을 잘 이해하지 못합니까? 이 기능의 맥락에서 마지막 하나면 충분하다는 사실에 대해 이야기하고 있습니다 .... FEDOR_MQL 2010.06.14 22:57 #70 Interesting : 결국 무엇을 얻어야 하는지에 따라 여기 , 예를 들어 위험을 감수하면서 여러 가지 흥미로운 기능을 제공했습니다. 그리고 이 코드가 작동하려면 로트에 100000을 곱하고 매개변수( int 변수)로 스위치(StepSize)에 전달하기만 하면 됩니다. 나는 당신의 기사가 나에게 필요한 것이라고 생각합니다. 감사해요 1234567891011121314...3184 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
그리고 이 개발 단계에서 매개변수, 함수 호출 및 함수 자체에 컴파일 오류가 표시되어야 합니다. 그렇다면 왜? 그것은 나에게 오류를 보여줍니다
예, 실제로 어떤 이유로 인해 오류가 발생하지 않아야 하지만 오류가 있습니다. 이것만은 개발자들에게 주의를 당부 드리고, 이렇게 다시 해보니 에러는 없는데 스위치 스위치를 사용하면 여전히 에러가 납니다.
예, 실제로 어떤 이유로 인해 오류가 발생하지 않아야 하지만 오류가 있습니다. 개발자들에게 이것에 주의를 당부하고 이렇게 다시 수정해 보니 오류는 없지만 스위치 스위치 를 사용할 때 여전히 오류가 발생합니다.
여기서 int 형태로 제비를 보내야 합니다. 0.01 = 1000 및 0.10 = 10000...
여기서 int 형태로 제비를 보내야 합니다. 0.01 = 1000 및 0.10 = 10000...
0.01 대신 값 1000을 반환합니다.
당신에 따르면, 그 기능은
0.01 대신 값 1000을 반환합니다.
아니요, 코드가 다음과 같으면 오류가 사라질 것이라는 사실에 대해 이야기하고 있었습니다.
switch
double을 사용할 수 없으면 이 경우에 이 옵션을 사용할 수 없습니다.이제서야 알았다.
double을 사용할 수 없으면 이 경우에 이 옵션을 사용할 수 없습니다.
먼저 lot을 int로 변환하면 가능합니다. 위에서 말했던...
실례가 안된다면 코드를 볼 수 있습니까? 그런 다음 다른 것을 시도하지만 아무 것도 작동하지 않습니다.
또는 저장소의 백분율로 고문 위험에 더 간단하게 추가할 수 있는 다른 옵션이 있습니까? 고맙습니다!
실례가 안된다면 코드를 볼 수 있습니까? 그런 다음 다른 것을 시도하지만 아무 것도 작동하지 않습니다.
또는 저장소의 백분율로 고문 위험에 더 간단하게 추가할 수 있는 다른 옵션이 있습니까? 고맙습니다!
결국 무엇을 얻어야 하는지에 따라 여기 , 예를 들어 위험을 감수하면서 여러 가지 흥미로운 기능을 제공했습니다.
그리고 이 코드가 작동하려면 로트에 100000을 곱하고 매개변수( int 변수)로 스위치(StepSize)에 전달하기만 하면 됩니다.
추신
그리고 일반적으로 솔직히 말해서 이러한 모든 옵션의 목적을 잘 이해하지 못합니까? 이 기능의 맥락에서 마지막 하나면 충분하다는 사실에 대해 이야기하고 있습니다 ....
결국 무엇을 얻어야 하는지에 따라 여기 , 예를 들어 위험을 감수하면서 여러 가지 흥미로운 기능을 제공했습니다.
그리고 이 코드가 작동하려면 로트에 100000을 곱하고 매개변수( int 변수)로 스위치(StepSize)에 전달하기만 하면 됩니다.