[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 243

 
costy_ >> :

오픈이 ma1 이상일 때 매수해야 합니다.

||의 "barabashka"를 이해합니다. 왜냐하면 예를 들어 "if" (ma1>ma2&&ma1>Open[1] "or" ma1>ma3&&ma1>Open[1]) "then" Open BY();


일정은 모든 조건이 충족되지 않음을 보여줍니다 !!!


나는 하나의 촛불 53 구매에 다른 통해 시도했습니다.


논리를 구현할 수 있는 다른 방법은 무엇입니까?


코드 조각에 엄청난 수의 오류가 있습니다.

그것들을 모두 설명하고 왜 그러하고 그렇지 않은지 설명하십시오 .... 나는 그렇게 많은 시간이 없습니다.

내가 지금 바로잡을 유일한 것은:

 if ( ( ma1 > ma2 & & ma1 > ma3 & & Open [ 1 ] > ma1 ) | | 
    ( ma2 > ma1 & & ma2 > ma3 & & Open [ 1 ] > ma1 ) | |
    ( ma3 > ma1 & & ma3 > ma2 & & Open [ 1 ] > ma1 )
  )
  OpenBuy ( ) ;
시간이 되면 더 자세히 말씀 드리겠습니다....
 
감사합니다.
 if ( ( ma1 > ma2 & & ma1 > ma3   & & Open [ 1 ] > ma1 ) | | 
     ( ma2 > ma1 & & ma2 > ma3   & & Open [ 1 ] > ma1 ) | |
     ( ma3 > ma1 & & ma3 > ma2   & & Open [ 1 ] > ma1 )
   )
    OpenBuy ( ) ;

하지만 당신은해야합니다

 if ( ma1 > ma2 & & ma1 > ma3 & & Open [ 1 ] > ma1 )
OpenBuy ( ) ;
if ( ma2 > ma1 & & ma2 > ma3 & & Open [ 1 ] > ma1 )
OpenBuy ( ) ;
if ( ma3 > ma1 & & ma3 > ma2 & & Open [ 1 ] > ma1 )
OpenBuy ( ) ;
 
costy_ >> :

하지만 당신은해야합니다

동일하게 첫 번째 버전만 더 짧습니다.

 
MrSoros >> :

동일하게 첫 번째 버전만 더 짧습니다.

불행히도 첫 번째 옵션은 그래프에서 제대로 작동하지 않았습니다(모두 이상합니다).

확실히 첫 번째가 더 이쁘고 논리도 그렇네요. 먼저 덧셈을 하고 곱셈을 하는 것과 같습니다. =)))

 
MrSoros >> :

모든 것이 표지판과 일치합니다.

내 관점에서 아이디어 자체 (CCI에 따라 마감)는 그렇게 뜨겁지 않습니다 ....

나는 이미 이것을 겪었습니다 ...

그러나 이것은 전략의 문제입니다.

얼마나 많은 거래자, 너무 많은 전략...


아니요, 이것은 알고리즘이 작동하는 방식이 아닙니다. 이제 수익이 10pp보다 크면 SSI에서 닫힙니다. 그러나 수익이 10pp보다 크면 닫기에서 닫기 위해 정확히 10pp의 수익 수준이 필요합니다. SSI에서 닫히지 않아야 합니다. 이제 그는 이익 가격이 10pp(

이 함수에서 알고리즘의 의미 자체가 다르며, 10pp의 이익 수준이 있습니다. 즉, SSI 표시기의 방향 조건에 따라 조항에 따라 고정되는 가상 이익입니다. 가격이 이익에 들어갈 때 SSI가 올바르게 보이는 것처럼 항상이 수준을 통과 한 다음이 수준을 통과하면 가격이 원래 상태로 가격 반환을 되돌리거나 이동 방향으로 변경하는 경우가 있습니다. 이 경우, SSI는 항상 다른 방향을 바라보고 있으며, 10pp 수준에서 반대 방향으로 지날 때는 SSI가 반대 방향을 바라볼 것이기 때문에 순서가 고정되어 있습니다.

   if ( OrderType ( ) = = OP_BUY & & cci_0 < cci_1 & & Bid - OrderOpenPrice ( ) > = Point * profit ) OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , slip , Blue ) ;
   if ( OrderType ( ) = = OP_SELL & & cci_0 > cci_1 & & OrderOpenPrice ( ) - Ask > = Point * profit ) OrderClose ( OrderTicket ( ) , OrderLots ( ) , Ask , slip , Red ) ;

  

  cci_0 < cci_1 & & Bid - OrderOpenPrice ( ) = = Point * profit // может вот так? - так вообще не работает(
 

안녕하세요.

로트 크기가 잔액의 백분율로 올바르게 계산되었는지 확인합니다.

 //расчёт размера лота
double Lots ( )
   {
   double ls = MarketInfo ( Symbol ( ) , MODE_MINLOT ) + MarketInfo ( Symbol ( ) , MODE_LOTSTEP ) * MathFloor ( ( procentdepo * AccountBalance ( ) / 100000 - MarketInfo ( Symbol ( ) , MODE_MINLOT ) ) / MarketInfo ( Symbol ( ) , MODE_LOTSTEP ) ) ;
     if ( ls > MarketInfo ( Symbol ( ) , MODE_MAXLOT ) )    { ls = MarketInfo ( Symbol ( ) , MODE_MAXLOT ) ; }
     if ( ls < MarketInfo ( Symbol ( ) , MODE_MINLOT ) )    { ls = MarketInfo ( Symbol ( ) , MODE_MINLOT ) ; }
   return ( ls ) ;
   }

여기서 percentdepo - 보증금의 %

 
Piboli >> :

안녕하세요.

로트 크기가 잔액의 백분율로 올바르게 계산되었는지 확인합니다.

여기서 percentdepo - 보증금의 %

이렇게 하세요.

 extern double PercentLots   = 0.5 ; // внешние переменные


//то что ниже закиньте в конец кода
double GetLots ( ) 
{
double minlot = MarketInfo ( Symbol ( ) , MODE_MINLOT ) ;
double maxlot = MarketInfo ( Symbol ( ) , MODE_MAXLOT ) ;

if ( PercentLots ! = 0 )
 {
   double lot = NormalizeDouble ( AccountBalance ( ) * PercentLots   / 1000.0 / 100.0 , 2 ) ;
   if ( lot < minlot ) lot = minlot ;
   if ( lot > maxlot ) lot = maxlot ;
   }
   else lot = Lots ; 
   return ( lot ) ;
   }   

//GetLots() - вставьте в ticket=OrderSend(Symbol(),OP_BUY,GetLots(),Ask,3,stop,Ask+Takeprofit*Point,"",MagicNumber,0,Green);
 
Piboli >> :

안녕하세요.

로트 크기가 잔액의 백분율로 올바르게 계산되었는지 확인합니다.

여기서 percentdepo - 보증금의 %

그러나 오히려 이 로트 최적화 기능을 사용합니다. MM은 여기에서 작동합니다. 손실된 거래가 있으면 로트가 초기 값으로 감소합니다.

 //внешние переменные
extern double Lots = 0.1 ;            //стартовый лот до баланса 500
extern double MaximumRisk = 0.1 ;    //увеличение лота на каждые 500 баланса
extern double DecreaseFactor = 3.0 ; //уменьшение лота при серии убыточных позиций


//то что ниже  закиньте перед стартом
double LotsOptimized ( ) {
       double lot = Lots ;
       int orders = OrdersHistoryTotal ( ) ;
       int losses = 0 ;
       lot = NormalizeDouble ( AccountFreeMargin ( ) * MaximumRisk / 500.0 , 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 < 0.1 ) lot = 0.1 ;
if ( lot > 1000.0 ) lot = 1000 ;
return ( lot ) ; }

int start ( ) { //старт

LotsOptimized ( ) - - вставьте в ticket = OrderSend ( Symbol ( ) , OP_BUY , LotsOptimized ( ) , Ask , 3 , stop , Ask + Takeprofit * Point , "" , MagicNumber , 0 , Green ) ;
 
이전 두 게시물에서만 로트 변경 단계가 고려되지 않았습니다. 안타깝게도.
 
Vinin >> :
이전 두 게시물에서만 로트 변경 단계가 고려되지 않았습니다. 안타깝게도.

단계를 올바르게 이해하면 완료할 수 있습니다. 로트가 추가되는 잔액은 얼마입니까?

아니면 로트를 늘리기 위한 일정한 곡선이 있어야 하는데 그런 진행의 요점을 보지 못한다는 말씀입니까?

 extern double balans = 500 ; //шаг баланса

lot = NormalizeDouble ( AccountFreeMargin ( ) * MaximumRisk / balans , 1 ) ;
사유: