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

 
alexvd :

스톱 및 테이크는 어떻게 배치되나요?

먼저 포지션을 개설하고 나서 수정합니까, 아니면 적절한 SL 및 TP를 즉시 표시합니까?

위치가 먼저 열린 다음 수정됩니다 ...
 
Voodoo_King :

빌드 384. 다른 버그를 찾은 것 같습니다... 히스토리를 볼 때 주문 - sAvsEm이라고 하는 손절매 및 이익실현 수준 설정이 표시되지 않습니다...


주문할 때 표시됩니다. 그들은 위치가 중지에 의해 서버에 의해 닫힐 때 결석합니다. 이는 자연스러운 현상이기 때문입니다. 위치를 닫을 때 서버는 중지를 설정하지 않습니다.
















































































































 

나는 그런 것을 발견했다. 버그인지 아닌지는 모르겠지만 그런 것 같습니다. 다음 코드:

lot= NormalizeDouble (My_AccountInfo.MaxLotCheck( _Symbol , ORDER_TYPE_BUY ,latest_price.ask)/ 10 , 2 );
printf (lot);

테스터 로그에 표시(예금 $1000):

2011.01.28 20:06:48    Core 1    2010.01.04 00:56:00   0.07000000000000001

(NormalizeDouble) 함수는 7 이후에 0이 아닌 모든 숫자를 제거해야 하지 않습니까?

나는 솔루션을 다음과 같은 형식으로 찾았다고 생각했습니다. lot=floor((My_AccountInfo.MaxLotCheck(_Symbol, ORDER_TYPE_SELL ,latest_price.ask)/10)*100)/100,

그러나 유사한 결과도 나타납니다. 방법 - 무역 요청에서 얼마나 중요합니까?

 

안녕하세요!

루프 실행 상태의 백분율과 몇 가지 값을 더 표시하도록 Comment 함수를 루프 본문에 삽입했습니다. 사이클 본문의 간단한 알고리즘은 5분 동안(그 이상은 아닐 경우) 실행되었지만 32000바 값(Close,High,Low,Open)만 다시 계산되었습니다. 루프 동안 어레이가 동적으로 증가한다는 사실에 대해 불평했지만 이것은 사실이 아닙니다. 알고리즘을 디버깅 한 후 주석이 제거되었습니다. 계산이 수행되기 시작했습니다. 맙소사, 잠시 후.

주석 기능 이 프로그램 실행을 너무 느리게 하지 않습니까 ??? 솔직히 놀랐다.

시스템: Windows XP, 터미널 5.00.384.

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Программы MQL5 / Выполнение программ - Документация по MQL5
 
KffAlex :

안녕하세요!

루프 실행 상태의 백분율과 몇 가지 값을 더 표시하도록 Comment 함수를 루프 본문에 삽입했습니다. 사이클 본문의 간단한 알고리즘은 5분 동안(그 이상은 아닐 경우) 실행되었지만 32000바 값(Close,High,Low,Open)만 다시 계산되었습니다. 루프 동안 어레이가 동적으로 증가한다는 사실에 대해 불평했지만 이것은 사실이 아닙니다. 알고리즘을 디버깅 한 후 주석이 제거되었습니다. 계산이 수행되기 시작했습니다. 맙소사, 잠시 후.

주석 기능 이 프로그램 실행을 너무 느리게 하지 않습니까 ??? 솔직히 놀랐다.

시스템: Windows XP, 터미널 5.00.384.

나도 같은 효과를 보았다.
 

공개 가격만 사용하여 히스토리에 대해 Expert Advisor를 실행함으로써 Sell 포지션은 공개 가격이 아닌 High에 열리고 Low 가격에 닫힙니다.

왜 이런 일이 발생합니까?

Expert Advisor에서는 Open[0] 가격만 사용하여 포지션을 열고 닫는 신호를 검색합니다. EventSetTimer(1)에서 사용합니다.

 
Valmars :

주문할 때 표시됩니다. 그들은 위치가 중지에 의해 서버에 의해 닫힐 때 결석합니다. 이는 자연스러운 현상이기 때문입니다. 위치를 닫을 때 서버는 중지를 설정하지 않습니다.

뭐라고요 :) ? 주문할 때 어디에 표시되나요?

"기록" 보고서에 대해 이야기하고 있으며 포지션에 이러한 값이 있지만 손절매 및 이익실현 열에는 아무 것도 표시되지 않습니다.

보고서에 중지가 설정되었는지 여부를 이해하는 방법은 무엇입니까? 그것이 작동했다면 볼 수 있지만 그렇지 않은 경우 ???

 

다음 질문이 있습니다.

작업은 테스트 단계에서 특정 파일에 Equity 값을 쓰고 이전 값을 지우는 것입니다.

하지만 다음과 같은 일이 발생합니다.

1. OnInit()에 FileDelete() 가 없는 경우 기존에 기록된 내용에 추가로 기록이 발생합니다.

2. 그러나 OnInit()에 FileDelete()가 있는 경우 OnCalculatde()의 동일한 Equity 항목에도 불구하고 결과 파일은 비어 있습니다.

왜 이런 일이 발생하고 어떻게 방지합니까?

아래 코드를 제공합니다.

 #property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link       "http://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
#property indicator_label1   "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  Red
#property indicator_style1  STYLE_SOLID
#property indicator_width1   1
double    Values[];
string    Array[];
string    filename= "equity FileWrite25.txt" ;
int       handle;
int       NumberCopyElements;
string    common_folder;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit (){
   SetIndexBuffer ( 0 ,Values, INDICATOR_DATA );
   PlotIndexSetInteger ( 0 , PLOT_DRAW_BEGIN , 100 );
   PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , EMPTY_VALUE );
   ArraySetAsSeries (Values, false );
   //---
   common_folder= TerminalInfoString ( TERMINAL_COMMONDATA_PATH );
   FileDelete (filename, FILE_COMMON );
   return ( 0 );
}
int OnCalculate ( const int         rates_total,
                 const int         prev_calculated,
                 const datetime &  time[],
                 const double &    open[],
                 const double &    high[],
                 const double &    low[],
                 const double &    close[],
                 const long &      tick_volume[],
                 const long &      volume[],
                 const int &       spread[])
{  
   uint written;
   handle= FileOpen (filename, FILE_WRITE | FILE_READ | FILE_COMMON | FILE_TXT );
   if (handle!= INVALID_HANDLE ){
       FileSeek (handle, 0 , SEEK_END );
      written= FileWrite (handle, TimeToString ( TimeCurrent ()), " " , AccountInfoDouble ( ACCOUNT_EQUITY )); //TimeToString(time[i]),
       PrintFormat ( "Equity FileWrite25 - OnCalculate(): Записано %d байт в общую папку всех терминалов - %s" ,written,common_folder);
   }
   else {
       Print ( "Equity FileWrite25 - OnCalculate(): Не удалось открыть файл " ,filename, ".  Ошибка " , GetLastError ());     
   }
   FileClose (handle);
   return rates_total;
}
void OnDeinit ( const int reason){
   FileClose (handle);
}
 
Voodoo_King :

뭐라고요 :) ? 주문할 때 어디에 표시되나요?

"기록" 보고서에 대해 이야기하고 있으며 포지션에 이러한 값이 있지만 손절매 및 이익실현 열에는 아무 것도 표시되지 않습니다.

보고서에 중지가 설정되었는지 여부를 이해하는 방법은 무엇입니까? 그것이 작동했다면 볼 수 있지만 그렇지 않은 경우 ???

'History/Orders' 탭에 표시됩니다. Stop Loss와 Take Profit이 무엇이며, Stop Loss가 발생했을 때 서버 가 포지션 을 청산하는 순서는 무엇이라고 생각하십니까? 결국, 당신은 기록의 주문 매개 변수를 정확히 고려하고 있습니다.
 
DV2010 :

다음 질문이 있습니다.

작업은 테스트 단계에서 특정 파일에 Equity 값을 쓰고 이전 값을 지우는 것입니다.

하지만 다음과 같은 일이 발생합니다.

1. OnInit()에 FileDelete()가 없는 경우 기존에 기록된 내용에 추가로 기록이 발생합니다.

2. 그러나 OnInit()에 FileDelete()가 있는 경우 OnCalculatde()의 동일한 Equity 항목에도 불구하고 결과 파일은 비어 있습니다.

왜 이런 일이 발생하고 어떻게 방지합니까?

아래 코드를 제공합니다.

테스트 모드를 인식하는 해법을 생각해 냈지만, 여기에는 다소 당혹스러운 경험론이 있다.

(나는 역사의 깊이에 들여 쓰기를 설정하고 실시간을 차단하기 위해 테스터의 시작 시간을 프로그래밍 방식으로 얻을 가능성을 찾으려고 노력했습니다.

그러나 불행히도 나는 그것을 찾지 못했습니다.)

   if (rates_total - prev_calculated > 1 && rates_total - prev_calculated < 10000 ){
     FileDelete (filename, FILE_COMMON );
   }   
그러나 여기에 완전히 다른 성격의 문제가 발생했습니다. 이는 테스트 기간을 변경한 후 테스트 결과에 따른 지표 가 어떤 이유로 사라지지만 그 후에 새로운 기간에 대해 편집이 이루어지면 테스터를 시작하면 표시됩니다.

벌레?