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

 
gyfto :


다음 질문이 있습니다. 터키의 init()에는 터미널을 멈추는 블록이 있습니다(dll로 전송하고 싶습니다). 물론 로그를 보는 것은 불가능합니다. 터미널은 Ctrl + Alt + Delete를 통해서만 닫힙니다. 추적을 위한 인쇄(및 블록에 포함된 주기의 경과 시간 측정)는 도움이 되지 않습니다. 인쇄는 아무 것도 쓰지 않으며 로그도 생성되지 않습니다. 같은 목적으로 FileOpen/FileWrite를 시도하고 있습니다. 파일은 생성 중(0Kb)만 하고 침묵합니다. FileOpen 다음에 FileWrite를 다음 줄에 넣었습니다. 아무 효과가 없습니다. 어느 방향으로 파나요?

이것을 사용해보십시오. 도움이 되지 않으면 오류를 검색하기 위해 언급된 초기화 블록을 플래그를 통해 일회성 실행을 위해 시작 부분으로 임시로 이동하고 로그에서 "가져오기"를 시도할 수 있습니다.
 
gyfto :


나는 주제를 가지고 그것을 닫았다 ... 나쁜 사람.

다음 질문이 있습니다. 터키의 init()에는 터미널을 멈추는 블록이 있습니다(dll로 전송하고 싶습니다). 물론 로그를 보는 것은 불가능합니다. 터미널은 Ctrl + Alt + Delete를 통해서만 닫힙니다. 추적을 위한 인쇄(및 블록에 포함된 주기의 경과 시간 측정)는 도움이 되지 않습니다. 인쇄는 아무 것도 쓰지 않으며 로그도 생성되지 않습니다. 같은 목적으로 FileOpen/FileWrite를 시도하고 있습니다. 파일은 생성 중(0Kb)만 하고 침묵합니다. FileOpen 다음에 FileWrite를 다음 줄에 넣었습니다. 아무 효과가 없습니다. 어느 방향으로 파나요?


보세요, 숨겨진 속성에 있지 않습니까?


그럴 가치가 없어.
 
TarasBY :
이것을 사용해보십시오. 도움이 되지 않으면 오류를 검색하기 위해 언급된 초기화 블록을 플래그를 통해 일회성 시작을 위해 시작 부분으로 임시로 이동하고 로그에서 "가져오기"를 시도할 수 있습니다.


시작 시 일회성 실행이나 초기화가 작동하지 않으며 Print나 FileWrite도 작동하지 않습니다. 나는 이 코드를 첨부하고 있습니다(다른 방법이 보이지 않을 뿐입니다). 발보가 있기 때문에 여기에 게시하지 않습니다. 버퍼의 모든 선언을 표시기 버퍼로 제거하고 내장된 기술 표시기에 대한 모든 호출을 페인트하여 dll로 전송할 준비를 했습니다. 나는 이미 어레이로 RAM을 오버플로하는 것에 대해 생각했기 때문에 가장 큰 어레이를 가지고 있고 다른 모든 어레이를 더하면 50.5미터가 나옵니다. 아뇨, 글쎄요, 블록 입구의 맨 첫 줄에도 인쇄가 되지 않는다면... - 그게 저를 혼란스럽게 합니다. 첨부된 버전은 FileWrite에서 true입니다.
파일:
eflfcaj.mq4  10 kb
 
gyfto :

시작 시 일회성 실행이나 초기화가 작동하지 않으며 Print나 FileWrite도 작동하지 않습니다. 나는 이 코드를 첨부하고 있습니다(다른 방법이 보이지 않을 뿐입니다). 발보가 있기 때문에 여기에 게시하지 않습니다. 버퍼의 모든 선언을 표시기 버퍼로 제거하고 내장된 기술 표시기에 대한 모든 호출을 페인트하여 dll로 전송할 준비를 했습니다. 나는 이미 어레이로 RAM을 오버플로하는 것에 대해 생각했기 때문에 가장 큰 어레이를 가지고 있고 다른 모든 어레이를 더하면 50미터가 나옵니다. 아뇨, 글쎄요, 블록 입구의 맨 첫 줄에도 인쇄가 되지 않는다면... - 그게 저를 혼란스럽게 합니다. 첨부된 버전은 FileWrite에서 true입니다.

코드 스타일이 없습니다. 공백, 다른 수준의 대괄호, 한 행의 여러 작업, 단일 주석이 아닌 ... 악몽! :-))

이것을 스스로 이해합니까?

 
MT4로 문제를 해결하는 데 도움을 주세요. 사용자 지정 표시기 가 호출되면 입력 매개변수와 색상이 창에 표시되지 않습니다(빠르게 깜박이고 사라집니다). 그것을 고치는 방법? MT4가 재정렬되었지만 도움이되지 않았습니다.
 
gyfto :


나는 주제를 가지고 그것을 닫았다 ... 나쁜 사람.


= :)
 
gyfto :

시작 시 일회성 실행이나 초기화가 작동하지 않으며 Print나 FileWrite도 작동하지 않습니다. 나는 이 코드를 첨부하고 있습니다(다른 방법이 보이지 않을 뿐입니다). 발보가 있기 때문에 여기에 게시하지 않습니다. 버퍼의 모든 선언을 표시기 버퍼로 제거하고 내장된 기술 표시기에 대한 모든 호출을 페인트하여 dll로 전송할 준비를 했습니다. 나는 이미 어레이로 RAM을 오버플로하는 것에 대해 생각했기 때문에 가장 큰 어레이를 가지고 있고 다른 모든 어레이를 더하면 50미터가 나옵니다. 아뇨, 글쎄요, 블록 입구의 맨 첫 줄에도 인쇄가 되지 않는다면... - 그게 저를 혼란스럽게 합니다. 첨부된 버전은 FileWrite에서 true입니다.

Vadim에 동의합니다. 코드를 읽기가 어렵습니다. 이 코드를 기능 블록으로 분해해 보십시오. 각각의 기능 블록은 출력을 출력하거나 파일에 기록합니다 . 예를 들어 다음과 같이 코드 실행을 "느리게"하는 구조에서 실행합니다.

 void SteppingThrough()
{
     int   li_Time = TimeLocal (), li_N = 0 ;
     bool lb_work = true , lb_break = false ;
     while ( IsStopped () == false )
    {
         if (lb_work)
        {
             switch (li_N)
            {
                 case 0 :
                     //---- Block 1
                    lb_work = false ;
                    li_N++;
                     break ;
                 case 1 :
                     //---- Block 2
                    lb_work = false ;
                    li_N++;
                     break ;
                 case N:
                     //---- Block N
                    lb_break = true ;
                    li_N++;
                     break ;
            }
             if (lb_break) break ;
        }
         if ( TimeLocal () > li_Time) {li_Time = TimeLocal (); lb_work = true ;}
    }
}

다음 블록의 실행을 1초로 지연시킵니다. - 이 시간은 터미널이 로그를 인쇄하기에 충분해야 합니다.

 
 

Kim 2는 "STOP에 의한 마지막 포즈 닫기 플래그"와 TAKE의 다른 기능이 매우 유사합니다.

여기 코드가 있습니다

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия последней позиции по стопу.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByStop( string sy= "" , int op=- 1 , int mn=- 1 ) {
   datetime t;
   double    ocp, osl;
   int       dg, i, j=- 1 , k=OrdersHistoryTotal();

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) {
       if (OrderSymbol()==sy || sy== "" ) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (op< 0 || OrderType()==op) {
             if (mn< 0 || OrderMagicNumber()==mn) {
               if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
   if ( OrderSelect (j, SELECT_BY_POS, MODE_HISTORY)) {
    dg=MarketInfo(OrderSymbol(), MODE_DIGITS);
     if (dg== 0 ) if ( StringFind (OrderSymbol(), "JPY" )< 0 ) dg= 4 ; else dg= 2 ;
    ocp= NormalizeDouble (OrderClosePrice(), dg);
    osl= NormalizeDouble (OrderStopLoss(), dg);
     if (ocp==osl) return (True);
  }
   return (False);
}
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия последней позиции по тейку.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByTake( string sy= "" , int op=- 1 , int mn=- 1 ) {
   datetime t;
   double    ocp, otp;
   int       dg, i, j=- 1 , k=OrdersHistoryTotal();

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) {
       if (OrderSymbol()==sy || sy== "" ) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (op< 0 || OrderType()==op) {
             if (mn< 0 || OrderMagicNumber()==mn) {
               if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
   if ( OrderSelect (j, SELECT_BY_POS, MODE_HISTORY)) {
    dg=MarketInfo(OrderSymbol(), MODE_DIGITS);
     if (dg== 0 ) if ( StringFind (OrderSymbol(), "JPY" )< 0 ) dg= 4 ; else dg= 2 ;
    ocp= NormalizeDouble (OrderClosePrice(), dg);
    otp= NormalizeDouble (OrderTakeProfit(), dg);
     if (ocp==otp) return (True);
  }
   return (False);
}

보시다시피 매우 유사합니다.

그러나 어떤 이유로 STOP 닫기만 작동합니다.

SL=  isCloseLastPosByStop( "" , - 1 , - 1 );
TP=  isCloseLastPosByTake( "" , - 1 , - 1 );

Print (SL, "_" ,TP); 

나는 손으로 포즈를 열고 짧은 TAKE를 넣습니다. 작동하지만 EA는 1을 인쇄하지 않지만 계속해서 0을 인쇄합니다.

그러나 STOP을 닫으면 올바르게 인쇄됩니다. if stop =1, if not stop =0....

알아낼 수 있도록 도와주세요....

 
lottamer :

Kim 2는 "STOP에 의한 마지막 포즈 닫기 플래그"와 TAKE의 다른 기능이 매우 유사합니다.

여기 코드가 있습니다

보시다시피 매우 유사합니다.

그러나 어떤 이유로 STOP 닫기만 작동합니다.

나는 손으로 포즈를 열고 짧은 TAKE를 넣습니다. 작동합니다 - EA는 1을 인쇄하지 않지만 계속해서 0을 인쇄합니다.

그러나 STOP을 닫으면 올바르게 인쇄됩니다. if stop =1, if not stop =0....

plz는 그것을 알아낼 수 있도록 도와주세요....


정지 주문이 열린 위치 에 있는 가격과 닫은 가격을 주의 깊게 살펴보십시오. Igor의 기능에서 비교되는 것은 이러한 가격이지만 미끄러짐은 고려되지 않습니다.
사유: