고정 로트 크기를 설정하면 모든 것이 잘 작동하지만 동적 로트 크기를 원합니다. 그래서 위의 스크립트를 생각했지만 작동하지 않고 문제를 모릅니다. @raptor 내 레버리지가 1:100이기 때문에 내가 이해하는 1000달러 잔액 중 100달러를 사용하고 싶습니다. 내가 설정한 백분율, 즉 10%, 20% 또는 내가 설정한 잔액/마진 중 하나에 따라 $200(0.2 랏)으로 거래합니다. @원위자치ordersend는 고정 로트 크기를 설정하면 작동하므로 괜찮습니다.
double lots= 0.1 ;
하지만 아래와 같이 동적화하려고 하면 잘못된 로트 크기라고 표시됩니다. 내 계정은 마이크로이며 최소 0.01랏을 지원합니다.
externint LotPercentage= 10 ; // use 10% of balance as lot sizeint start()
{
double LotInBalance=(LotPercentage/ 100 )* AccountBalance (); // find the amount that is 10% of balance lets assume its $1000double LotUnits=LotBalance* AccountLeverage (); // multiply this 10% balance($100) by leverage to get lot unitsdouble 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()*/
...
return0 ;
}
또한 이것은 더 간단한 동안 동일한 오류를 반환합니다.
double lots;
double Balance= AccountBalance ();
if (Balance<= 500 ){lots= 0.1 ;} // If my account has $500 or less the lot will be 0.1if (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 ;} // If account balance if over 10000 lot is 2if ( /*opening criteria met*/ ){
OrderSend ( Symbol (),OP_BUY,lots,...)
}
double lots; // <<== value is zerodouble Balance= AccountBalance ();
if (Balance<= 500 ){lots= 0.1 ;} // What the lots if Balance > 500 && <= 1000 ?if (Balance< 1500 &&Balance> 1000 ){lots= 0.3 ;} // read this carefully : if balance bigger than but not equal with 1000// AND balance also smaller but not equal than 1500.// Question : what's the lot if balance equal with 1000 and 1500 ?
jameslarry : 고정 로트 크기를 설정하면 모든 것이 잘 작동하지만 동적 로트 크기를 원합니다. 그래서 위의 스크립트를 생각했지만 작동하지 않고 문제를 모릅니다. @raptor 내 레버리지가 1:100이기 때문에 내가 이해하는 1000달러 잔액 중 100달러를 사용하고 싶습니다. 내가 설정한 백분율, 즉 10%, 20% 또는 내가 설정한 잔액/마진 중 하나에 따라 $200(0.2 랏)으로 거래합니다. @원위자치Ordersend는 고정 로트 크기를 설정하면 작동하기 때문에 괜찮지만 아래와 같이 동적화하려고 하면 잘못된 로트 크기라고 표시됩니다. 내 계정은 마이크로이며 최소 0.01랏을 지원합니다. 또한 이것은 더 간단한 동안 동일한 오류를 반환합니다. 더 잘 이해하려면 코드에 포함된 주석을 읽으십시오.
나는 당신이 일이 어떻게 작동하는지에 대해 큰 오해를 가지고 있다고 생각합니다. . . 증거금 요건 과 위험은 같은 것이 아닙니다. . . 증거금 요건 $100에 따라 포지션 규모를 만들고 거래에서 잃으면 $100보다 훨씬 많거나 적은 손실을 입을 수 있습니다. . . 레버리지에 따라 증거금 요구 사항이 변경됩니다. . . 위험하지 않습니다.
double lots= 0.1 ;
하지만 아래와 같이 동적화하려고 하면 잘못된 로트 크기라고 표시됩니다. 내 계정은 마이크로이며 최소 0.01랏을 지원합니다.extern int LotPercentage= 10 ; // use 10% of balance as lot size int start() { 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()*/ ... return 0 ; }
또한 이것은 더 간단한 동안 동일한 오류를 반환합니다.double lots; double Balance= AccountBalance (); if (Balance<= 500 ){lots= 0.1 ;} // If my account has $500 or less the lot will be 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 ;} // If account balance if over 10000 lot is 2 if ( /*opening criteria met*/ ){ OrderSend ( Symbol (),OP_BUY,lots,...) }
더 잘 이해하려면 코드에 포함된 주석을 읽으십시오.실제 돈으로 이 일을 하지 마십시오.
10%를 잃거나 10%로 오픈 포지션을 원하십니까? (답변 : 첫 번째!)
누군가가 자신의 계좌에 $1000를 예치할 수 있는 것과 같은 방식으로 10%로 포지션을 개설하고 0.1랏(레버리지가 1:100인 경우 10%)으로 포지션을 개설하고 싶습니다.
onewithzachy 당신이 옳습니다. 나는 그것을 아래에 수정했고 작동했지만 전략 테스트 는 더 나빴습니다. 고정 로트를 사용하는 것이 가장 좋은 것 같습니다.
고정 로트 크기를 설정하면 모든 것이 잘 작동하지만 동적 로트 크기를 원합니다. 그래서 위의 스크립트를 생각했지만 작동하지 않고 문제를 모릅니다. @raptor 내 레버리지가 1:100이기 때문에 내가 이해하는 1000달러 잔액 중 100달러를 사용하고 싶습니다. 내가 설정한 백분율, 즉 10%, 20% 또는 내가 설정한 잔액/마진 중 하나에 따라 $200(0.2 랏)으로 거래합니다. @원위자치 Ordersend는 고정 로트 크기를 설정하면 작동하기 때문에 괜찮지 만 아래와 같이 동적화하려고 하면 잘못된 로트 크기라고 표시됩니다. 내 계정은 마이크로이며 최소 0.01랏을 지원합니다. 또한 이것은 더 간단한 동안 동일한 오류를 반환합니다. 더 잘 이해하려면 코드에 포함된 주석을 읽으십시오.
아니 잠깐만 그것은 내가 그것을 잘못 테스트 한 일부 터보를 추가했습니다. 수많은 if 문보다 하나의 공식을 사용하여 계산할 수 있다면 좋을 것입니다. 공식을 유도할 수 있습니까?
가장 안전한 방법은 무엇입니까?