[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 301

 
rustein :
포럼에서 검색했지만 빠른 해결책을 찾지 못했습니다. 테스터에서 작동하지 않는 동안 문제를 해결하도록 도와주세요. 실생활에서 작동합니다.

고맙습니다.

테스터가 중단되면 그래야 합니다. (반드시 루프의 종료를 설명하십시오).

이와 같이

     while (Result == - 1 )
    {
       if (TotalOpenOrders() < TotalOrders)
      {
         if (TrendDetection() == BULL)
        {
          Result = OrderSend ( Symbol (),OP_BUY,Lots, NormalizeDouble (Ask, Digits ),Slippage, NormalizeDouble (Ask, Digits )-(StopLoss* Point ), NormalizeDouble (Ask, Digits )+(TakeProfit* Point ),OrderComments,Magic, 0 , CLR_NONE ); 
         if (( IsTesting ()|| IsOptimization ())&&Result == - 1 ) break ;
        }
 
drknn :


당신에게 무엇이 문제인지 말하기 어렵습니다. 코드의 괄호 안에 항상 음수를 넣는 것을 MQL4의 규칙으로 만드십시오. 대괄호가 없으면 때때로 어떤 이유로 오류가 나타납니다.

그러나 extern으로 시작하는 코드 줄에서는 반대로 괄호 안에 음수 값을 사용할 필요가 없습니다. 왜 그렇게 - 나는 모른다.

감사하지만 작동하지 않습니다. if(IsTesting()==true || IsOptimization()==true) 루프를 제거하는 방법을 알려주실 수 있습니까?
 
rustein :
감사하지만 작동하지 않습니다. if(IsTesting()==true || IsOptimization()==true) 루프를 제거하는 방법을 알려주실 수 있습니까?

 while (Result == - 1 )
    {
       if (TotalOpenOrders() < TotalOrders)
      {
         if (TrendDetection() == BULL)
        {
          Result = OrderSend ( Symbol (),OP_BUY,Lots, NormalizeDouble (Ask, Digits ),Slippage, NormalizeDouble (Ask, Digits )-(StopLoss* Point ), NormalizeDouble (Ask, Digits )+(TakeProfit* Point ),OrderComments,Magic, 0 , CLR_NONE ); 
         if (( IsTesting ()|| IsOptimization ())&&Result == - 1 ) break ;
        }

^^

 
drknn :
그는 경고가 필요하지 않습니다. 코드의 어딘가에 파일이 이미 열려 있지만 닫혀 있지는 않은 것으로 알고 있습니다. 따라서 분명히 파일을 다시 열 수 없으며 그 사람은 경고 창으로 고통받습니다. 비록 내가 틀렸을 수도 있지만 - 나는 텔레파시 클럽의 회원이 아닙니다 :(
 상황은 다음과 같습니다. 특정 순간에 Expert Advisor는 ssv 파일을 살펴보고 어떤 명령이 있는지(구매, 판매, 닫기) 확인합니다. 이 명령은 EXСEL에 의해 파일에 기록됩니다. 문제는 전문가가 파일을 읽는 순간에
Excel에서 열면 전문가가 오류를 표시하고 그뿐이지만 명령을 읽을 때까지 다시 올라가서 시도해야 합니다. 
  while 구성에 대해 몰랐습니다 ...
 봐, 제발, 올바르게 썼어:
 정수 초기화()
 {
         동안(핸들< 1 )
         {
         핸들 = FileOpen ( "firstfile.csv" , FILE_CSV | FILE_READ | FILE_WRITE , '\t' );    
        }

}

 
sanches83 :

}

예, 하지만 "전투")를 확인할 수 있기 때문에 왜 물어보십시오.)).
 
rustein :
감사하지만 작동하지 않습니다. if(IsTesting()==true || IsOptimization()==true) 루프를 제거하는 방법을 알려주실 수 있습니까?


다음과 같이 루프 없이 시도하십시오.

 double   PR,SL,TP;
PR= NormalizeDouble (Ask, Digits );
SL= NormalizeDouble (PR-StopLoss* Point , Digits );
TP= NormalizeDouble (PR+TakeProfit* Point , Digits );
int Result= 0 ;
Result = OrderSend ( Symbol (),OP_BUY,Lots,PR,Slippage,SL,TP,OrderComments,Magic, 0 , CLR_NONE );
if (Result<= 0 ){
         Print ( "Ошибка № " , GetLastError (), " при открытии бай-ордера. PR = " ,PR, "   SL = " ,SL, "   TP = " ,TP);
}

이것은 적어도 포즈가 열리지 않는 이유를 이해하는 데 도움이 될 것입니다.

 
costy_ :

^^

많은 감사합니다 :)

모두 감사합니다. 수정했습니다. 작동합니다.

도움을 위해 낮은 활.

 
costy_ :
예, 하지만 "전투")를 확인할 수 있기 때문에 왜 물어보십시오.)).


일반적으로 이것은 사실이지만 작동하려면 루프 전에 변수를 초기화해야 합니다.

핸들=0;

동안(핸들<1)
{
handle=FileOpen("firstfile.csv", FILE_CSV|FILE_READ|FILE_WRITE ,'\t');
}

글쎄, 이것은 코드 실행이 루프 본문에 들어가고 무시하지 않는다는 것을 절대적으로 확인하기 위한 것입니다.

 
drknn :


일반적으로 이것은 사실이지만 작동하려면 루프 전에 변수를 초기화해야 합니다.

핸들=0;

동안(핸들<1)
{
handle=FileOpen("firstfile.csv",FILE_CSV|FILE_READ|FILE_WRITE,'\t');
}

글쎄, 이것은 코드 실행이 루프 본문에 들어가고 무시하지 않는다는 것을 절대적으로 확인하기 위한 것입니다.

예, 불행히도 점쟁이처럼 질문에 대한 코드의 일부로 스크립트를 작성하거나, 음, 전체 코드를 작성해야 오류를 지적하기가 더 쉬울 것입니다.(Coffee grounds end).
 

사람들을 많이 도와주세요!!

아침 채널 전략 고문을 작성 하려고합니다. 결론은 EURGBP 쌍의 6:01에서 오전 0시부터 오전 6시까지 가격 움직임 채널을 결정한다는 것입니다. 우리는 두 개의 딜레이를 놓고 트리거된 딜레이가 스톱으로 닫히면 반대 방향으로 엽니다. 작동하지 않는 전략의 두 번째 부분입니다. 저것들. 중지가 트리거되면 반대 방향으로 주문을 열 수 없습니다.
파일: