후행 자금(자본)의 기능 - 누군가가 기성품을 만났을 수도 있습니까? - 페이지 4

 

내 버전:

 //+------------------------------------------------------------------+
//|Трал по эквити                                                    |
//+------------------------------------------------------------------+
bool EcvitiTral3 ( double EqvTralStep ) {
if ( OrdersTotal ( ) < 1 ) { gEqviti = AccountBalance ( ) ; return ( false ) ; }
if ( ! GlobalVariableCheck ( "step" ) ) { EqvTralStep = EqvTralStep ; }
   else { EqvTralStep = GlobalVariableGet ( "step" ) ; }
EqvTralStep = EqvTralStep * ( GlobalVariableGet ( "multi" ) - GlobalVariableGet ( "disable" ) ) ;
   if ( WithoutLoss ) {
     if ( AccountEquity ( ) > = AccountBalance ( ) ) {
       if ( AccountEquity ( ) - AccountBalance ( ) > ( ( AccountBalance ( ) / 100 ) * ( EqvTralStep * 2 ) ) ) { EqvTralStep = EqvTralStep * 2 ; }
       if ( AccountEquity ( ) > ( gEqviti + ( gEqviti / 100 * EqvTralStep ) ) ) {
        gEqviti = gEqviti + ( gEqviti / 200 * EqvTralStep ) ;
        eqvtrade = true ;
         if ( ! GlobalVariableCheck ( "stop" ) ) { GlobalVariableSet ( "stop" , 0 ) ; }
       }
       if ( AccountEquity ( ) < = gEqviti ) { CloseAll ( ) ; Print ( "CloseAll" ) ; GlobalVariableDel ( "stop" ) ; return ( false ) ; }
       else { Comment ( AccountFreeMargin ( ) + AccountMargin ( ) , " \n " ,
                 "EQUITY TRALING MODE \n " ,
                 "EQUITY TRALING STEP   =" , EqvTralStep , " %" ,
                 " \n ACCOUNT BALANS         = " , AccountBalance ( ) ,
                 " \n CLOSE LEVEL                  = " , gEqviti ,
                 " \n ACCOUNT EQUITY        = " , AccountEquity ( ) ,
                 " \n NEXT STEP                     = " , gEqviti + ( gEqviti / 100 * EqvTralStep ) ) ;
                 return ( true ) ;
       }
     } else { GlobalVariableDel ( "stop" ) ; } 
   } else {
     if ( AccountEquity ( ) > AccountBalance ( ) ) {
       if ( AccountEquity ( ) - AccountBalance ( ) > ( ( AccountBalance ( ) / 100 ) * ( EqvTralStep * 2 ) ) ) { EqvTralStep = EqvTralStep * 2 ; }       
       if ( AccountEquity ( ) > ( gEqviti + ( gEqviti / 100 * EqvTralStep ) ) ) {
        gEqviti = gEqviti + ( gEqviti / 200 * EqvTralStep ) ;
        eqvtrade = true ;
         if ( ! GlobalVariableCheck ( "stop" ) ) { GlobalVariableSet ( "stop" , 0 ) ; }
       }
       if ( AccountEquity ( ) < = gEqviti ) { CloseAll ( ) ; Print ( "CloseAll" ) ; GlobalVariableDel ( "stop" ) ; return ( false ) ; }
       else { Comment ( AccountFreeMargin ( ) + AccountMargin ( ) , " \n " ,
                 "EQUITY TRALING MODE \n " ,
                 "EQUITY TRALING STEP   =" , EqvTralStep , " %" ,
                 " \n ACCOUNT BALANS         = " , AccountBalance ( ) ,
                 " \n CLOSE LEVEL                  = " , gEqviti ,
                 " \n ACCOUNT EQUITY        = " , AccountEquity ( ) ,
                 " \n NEXT STEP                     = " , gEqviti + ( gEqviti / 100 * EqvTralStep ) ) ;
                 return ( true ) ;
       }
     } else { GlobalVariableDel ( "stop" ) ; }   
   }
return ( false ) ;
}
호출은 시작 부분에 배치되고 추적 기간 동안 EA의 다른 블록 작업을 차단합니다. 후행 단계는 가변적입니다. BU 모드를 사용하면 새싹에서 수익성이 없는 주문을 차단할 수 있습니다.
 
xrust >>:

내 버전:

호출은 시작 부분에 배치되고 추적 기간 동안 EA의 다른 블록 작업을 차단합니다. 후행 단계는 가변적입니다. BU 모드를 사용하면 새싹에서 수익성이 없는 주문을 차단할 수 있습니다.

좋은 오후 입니다. 제발. 이 블록이 어떻게 작동하는지 더 자세히 설명하십시오. 전혀 실행할 수 없습니다.

여기에 모호성이 있습니다.

1. 함수 CloseAll(), f-I, 고양이가 보입니다. 모든 주문을 삭제하거나 포지션을 닫습니다 .

나는이 기능의 아날로그를 가지고 있으며 여기에는 문제가 없습니다 ..

2. 내가 설정한 속성에서

extern bool WithoutLoss = true;

- 이 매개변수는 무엇입니까?

3. 또 다른 사람이 물었다 -

extern double gEqviti=200;// - 이것은 후행 작업이 시작되는 지분 달성의 크기를 보여줍니다.

4. 더 많은 질문-

불 평등 무역;

또 무엇을 물어야 합니까? EqvTralStep 매개변수 설정 방법 ?

그리고 (어렵지 않다면) 일반적인 용어로 기능의 작동을 2-3 단어로 설명하십시오.

 
이 함수는 int Start() 직후 Expert Advisor의 맨 처음에 호출되며 다음과 같은 방식으로 호출됩니다.
 //удаляем запрет на торговлю после удаления всех ордеров 
   if ( OrdersTotal ( ) < 1 ) {
     if ( GlobalVariableCheck ( "stop" ) ) { GlobalVariableDel ( "stop" ) ; }   
    gEqviti = AccountBalance ( ) ; 
   } 
//тралим эквити
   if ( EcvitiTral3 ( EqwTralStep ) ) { return ( 0 ) ; }
   if ( GlobalVariableCheck ( "stop" ) ) { return ( 0 ) ; }

자기 자본이 잔액 이상으로 상승하면 모든 전문가의 강철 기능과 흔적을 차단합니다.

이제 변수에 대해: 전역 변수 에서 static double gEqviti;

외부 변수에서 extern double EqwTralStep=0.03; 지분의 백분율로 표시되는 후행 단계 extern bool WithoutLoss=false; 손익분기점 사용 권한

기능 연산: 자기자본이 잔액을 초과할 때 청산이 필요할 때 잔액 수준을 0으로 기억합니다. 이것은 손익분기점으로 작업합니다. 자기자본이 퍼센트 단위의 EqwTralStep 크기만큼 더 초과되면 마감 수준을 더 높게 이동합니다. , 초과 속도가 높으면 함수가 단계를 2차로 증가시킵니다.

 
덕분에! 나는 노력할 것이다.
 

전혀 그렇지 않습니다. 어려움이 있으면 걱정하십시오 ...

 

만들어진. 출시되었습니다. 지금까지 모든 것이 잘 작동합니다. 두 번째 주 온라인 시청

하지만. 가끔 드문 오류가 있습니다.

보통 나는 시장에서 동시에 3-10개의 포지션을 가지고 있습니다.

하지만 - 시장에 포지션이 하나만 있을 때, 이익 = 1-2핍으로 명백한 이유 없이 포지션을 갑자기 닫는 일이 발생합니다!

왜 그런지 이해가 안됩니다. 이것은 내 Expert Advisor의 기본 코드에서 제공되지 않습니다.

 

통제하는 것은 매우 간단합니다. 이러한 폐쇄는 가격의 급격한 상승과 폐쇄 수준이 새로운 수준으로 전환 되고 포지션을 폐쇄한 결과일 수 있습니다.

다음과 같이 하십시오.

организуйте в функции стическую переменную static double prewlewel ;

потом перед , или за комментами 

   if ( prewlewel ! = gEqviti ) {
    prewlewel = gEqviti ;
     Print ( prewlewel ) ;
   } 

А здесь добавьте обнуление переменной 
if ( OrdersTotal ( ) < 1 ) { gEqviti = AccountBalance ( ) ; prewlewel = 0 ; return ( false ) ; }
 

xrust - 당신에게 제안할 것이 있습니다 - 당신은 독립적인 전문가 고문의 형태로 당신의 주식 트롤 버전의 코드를 제공할 수 있습니까?

이것은 손 거래자에게 매우 유용한 도구가 될 것입니다.

나는 그런 것을 아주 오랫동안 찾고 있었지만 적당한 것을 보지 못했고 나 자신도 코드에 강하지 않다(더 정확히 말하면 나는 약하다).

 
ToKa_TuXa писал(а) >>

xrust - 당신에게 제안할 것이 있습니다 - 당신은 독립적인 전문가 고문의 형태로 당신의 주식 트롤 버전의 코드를 제공할 수 있습니까?

이것은 손 거래자에게 매우 유용한 도구가 될 것입니다.

나쁘지 않아! 지지합니다...

정말로. 이 디자인은 눈에 띄지 않을 것입니다.

 
관리하기 쉬운 이것을 시도하십시오 . 나 자신이 사용합니다. 원하는 이익과 도달 후 허용 가능한 인출 비율을 지정하기만 하면 됩니다.