포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 370

 
에크부르크, 알았어
 
Ekburg :


터미널에 최신 빌드를 설치하면 코드를 작성하는 것이 더 쉽고 오류가 발생할 가능성이 적습니다! :)

왜 필요한지 명확하지 않은 대괄호의 마지막 부분을 제외하고 먼저 보낸 부분을 수정했습니다..


이것은 고문으로부터의 나의 출구입니다. 모든 조건이 충족되면 고문으로부터의 출구가 발생합니다.

저것들.

실패=참;

이후

if(실패) return(0);

 
SpikeOne :


이것은 고문으로부터의 나의 출구입니다. 모든 조건이 충족되면 고문으로부터의 출구가 발생합니다.

저것들.

실패=참;

이후

if(실패) return(0);


이해는 되지만 맨 처음에 보낸 코드에서는 exit 함수 앞에 추가 괄호가 많이 있습니다.))

내가 보낸 것이 도움이 되었습니까?!

 
if ( AccountProfit()+ AccountBalance()>=740)
{
for(int zx=OrdersTotal(); zx+1>=0; zx--)
{
if(OrderSelect(zx,SELECT_BY_POS,MODE_TRADES)==true)
주문삭제(주문티켓());
}
동안 (OrdersTotal()>0)
{
if(주문선택(0,SELECT_BY_POS,MODE_TRADES))
{
if(OrderType()==OP_BUY) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);
if(OrderType()==OP_SELL) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);
if (OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)
주문삭제(주문티켓());
if(결과!=TRUE)
{
er=GetLastError();
Print("마지막 오류 = ",er, " ",Symbol());
}
다른 사람 = 0;
}
}
실패=참;
}

if(실패) return(0);

내 코드를 Expert Advisor https://www.mql5.com/ru/code 에 붙여넣으면 장소 앞에

if(or_bu==위험 &&_b==0) 틱(0);

if(or_sl==risk &&_s==0) 틱(1);

그런 다음 고문은 다르게 거래를 시작합니다. 비록 740을 입력해야만 제 코드를 입력해야 하지만 처음에는 테스터에서 제 잔고가 700입니다.

다음과 같은 테스트에 대해 값을 설정할 수 있습니다.

extern 부울 테스트=거짓; // 테스트에서 객체 비활성화

extern int prof=2; // 이익 수준

extern int chag=1.7; // 주문 사이의 단계

외부 int 위험 = 0; //위험 수준

외부 이중 로트 = 0.01; // 초기 로트

외부 이중 k_lot=2; // 볼륨 증가

외부 이중 lot_max=100;

부울 결과;

부울 실패=거짓;

매매 방식이 다른게 문제네요 2013. 11. 08. 과 2013. 11.09 시험 날짜가 이해가 안되네요.

 
SpikeOne :

그런 다음 고문은 다르게 거래를 시작합니다. 비록 740을 입력해야만 제 코드를 입력해야 하지만 처음에는 테스터에서 제 잔고가 700입니다.


 if ( AccountProfit ()+ AccountBalance ()>= 740 )
   {
   for ( int zx= OrdersTotal (); zx+ 1 >= 0 ; zx--)
      {
       if ( OrderSelect (zx, SELECT_BY_POS , MODE_TRADES )== true )
       OrderDelete ( OrderTicket ());
      }
   while ( OrdersTotal ()> 0 )
      {
       if ( OrderSelect ( 0 , SELECT_BY_POS , MODE_TRADES ))
         {
         if ( OrderType ()== OP_BUY ) result= OrderClose ( OrderTicket (), OrderLots (), NormalizeDouble ( MarketInfo ( OrderSymbol (), MODE_BID ), MarketInfo ( OrderSymbol (), MODE_DIGITS )), 3 ,CLR_NONE);
         if ( OrderType ()== OP_SELL ) result= OrderClose ( OrderTicket (), OrderLots (), NormalizeDouble ( MarketInfo ( OrderSymbol (), MODE_ASK ), MarketInfo ( OrderSymbol (), MODE_DIGITS )), 3 ,CLR_NONE);
         if ( OrderType ()== OP_BUYLIMIT || OrderType ()== OP_BUYSTOP || OrderType ()== OP_SELLLIMIT || OrderType ()== OP_SELLSTOP )
         OrderDelete ( OrderTicket ());
         if (result!= TRUE )
            {
            er=GetLastError();
             Print ( "LastError = " ,er, " " , Symbol ());
            }
         else er= 0 ;
         }
       else Print ( "Error when order select " , GetLastError());
      }
   if ( OrdersTotal ()== 0 ) fail= true ;
   }
if (fail= true ) return ( 0 );

내 코드를 컴파일하고 결과를 보고하면 다음과 같이 생각할 것입니다.

그가 이 코드를 필요한 것보다 일찍 입력했다면, 문제는 초기 연산자에 있는 것입니다. 무엇이 잘못되었는지 봅시다.

 
Ekburg :

내 코드를 컴파일하고 결과를 보고하면 다음과 같이 생각할 것입니다.

그가 이 코드를 필요한 것보다 일찍 입력했다면, 문제는 초기 연산자에 있는 것입니다. 무엇이 잘못되었는지 봅시다.


네, 컴파일은 했지만 문제는 여전했습니다.... 네, 코드가 더 일찍 들어가는 것 같긴 한데 안 들어가네요.
 
SpikeOne :

네, 컴파일은 했지만 문제는 여전했습니다.... 네, 코드가 더 일찍 들어가는 것 같긴 한데 안 들어가네요.

계정 이익 현재 계정의 이익 값을 기준 통화로 반환합니다.

이것이 문제입니다. 나는 당신이 달러로 이익을 알고 싶어한다고 생각합니다. 예를 들어 그는 유로로 돈을 줍니다.

코드의 첫 번째 명령문의 전체 계산을 다음과 같이 바꾸십시오.

계정 자본 현재 계정의 자기자본 금액을 반환합니다. 지분 계산은 거래 서버의 설정에 따라 다릅니다.

마지막으로 다음 명령문을 컴파일합니다.

 if ( AccountEquity ()>= 740 )
   {
   ...
   }
 
Ekburg :

계정 이익 현재 계정의 이익 값을 기준 통화로 반환합니다.

이것이 문제입니다. 나는 당신이 달러로 이익을 알고 싶어한다고 생각합니다. 예를 들어 그는 유로로 돈을 줍니다.

코드의 첫 번째 명령문의 전체 계산을 다음과 같이 바꾸십시오.

계정 자본 현재 계정의 자기자본 금액을 반환합니다. 지분 계산은 거래 서버 설정에 따라 다릅니다.

마지막으로 다음 명령문을 컴파일합니다.


문제가 다른 것 같습니다. 올바르게 작동하지 않는 어드바이저에 올바르게 작동하는 코드를 삽입하면 컴파일 후 어드바이저가 올바르게 작동하지 않고 브라우저에서 페이지를 열 때와 같은 느낌이 들며 당신은 매번 캐시합니다.

새로운 Expert Advisor를 만들고 거기에 작업 코드를 삽입해도 어떤 이유로 비뚤어지게 작동합니다.

 
SpikeOne :


.. 제대로 작동하지 않는 Expert Advisor에 올바르게 작동하는 코드를 삽입하면 컴파일 후 Expert Advisor가 올바르게 작동하지 않습니다...


그러면 나는 조수가 아닙니다) 전체 고문을 분류해야 합니다.
 
Ekburg :

그러면 나는 조수가 아닙니다) 전체 고문을 분류해야 합니다.


나는 주문 사이의 단계가 int 값으로 표시되고 1.7을 설정하고 두 배로 변경하여 제대로 작동하는 초기 데이터에서 jamb =)를 찾은 것 같습니다 =)