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

 
IgorM :

init()에 복잡한 계산이나 스와핑 히스토리가 있거나 터미널에 터미널을 멈추거나 ...

일반적으로 코드를 초기화할 시간이 있습니다. 정확히 얼마인지는 말씀드리지 않겠습니다만, 코드 초기화 중에 터미널이 코드를 중단하면 로그에 다음과 같은 오류가 발생합니다. " ... . 전문가의 시간 초과 ...."

터미널이 로그에 오류를 출력하지 않으면 초기화가 성공한 것이며 start() 함수 자체를 확인하기 쉽습니다. 첫 번째 줄에 start()를 작성하십시오. Print("new tick");


그게 내가 한 일이다((

int start()
  {
   Print ( "start" );
  
/*current_values_from_MT(CUR, CUR_BUF);
current_values_from_MT(MAIN, MAIN_BUF);*/

  


   return ( 0 );
  }

예, 많은 정보를 다운로드하고, 많은 계산도 있고, 틱으로 실험합니다.

계산은 2 - 3분이 소요되며 MT는 "멈추지 않음", 모든 것이 정상적으로 작동하고 Print() 및 Alert의 메시지가 화면에 표시된 다음 모든 것))

MT에서 온 모든 메시지를 살펴 보았지만 오류를 찾지 못했습니다 ...

도와주세요.

 
BBSL :

계산은 2 - 3분이 소요되며 MT는 "멈추지 않음", 모든 것이 정상적으로 작동하고 Print() 및 Alert의 메시지가 화면에 표시된 다음 모든 것))

Print()가 표시되면 THEN start()가 확실히 작동하지만 계산에 2-3분이 걸린다는 귀하의 진술은 혼란스럽습니다. 터미널이 로드되면 sleep() 으로 계산을 중단해야 합니다. 기능이 없으면 터미널이 확실히 중단됩니다.

MT4에는 디버거가 없기 때문에 의심스러운 코드 섹션에 Print()를 삽입하고 충족되거나 충족되지 않은 코드 섹션과 조건을 포착합니다. 그렇지 않으면 아무것도

 
미결제 주문이 TakeProfit 또는 StopLoss에 의해 트리거되고 TakeProfit 및 StopLoss 값 자체가 관심이 없다는 사실을 수정해야 합니다.
 
Jaguar1974 :

주문이 TakeProfit 또는 StopLoss에 의해 실행되었는지 확인하는 방법은 무엇입니까? 답변 해주셔서 감사합니다!

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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(sy, 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(sy, 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);
}
두 함수의 코드를 확인하고 실행 속도 와 특히 작업에 최적화를 위해 하나로 병합하십시오...
 
eddy :
Sayod , 어떤 TF와 어떤 매개변수로 거래했습니까?


차이점은 무엇입니까? 아니면 이미 반대 작업을 수행했으며 테스트하고 싶습니까?

h1에 기본적으로 거래되며,

핍스텝 - 30

LotExpo - 1.59

아이디어가 구현되면 매개 변수가 실제로 중요하지 않다고 생각하지만 어드바이저는 IMHO와 같은 모든 매개 변수에 유용할 것이라고 생각합니다.

 
Jaguar1974 :
미결제 주문이 TakeProfit 또는 StopLoss에 의해 트리거되고 TakeProfit 및 StopLoss 값 자체가 관심이 없다는 사실을 수정해야 합니다.

트리거 사실만 수정하면 이전 틱 의 주문 수를 기억하고 다음 틱에서 비교할 수 있습니다. 주문 수가 변경된 경우 ....
 
kiimar :
터미널은 "so:19.5%/28.4/145.8"이라는 코멘트와 함께 패배 주문을 마감했습니다. 이것은 무엇을 의미 하는가?
이것은 19.5%의 자유 증거금 수준에 도달했을 때 귀하가 중도금을 내고 손실 거래가 규정에 따라 마감되었음을 의미합니다.
 
IgorM :

Print()가 표시되면 THEN start()가 확실히 작동하지만 계산에 2-3분이 걸린다는 귀하의 진술은 혼란스럽습니다. 터미널이 로드되면 sleep()으로 계산을 중단해야 합니다. 기능이 없으면 터미널이 확실히 중단됩니다.

MT4에는 디버거가 없기 때문에 의심스러운 코드 섹션에 Print()를 삽입하고 충족되거나 충족되지 않은 코드 섹션과 조건을 포착합니다. 그렇지 않으면 아무것도


죄송합니다. 그렇게 지정하지 않았습니다. 인쇄 는 인터넷에서만 작동합니다. 시작할 수 없습니다

예, 각 기능의 끝에 모든 것이 정상인지 확인하기 위해 이에 대한 메시지와 함께 인쇄를 넣습니다. 그리고 모든 메시지(모든 기능)는 init가 끝날 때까지 100% 작동했습니다. 시작으로 갈 수 없습니다!

답변에 미리 감사드립니다!

 
감사합니다. 아직 배울 것이 많습니다.
artmedia70 :
두 함수의 코드를 확인하고 실행 속도와 특히 작업에 최적화를 위해 하나로 병합하십시오...
 
BBSL :


죄송합니다. 그렇게 지정하지 않았습니다. 인쇄는 인터넷에서만 작동합니다. 시작할 수 없습니다

예, 각 기능의 끝에 모든 것이 정상인지 확인하기 위해 이에 대한 메시지와 함께 인쇄를 넣습니다. 그리고 모든 메시지(모든 기능)는 init가 끝날 때까지 100% 작동했습니다. 시작으로 갈 수 없습니다!

답변에 미리 감사드립니다!

그래서 솔직히 터미널에 진드기가 없습니다. 저것들. 연결되어 있지 않거나 오프라인 차트에서 작업 중이거나 초기화에서 IsExpertEnabled() 를 확인하고 허용되지 않으면 어드바이저를 켜십시오.