헉! 헉!

 

안녕하세요, 여전히 많은 문제에 대해 제가 생각한 스크립트를 시도했지만 전략 테스트 에서 잘못된 로트 크기 오류가 발생했습니다. 히스토리 데이터가 일부 기능을 지원하지 않는지 여부를 모르겠습니다. 스크립트는 EURUSD 전용입니다. 내가 무엇을 잘못하고 있습니까 아니면 전략 테스터 문제입니까?

 extern int LotPercentage= 10 ; // use 10% of balance as lot size


double LotInBalance=(LotPercentage/ 100 )* AccountBalance (); // find the amount that is 10% of balance lets assume its $1000
double LotUnits=LotBalance* AccountLeverage (); // multiply this 10% balance($100) by leverage to get lot units
double lots= NormalizeDouble ((LotUnits/ 100000 ), 2 ); // expected to return 0.1
/* divide this lot units by 100,000(standard lot size units) and normalize to 2 decimal places to get something like 0.1 if account balance is say $1000 for use in ordersend()*/

 
jameslarry :

안녕하세요, 여전히 많은 문제에 대해 제가 생각한 스크립트를 시도했지만 전략 테스트에서 잘못된 로트 크기 오류가 발생했습니다. 히스토리 데이터가 일부 기능을 지원하지 않는지 여부를 모르겠습니다. 스크립트는 EURUSD 전용입니다. 내가 무엇을 잘못하고 있습니까 아니면 전략 테스터 문제입니까?

 extern int LotPercentage= 10 ; // use 10% of balance as lot size


double LotInBalance=(LotPercentage/ 100 )* AccountBalance (); // find the amount that is 10% of balance lets assume its $1000
double LotUnits=LotBalance* AccountLeverage (); // multiply this 10% balance($100) by leverage to get lot units
double lots= NormalizeDouble ((LotUnits/ 100000 ), 2 ); // expected to return 0.1
/* divide this lot units by 100,000(standard lot size units) and normalize to 2 decimal places to get something like 0.1 if account balance is say $1000*/

도움이 필요하지 않습니다. 이미 도움이 있습니다( https://www.mql5.com/en/forum/140034 )!. 그래도 당신은 망쳐!

 
안녕 내가 거기에있는 코드는 " 제로 나누기 "오류를 가져오고 다른 하나는 크고 테스트되지 않은 스크립트와 같은 간단한 것을 원합니다. 내 스크립트를 확인하고 어디가 잘못되었는지 말해 줄 수 있습니까? 잔액이 $1000이고 레버리지가 1:100이면 0.1랏으로 간단하게 거래하고 싶지만 골치 아픈 일입니다. $100를 얻기 위해 (10/100)*AccountBalance()를 계산하면 OrderSend를 위해 어떻게 0.1로 만들 수 있습니까? 또한 나는 단지 많은 부분을 위해 손절매를 관리하는 스크립트를 원하지 않습니다.
 
jameslarry :
안녕 내가 거기에있는 코드는 "제로 나누기"오류를 가져오고 다른 하나는 크고 테스트되지 않았습니다 .
그래서 그것을 테스트합니다. . . 당신은 다른 사람들이 당신을 위해 당신의 코드를 작성 하고 그것을 테스트하기를 원하십니까 ??
 
예, 저는 제 코드에서 무엇을 잘못하고 있는지 묻고 있습니다. onewitch가 제공한 코드도 테스트 중입니다. 하지만 스크립트가 수행하기를 원하지 않는 SL로 뭔가를 하는 것 같습니다.
 
jameslarry :
예, 저는 제 코드에서 무엇을 잘못하고 있는지 묻고 있습니다. 나는 또한 코드를 테스트하고 있지만 스크립트가 수행하기를 원하지 않는 SL로 뭔가를 하는 것 같습니다.
손실 거래의 어느 시점에서 선택한 최대 손실을 경험하고 싶습니까?
 
이 스레드 읽기: https://www.mql5.com/en/forum/134659
 
안녕 나도 이것을 시도했지만 위와 같은 오류가 발생했을 수 있습니다. 아마도 AccountBalance() 및 AccountFreeMargin()이 전략 테스터 에서 작동하지 않습니다. 테스트에서 3000달러의 잔액으로 시작하지만 오류 4051 잘못된 로트 금액을 계속 제공하기 때문에 여기에 코드가 있습니다. . 그리고 내가 $3000를 가지고 있는지 물어볼 수 있다면 AccountBalance()의 값은 3000 또는 다른 것이 될 것입니다. 도청을 했다면 죄송합니다.
 double Balance= AccountBalance ();
if (Balance<= 500 ){lots= 0.1 ;}
if (Balance< 1500 &&Balance> 1000 ){lots= 0.3 ;}
if (Balance< 2500 &&Balance> 2000 ){lots= 0.5 ;}
if (Balance< 3500 &&Balance> 3000 ){lots= 0.7 ;}
if (Balance< 4500 &&Balance> 4000 ){lots= 0.9 ;}
if (Balance< 5500 &&Balance> 5000 ){lots= 1.1 ;}
if (Balance< 6500 &&Balance> 6000 ){lots= 1.3 ;}
if (Balance< 7500 &&Balance> 7000 ){lots= 1.5 ;}
if (Balance< 8500 &&Balance> 8000 ){lots= 1.7 ;}
if (Balance< 9500 &&Balance> 9000 ){lots= 1.9 ;}
if (Balance> 10000 ){lots= 2 ;}
 
jameslarry :
안녕 나도 이것을 시도했지만 위와 같은 오류가 발생했을 수 있습니다. 아마도 AccountBalance() 및 AccountFreeMargin()이 전략 테스터에서 작동하지 않습니다. 테스트에서 3000달러의 잔액으로 시작하지만 오류 4051 잘못된 로트 금액 을 계속 제공하기 때문에 여기에 코드가 있습니다. . 그리고 내가 $3000를 가지고 있는지 물어볼 수 있다면 AccountBalance()의 값은 3000 또는 다른 것이 될 것입니다. 도청을 했다면 죄송합니다.

이런,

그 오류가 발생하는 이유는 ...해당 수량의 로트를 여는 데 드는 비용을 계산하지 않았기 때문입니다. 다른 스레드 읽기 https://www.mql5.com/en/forum/140034https://www.mql5.com/en/forum/140034/page2#649957

 
그것을 수정하는 방법과 AccountBalance()가 반환하는 것은 $ 또는 기타 단위의 값입니다.
 
jameslarry :
그것을 수정하는 방법과 AccountBalance()가 반환하는 것은 $ 또는 기타 단위의 값입니다.

귀하의 계정 통화로 반환됩니다. 여기 https://www.mql5.com/en/forum/140034 에 첨부 파일을 주었습니다.

https://www.mql5.com/en/forum/140034 와 같이 로트 계산을 올바르게 사용하여 수정하는 방법