오류, 버그, 질문 - 페이지 564

 
오류를 사용하여 클라우드 작업.
이 문제의 원인은 무엇입니까? 클라우드 리소스를 사용할 수 없습니다.
 
Urain :

설명하다.


예정된 변경 사항에 대한 사전 발표가 있었습니다. 다음 빌드 의 최종 변경 목록은 빌드 자체가 릴리스된 게시됩니다.
 
Rosh :
예정된 변경 사항에 대한 사전 발표가 있었습니다. 다음 빌드 의 최종 변경 목록은 빌드 자체가 릴리스된 게시됩니다.
고맙습니다.
 

나는 발생한 오류를 잡는 데 완전히 절망 할 때까지 오랫동안 고집스럽게 표시기 코드를 파고 들었습니다. 내 실수가 아니라 터미널 작동 오류에 대한 의심이 있기 때문에 "Dummies"에 쓰지 않았습니다.

표시기의 작업은 다른 시간 프레임의 현재 시간 프레임에 프랙탈을 배치하고 새 프랙탈 막대가 나타날 때 새 프랙탈을 추가하는 것입니다. 프랙탈 화살표를 배치하는 다른 방법을 제안하지 마십시오. 그것은 우리가 말하는 것이 아닙니다. 여기에 있는 질문은 이 특정 코드와 관련된 기본적이며 아마도 터미널의 잘못된 작동과 관련될 수 있습니다. iFractals 도움말의 예제는 인식을 단순화하기 위해 논리적으로 반으로 나뉘었으며(상단 프랙탈에만 해당) 일부 코드도 표준 Fractals.mq5에서 차용했습니다. 나는 증오를 피하기 위해 극도로 세심해야했습니다. 거의 모든 가능한 배열을 연결하고 소비 된 배열을 정리하고 호출 된 표시기의 핸들을 해제했는데 작업 결과에 눈에 띄는 차이가 없었습니다. 작업에서 다음과 같은 문제점과 기능이 발견되었습니다.

  1. 프라이머리에서!! 터미널 실행, 새 차트 창 열기, 새로 컴파일된 표시기 던지기, 모든 프랙탈이 히스토리의 끝에서 0 막대에 누적되고(하나만 설정된 것 같습니다), 아이디어에 따라 정렬되지 않았으며 코드의 논리. 올바른 배치는 다른 시간 프레임으로 이동할 때만 시작할 수 있습니다(때로는 처음에는 작동하지 않을 수도 있음). 또한 차트에서 지표를 삭제하고, 차트 창을 닫고, 다시 컴파일하고, 새 창을 열고, 지표를 추가할 때 거의 항상 필요한 프랙탈 배열을 즉시 얻을 수 있습니다. 잘못된 효과를 보려면 터미널을 완전히 언로드하고 1단계의 모든 단계를 반복해야 합니다. 아마도 문제는 호출된 표시기의 핸들 수명과 사용자 지정 표시기 의 초기 실행 중 특정 동작에 있을 수 있습니다. 프랙탈의 잘못된 배열의 경우(0 막대에서 모두 "압축"된 경우) 모든 exact_extremum 요소 주기의 출력은 0 결과를 제공하지만 TimeUpBuffer의 인접 값 출력은 계산되고 채워지는 기준은 항상 순차적으로 다른 시간 날짜를 제공합니다. 이것은 즉시 질문을 제기합니다. 후속 시간에 올바른 값으로 정기적으로 채워지면 표시기의 초기 삽입 중에 채워지지 않는 이유는 무엇입니까?
  2. 동일한 코드, 동일한 문제를 상속하지만 이제는 완전히 다른 기능에 중점을 둡니다. 이 표시기에서 일부 중간 계산 배열을 표시기 버퍼가 있는 INDICATOR_CALCULATIONS로 연결하지 않을 수 있습니다. 이것은 표시기 코드의 원래 버전입니다. 그리고 단락 1.을 제외한 모든 것이 적합한 것 같습니다.
  3. 그러나 매우 이해하기 쉽게 지시자 버퍼를 사용하여 중간 계산을 위해 최상의 권장 사항을 따르고 배열을 연결해 보겠습니다.
     #property indicator_chart_window
    #property indicator_buffers 3
    #property indicator_plots   1
    
    [...]
    
    int OnInit ()
      {
       [...]
       SetIndexBuffer ( 1 ,PreliminaryUpBuffer, INDICATOR_CALCULATIONS );
       SetIndexBuffer ( 2 ,exact_extremum, INDICATOR_CALCULATIONS );
       [...]
      }
    컴파일하고 실행합니다. 결과적으로 터미널 전문가 로그에 오류 메시지가 표시됩니다. 2011.11.11 07:42:03 (AUDUSD,H1) Array out of range , line:
                 CopyHigh ( _Symbol , PERIOD_M1 ,TimeUpBuffer[shift+ 1 ]- 1 ,
                                           TimeUpBuffer[shift],
                                           exact_extremum);
    
    일부 시간대의 프랙탈 배열은 없거나 산발적입니다.
  4. 우리는 집회를 시작하고, 자동 쓰기에 따라 손으로 마법의 패스를 만들고, 다음을 대체합니다.
     #property indicator_chart_window
    #property indicator_buffers 3
    #property indicator_plots   1
    에:
     #define NUMBER 1
    
    #property indicator_chart_window
    #property indicator_buffers NUMBER+ 2
    #property indicator_plots   NUMBER
    그렇게 하는 것이 맞는지 아닌지, 그러나 그것은 이해할 수 없는 방식으로 작동합니다!

지식권 거주자, 특히 개발자에게 설득력 있는 요청: 각 요점을 설명하고 표시기 코드를 디버깅하는 방법을 알려주십시오(완전히 다른 구현으로 이동하지 않는 한).

감사하고 파일을 첨부합니다.

추신: 파일 이름에 괄호가 있었지만 업로드 후 엉망이 되었습니다.

 

그리고 마술 거래의 현재 이익 을 결정하는 방법은 무엇입니까?

이 코드는 닫힌 거래에서 이익을 반환하지만 열린 거래에서 필요합니다.

 #include <Trade\Trade.mqh>
CTrade trade;
void OnTick ()
  {
   double profit= 0 ;
   if ( PositionSelect ( Symbol ()))profit= PositionGetDouble ( POSITION_PROFIT );
   if (profit== 0 ) trade.PositionOpen( Symbol (), ORDER_TYPE_SELL , 0.1 , SymbolInfoDouble ( Symbol (), SYMBOL_ASK ), 0 , 0 , "" );
   if (profit> 1 ) trade.PositionOpen( Symbol (), ORDER_TYPE_BUY , 0.1 , SymbolInfoDouble ( Symbol (), SYMBOL_ASK ), 0 , 0 , "" );
   
   double ld_return= 0 ;  
   HistorySelect ( 0 , TimeTradeServer ());
   for ( int i= HistoryDealsTotal ()- 1 ;i>= 0 ;i--) // По всем сделкам от конца к началу
     {
       ulong ticket= HistoryDealGetTicket (i); // Определение тикета сделки и ее выделение
       if (ticket!= 0 ) 
      {
       if ( HistoryDealGetInteger (ticket, DEAL_TYPE )< 2 )
      ld_return+= HistoryDealGetDouble (ticket, DEAL_PROFIT );
      }
     }     
   Comment (ld_return);   
  }
 

초기화가 실패하는 이유를 찾는 방법은 무엇입니까?

초기화를 시작하기 전에 함수로 오류를 재설정합니다.

ResetLastError();

초기화가 끝날 때 오류가 발생합니다.

Print("Ошибка " + IntegerToString(GetLastError()));

결과적으로 탭에서 전문가를 얻습니다.

2011.11.11 08:47:51 SimpleExpert (EURUSD,H1) 오류 0

로그 탭에서

2011.11.11 08:47:51 SimpleExpert(EURUSD,H1) 초기화 실패

 
Konstantin83 :

초기화가 실패하는 이유를 찾는 방법은 무엇입니까?

초기화를 시작하기 전에 함수로 오류를 재설정합니다.

ResetLastError();

나는 마지막에 오류를 얻는다

Print("Ошибка " + IntegerToString(GetLastError()));

결과적으로 탭에서 전문가를 얻습니다.

2011.11.11 08:47:51 SimpleExpert (EURUSD,H1) 오류 0

로그 탭에서

2011.11.11 08:47:51 SimpleExpert(EURUSD,H1) 초기화 실패

OnInit는 0을 반환합니까 아니면 0을 반환하지 않습니까?
 
stringo :
OnInit는 0을 반환합니까 아니면 0을 반환하지 않습니까?

OnInit는 true를 반환하지만 어떻게 든 놓쳤습니다.

감사합니다. 모든 것이 좋습니다.

 
ddd06 :

그리고 마술 거래의 현재 이익 을 결정하는 방법은 무엇입니까?

이 코드는 닫힌 거래에서 이익을 반환하지만 열린 거래에서 필요합니다.

Dmitry의 기사( Integer )를 참조하십시오. 모든 것이 최선의 방법으로 이루어집니다. 기사: 주어진 매직 넘버로 집계 포지션의 양을 계산하는 최적의 방법 .
 
안녕하세요, 저는 다중 통화를 작성하기 시작했습니다. iMA라고 부릅니다 . 어떤 이유로 실제 거래에서 모든 것이 잘 작동합니다. 테스터에서 시작하자마자 오류가 발생합니다. 전문가는 '이동 평균' 표시기를 로드할 수 없기 때문에 제거 ], 지표에 어떤 지표가 있는지, 명확하지 않아 인터넷에서 명쾌한 답을 찾지 못했습니다. 조언 부탁드립니다. 매우 감사하겠습니다.
Документация по MQL5: Технические индикаторы / iMA
Документация по MQL5: Технические индикаторы / iMA
  • www.mql5.com
Технические индикаторы / iMA - Документация по MQL5
사유: