externstring a = "ЛОТ ММ" ;
externbool MM=false; // если false - то работает обычный лот, если true - работает ММexterndouble Lots = 0.1 ; // обычный лотexterndouble balans = 200 ; // баланс при увеличении которого, следующий лот будет увеличен на лот MaximumRisk При ММdouble MaximumRisk = 0.1 ; // лот прибавляемый к предыдущему при ММdouble DecreaseFactor = 3.0 ; // если позиция проигрышная то следующая позиция откроется с лотом /3 При ММdouble LotsOptimized() {
double lot = Lots;
double minlot = MarketInfo( Symbol (), MODE_MINLOT);
double maxlot = MarketInfo( Symbol (), MODE_MAXLOT);
if (MM){
int orders = OrdersHistoryTotal();
int losses = 0 ;
lot = NormalizeDouble (AccountFreeMargin() * MaximumRisk / balans, 2 );
if (DecreaseFactor > 0.0 ) {
for ( int i = orders - 1 ; i >= 0 ; i--) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY) == FALSE) {
Print ( "Error in history!" );
break ;
}
if (OrderSymbol() != Symbol () || OrderType() > OP_SELL) continue ;
if (OrderProfit() > 0.0 ) break ;
if (OrderProfit() < 0.0 ) losses++;
}
if (losses > 1 ) lot = NormalizeDouble (lot - lot * losses / DecreaseFactor, 2 );
}}
if (lot < minlot) lot = minlot;
if (lot > maxlot) lot = maxlot;
return (lot);}
그렇다면 손실 과 DecreaseFactor 는 무엇입니까?
손실 - 거래 손실
DecreaseFactor - 연속 손실 거래의 로트 감소 정도.
Sergey_Rogozin :
DecreaseFactor=3이고 손실=3이면 공식에 따라 Lot=0 !!!
손실>3이면 Lot<0
여기서 거래가 열리지 않을 것입니다. 그것이 계산의 목적입니다)
무익한게 너무 많다면
그래서 아무 일도 일어나지 않을 것입니다. Funk2 함수 - 값을 반환하지 않습니다. 그녀는 공허 하다
이 경우 함수
펑크2 기능
여기서 거래가 열리지 않을 것입니다. 그것이 계산의 목적입니다)
무익한게 너무 많다면
따라서 이것은 완전히 켤 기회를 닫습니다.
그렇다면 수익성 있는 거래를 어디로 가져가야 할까요? ))))
따라서 이것은 완전히 켤 기회를 닫습니다.
손실 - 거래 손실
DecreaseFactor - 연속 손실 거래의 로트 감소 정도.
네, 바로 제가 말하는 것입니다.
손실 / DecreaseFactor >= 1 ????
아 아 아 아! 초기 Lot으로 열립니다.
고맙습니다.
네, 바로 제가 말하는 것입니다.
손실 / DecreaseFactor >= 1 ????
이전 항목이 수익성이 없는 경우 3으로 나누고 분할할 때 로트가 최소값보다 작으면 최소 로트의 기능이 입력됩니다.
네 감사합니다!
알았다.