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

 
hoz :

간단한 지표를 작성했습니다. 코드는 다음과 같습니다.

버퍼가 하나만 있습니다. double 유형의 표시기 값.

Expert Advisor에서 지표의 값을 가져와 거래에 필터로 적용하기로 결정했습니다.

여기에 마지막으로 형성된 막대에 지정된 표시기 버퍼의 기능에 대한 간단한 호출을 작성했습니다.

테스터에서 기울기 값이 잘못 반환됩니다.

왜 그런 겁니까? 유형이 올바르게 지정되었습니다. 호출도 올바른 것 같습니다. 표시기가 제대로 작동하고 있습니다. 다음은 테스터의 로그 로그와 현재 시장의 실제 시장에서 가져온 것입니다.

일부 숫자 2147483647 이 필수 숫자 대신 항상 반환되는 이유는 무엇입니까?

2147483647 과 같은 빈 값( EMPTY_VALUE )이 반환됩니다. Ctrl+D의 가치가 있고 지표 자체의 데이터를 볼 수 있습니까?
 
hoz :

간단한 지표를 작성했습니다. 코드는 다음과 같습니다.

버퍼가 하나만 있습니다. double 유형의 표시기 값.

Expert Advisor에서 지표의 값을 가져와 거래에 필터로 적용하기로 결정했습니다.

여기에 마지막으로 형성된 막대에 지정된 표시기 버퍼의 기능에 대한 간단한 호출을 작성했습니다.

테스터에서 기울기 값이 잘못 반환됩니다.

왜 그런 겁니까? 유형이 올바르게 지정되었습니다. 호출도 올바른 것 같습니다. 표시기가 제대로 작동하고 있습니다. 다음은 테스터의 로그 로그와 현재 시장의 실제 시장에서 가져온 것입니다.

일부 숫자 2147483647 이 필수 숫자 대신 항상 반환되는 이유는 무엇입니까?


재설계된 표시기

 2013.02 . 26 21 : 22 : 39      2011.12 . 30 23 : 59   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0003
2013.02 . 26 21 : 22 : 39      2011.12 . 30 23 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0003
2013.02 . 26 21 : 22 : 39      2011.12 . 30 22 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0006
2013.02 . 26 21 : 22 : 39      2011.12 . 30 21 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0009
2013.02 . 26 21 : 22 : 39      2011.12 . 30 20 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0011
2013.02 . 26 21 : 22 : 39      2011.12 . 30 19 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0012
2013.02 . 26 21 : 22 : 39      2011.12 . 30 18 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0013
2013.02 . 26 21 : 22 : 39      2011.12 . 30 17 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0014
2013.02 . 26 21 : 22 : 39      2011.12 . 30 16 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0013
2013.02 . 26 21 : 22 : 39      2011.12 . 30 15 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0013
2013.02 . 26 21 : 22 : 39      2011.12 . 30 14 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0013
2013.02 . 26 21 : 22 : 39      2011.12 . 30 13 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0013
2013.02 . 26 21 : 22 : 39      2011.12 . 30 12 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0013
2013.02 . 26 21 : 22 : 39      2011.12 . 30 11 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0013
2013.02 . 26 21 : 22 : 39      2011.12 . 30 10 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0013
2013.02 . 26 21 : 22 : 39      2011.12 . 30 09 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0012
2013.02 . 26 21 : 22 : 39      2011.12 . 30 08 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0012
2013.02 . 26 21 : 22 : 39      2011.12 . 30 07 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0012
2013.02 . 26 21 : 22 : 39      2011.12 . 30 06 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0012
2013.02 . 26 21 : 22 : 39      2011.12 . 30 05 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0011
2013.02 . 26 21 : 22 : 39      2011.12 . 30 04 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0012
2013.02 . 26 21 : 22 : 39      2011.12 . 30 03 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0012
2013.02 . 26 21 : 22 : 39      2011.12 . 30 02 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0012
2013.02 . 26 21 : 22 : 39      2011.12 . 30 01 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0012
2013.02 . 26 21 : 22 : 39      2011.12 . 30 00 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0013
2013.02 . 26 21 : 22 : 39      2011.12 . 29 23 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0013
2013.02 . 26 21 : 22 : 39      2011.12 . 29 22 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0014
2013.02 . 26 21 : 22 : 39      2011.12 . 29 21 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0015
2013.02 . 26 21 : 22 : 39      2011.12 . 29 20 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0017
2013.02 . 26 21 : 22 : 39      2011.12 . 29 19 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0018
2013.02 . 26 21 : 22 : 39      2011.12 . 29 18 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0018
2013.02 . 26 21 : 22 : 39      2011.12 . 29 17 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0017
2013.02 . 26 21 : 22 : 39      2011.12 . 29 16 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0016
2013.02 . 26 21 : 22 : 39      2011.12 . 29 15 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0015
2013.02 . 26 21 : 22 : 39      2011.12 . 29 14 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0015
2013.02 . 26 21 : 22 : 39      2011.12 . 29 13 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0014
2013.02 . 26 21 : 22 : 39      2011.12 . 29 12 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0014
2013.02 . 26 21 : 22 : 39      2011.12 . 29 11 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0014
2013.02 . 26 21 : 22 : 39      2011.12 . 29 10 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0013
2013.02 . 26 21 : 22 : 39      2011.12 . 29 09 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0013
2013.02 . 26 21 : 22 : 39      2011.12 . 29 08 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0013
2013.02 . 26 21 : 22 : 39      2011.12 . 29 07 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0013
2013.02 . 26 21 : 22 : 39      2011.12 . 29 06 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0013
2013.02 . 26 21 : 22 : 39      2011.12 . 29 05 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0013
2013.02 . 26 21 : 22 : 39      2011.12 . 29 04 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0013
2013.02 . 26 21 : 22 : 39      2011.12 . 29 03 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0013
2013.02 . 26 21 : 22 : 39      2011.12 . 29 02 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0013
2013.02 . 26 21 : 22 : 39      2011.12 . 29 01 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0013
2013.02 . 26 21 : 22 : 39      2011.12 . 29 00 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0013
2013.02 . 26 21 : 22 : 39      2011.12 . 28 23 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0012
2013.02 . 26 21 : 22 : 39      2011.12 . 28 22 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.001
2013.02 . 26 21 : 22 : 39      2011.12 . 28 21 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0007
2013.02 . 26 21 : 22 : 39      2011.12 . 28 20 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0004
2013.02 . 26 21 : 22 : 39      2011.12 . 28 19 : 00   D_Aleks_first_pattern EURUSD,H1: slope = - 0.0002
2013.02 . 26 21 : 22 : 39      2011.12 . 28 18 : 00   D_Aleks_first_pattern EURUSD,H1: slope = 0
2013.02 . 26 21 : 22 : 39      2011.12 . 28 17 : 00   D_Aleks_first_pattern EURUSD,H1: slope = 0
2013.02 . 26 21 : 22 : 39      2011.12 . 28 16 : 00   D_Aleks_first_pattern EURUSD,H1: slope = 0.0001
2013.02 . 26 21 : 22 : 39      2011.12 . 28 15 : 00   D_Aleks_first_pattern EURUSD,H1: slope = 0.0001
2013.02 . 26 21 : 22 : 39      2011.12 . 28 14 : 00   D_Aleks_first_pattern EURUSD,H1: slope = 0.0001
2013.02 . 26 21 : 22 : 39      2011.12 . 28 13 : 00   D_Aleks_first_pattern EURUSD,H1: slope = 0.0001
2013.02 . 26 21 : 22 : 39      2011.12 . 28 12 : 00   D_Aleks_first_pattern EURUSD,H1: slope = 0.0001
2013.02 . 26 21 : 22 : 39      2011.12 . 28 11 : 00   D_Aleks_first_pattern EURUSD,H1: slope = 0.0002
2013.02 . 26 21 : 22 : 39      2011.12 . 28 10 : 00   D_Aleks_first_pattern EURUSD,H1: slope = 0.0002
파일:
 
Vinin :


지표에 문제가 있는 것 같습니다.


맞습니다... 하지만 이것은 다시 계산해야 하는 막대 의 수일 뿐입니다... 왜 이 경우 올바른 값을 얻을 수 있는 방법이 없는지 이상합니다.

이 줄을 주석 처리하면 모든 것이 명확하게 작동하고 0번째 막대에서 계산을 수정합니다.

 int start()
  {
    int i, countedBars = IndicatorCounted();
    int limit = Bars - countedBars - 1 ;
    //if (limit > 400) limit = 400;
        
    for (i = limit;i > 0 ;i--)
    {

그러나 이전 버전에서는 출력할 때 적절한 값이 표시되었습니다. 그리고 올빼미는 적절하지 않았습니다. 왜요?

 
hoz :


맞습니다... 하지만 이것은 다시 계산해야 하는 막대의 수일 뿐입니다... 왜 이 경우 올바른 값을 얻을 수 있는 방법이 없는지 이상합니다.

이 줄을 주석 처리하면 모든 것이 명확하게 작동하고 0번째 막대에서 계산을 수정합니다.

그러나 이전 버전에서는 출력할 때 적절한 값이 표시되었습니다. 그리고 올빼미는 적절하지 않았습니다. 왜요?


시각화 모드를 사용하여 확인하는 것 같습니다.
 
Vinin :

시각화 모드를 사용하여 확인하는 것 같습니다.

네, 그래서요?
 

오류를 찾는 데 도움이되고 작업을 수행하지 않으며 오류가 발생하지 않습니다. 일부 라이브러리가 누락된 것은 아닐까?

 //+------------------------------------------------------------------+
//+------------------------------------------------------------------+
#import "kernel32.dll"
   int _lopen  ( string path, int of);
   int _lcreat ( string path, int attrib);
   int _llseek ( int handle, int offset, int origin);
   int _lread  ( int handle, string buffer, int bytes);
   int _lwrite ( int handle, string buffer, int bytes);
   int _lclose ( int handle);
#import


int start()
 {
 string text = "222222" ; //текст который собираемся записать или перезаписать в файл
 string pach = "D:\FILE.txt" ; //путь куда записываем файл или перезаписываем
 WriteFile( "D:\FILE.txt" , text); //выполнение 
 }
//+------------------------------------------------------------------+
//|  записать содержимое буфера по указанному пути                   |
//+------------------------------------------------------------------+
void WriteFile ( string path, string buffer) 
 {
   int count= StringLen (buffer); //Возвращает число символов в строке. 
   int result;
   int handle=_lopen (path, 1 );
   if (handle< 0 ) //если файл еще не создан то создаем
  {
  handle=_lcreat (path, 0 );
  result=_lclose (handle);
  }
  handle=_lopen (path, 1 );     //открываем          
  result=_llseek (handle, 0 , 0 );     //ставим указатель      
  result=_lwrite (handle,buffer,count); //записываем
  result=_lclose (handle);       //закрываем файл       
 }
//+------------------------------------------------------------------+  

내 시스템: MT4, 빌드 451.

윈도우 7 홈 베이직.

 
merkulov.artem :

오류를 찾는 데 도움이되고 작업을 수행하지 않으며 오류가 발생하지 않습니다. 일부 라이브러리가 누락된 것은 아닐까?

내 시스템: MT4, 빌드 451.

윈도우 7 홈 베이직.

각 작업 후에 핸들 및 결과를 인쇄하면 작동하지 않는 항목을 알 수 있습니다.
 
표준 FileXXXXX 기능이 마음에 들지 않는 이유는 무엇입니까?
 
모든 미결 거래 중에서 가장 작은 로트를 선택하는 방법을 알려주십시오.
 
pasha5282 :
모든 미결 거래 중에서 가장 작은 로트를 선택하는 방법을 알려주십시오.


int i, ot = OrdersTotal();
double min=0;
int min_ticket=0;
for(i=0;i <ot; i ++)
{
   if (!OrderSelect( i ,SELECT_BY_POS)) continue ;
   if (OrderType()!=OP_BUY && OrderType ()!=OP_SELL) continue ;
   if ( i ==0||min> OrderLots()) {min = OrderLots(); min_ticket=OrderTicket();}
}