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

 
rustein :
네, 알겠습니다. 감사합니다.

이렇게 놔두는데 다른 방법은 모르겠고.......)

그래서..

 double BullSumm()
{
   double MySummBull= 0 ;
   for ( int Cnt= 0 ;Cnt< OrdersTotal ();Cnt++)
  { 
     if (! OrderSelect (Cnt,SELECT_BY_POS,MODE_TRADES)) continue ; // если нет продолжим цикл
     if ( OrderType ()==OP_BUY)
    {
      MySummBull+= OrderOpenPrice ()* OrderLots ();
    }
  }
   if (MySummBull== 0 ) return ( 380 /*v*/ );
   return (MySummBull);
}
 
griha :
고문의 행동을 파일에 기록하고 싶습니다
MQL 편집기에 대한 참조에서 예제를 가져와 약간 수정했습니다.


결과적으로 OrdersReport.csv 파일은 비어 있지만 주문이 열려 있습니다.


읽기 쓰기를 위해 파일을 열고 쓰기를 시도할 때 동일한 문제가 발생했습니다. 파일이 생성되지 않거나 아무 것도 기록되지 않습니다.

서비스 데스크 요청:

FILE_READ|FILE_WRITE 키로 연 텍스트 파일에 추가하려고 할 때 먼저 FileSeek() 함수로 파일 포인터를 명시적으로 설정하지 않고 쓰기가 전혀 발생하지 않습니다.

이전 버전의 터미널에서는 FileReadString() 함수를 사용하여 텍스트 파일을 읽을 때 파일 포인터가 자동으로 설정되었습니다.

다음은 개발자의 답변입니다.

파일 기능의 마지막 변경 사항은 2008년 중반으로 거슬러 올라갑니다.

이전에는 파일 포인터를 끝으로 먼저 설정하지 않고 파일에 추가할 수 없었습니다.

자세한 내용은 또 다른 질문입니다. 파일 끝에 추가하는 것과 관련이 있습니까?

모든 파일 읽기/쓰기 작업은 자동으로 파일 포인터를 이동합니다. 항상 그래왔고 변하지 않았습니다. 그러나 파일을 csv로 열면 중간 데이터 버퍼링이 가능합니다. 그러면 파일 포인터가 예상한 위치에 없을 수 있습니다. 반복합니다. 이전 버전과 이전 버전 모두 공식 릴리스 초기부터 항상 이와 같았습니다.

우리는 침묵의 원칙이 극도로 해롭다는 것을 여러 번 반복했습니다. 파일 포인터 포함. 연속 읽기 또는 연속 쓰기(특히 읽기-쓰기 혼합의 특이한 경우)를 사용하지 않는 한 파일 포인터를 명시적으로 처리합니다.

결론: FileSeek 사용

 
khorosh :
있다.
고맙습니다.
 
Roll :

귀하의 EA는 30분 ADX 신호로 거래되고 있습니다. 어드바이저가 1min ADX 신호에서 거래하는 경우 이러한 신호는 첫 번째 옵션보다 더 자주 제공됩니다. 귀하 버전의 스크린샷은 BUY 포지션을 열 때만 촬영됩니다.
테스트 모드에서 스크린샷의 차트에 표시기 이미지가 없는 것에 관심이 있습니다. 스크린샷의 표시기가 데모 모드에 있는지 확인하라는 요청을 받았습니다. 많은 시간을 기다리지 않고 빠르게 문제를 확인하고 이해할 수 있도록 해당 기능과 함께 스크립트를 게시했습니다. 하루 이상이 지났습니다. 나는 당신의 결과가 무엇인지 알고 싶습니다?

계속 알려 드리겠습니다. 바쁘네요 내일 확인해봐야겠네요
 

함수에서 이름을 정의할 때와 변수에 이름을 할당한 다음 함수에 변수를 전달할 때의 차이점이 무엇인지 알려주세요.

 //-------------- первый вариант (рабочий)

string up_line = "upline_" , down_line = "downline_" ;
 
     flatlineup( up_line+ TimeToStr (Time[i]) , y2,x2,y22,x2, Red , 1 );     Имя присваиваю в теле функции
     flatlinedown( down_line+ TimeToStr (Time[i]) , y1,x1,y11,x1, Blue , 1 );
     dellline(up_line, down_line);

TimeToStr (Time[i]) указывал в имени тренд лайн в теле функции
 //--------------- второй вариант (нерабочий)

string up_line = "upline_" + TimeToStr (Time[i]); //--или пробовал StringConcatenate()        ИМЯ ПРИСВАИВАЮ В ПЕРЕМЕННОЙ
string down_line = "downline_" + TimeToStr (Time[i]); //--или пробовал StringConcatenate()
 
     flatlineup(up_line, y2,x2,y22,x2, Red , 1 );                 ПЕРЕДАЮ ПЕРЕМЕННУЮ В ФУНКЦИЮ
     flatlinedown(down_line, y1,x1,y11,x1, Blue , 1 );
     dellline(up_line, down_line);
 
rustein :
Expert Advisor에서 0분할 오류를 없애도록 도와주세요.

미리 감사드립니다.

가능합니다, 그것은 나를 위해 작동합니다

더블 BullPrice()

{

이중 BullAveragePrice=0;

이중 MySummBullLots=0;

for (int i = OrdersTotal() - 1, i >= 0, i--)

{

주문 선택(i, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() != Symbol()) 계속;

if (OrderSymbol() == Symbol() && OrderType() == OP_BUY)

{

BullAveragePrice+=OrderOpenPrice()*OrderLots();

MySummBullLots+=OrderLots();

}

}

if (MySummBullLots>0) BullAveragePrice = NormalizeDouble (BullAveragePrice / MySummBullLots, 자릿수);

반환(불 평균 가격);

}

 
Zhunko :

MT4 폴더에는 MQL4의 모든 경우에 대한 C++ 코드의 예가 있습니다. 해당 코드를 컴파일하고 거기에 붙여넣습니다. 당신은 당신과 예 사이의 차이점을 즉시 발견할 것입니다.

내 MT는 그렇지 않습니다. MQL(stdlib.mq4)로 작성된 lib는 1개뿐입니다. 여기에 예를 게시할 수 있습니까?
 
Fox_RM :

함수에서 이름을 정의할 때와 변수에 이름을 할당한 다음 함수에 변수를 전달할 때의 차이점이 무엇인지 알려주세요.

귀하의 예에서 차이점은 매개 변수를 함수에 전달할 때만입니다.
dellline(...)
 
costy_ :

그래서..

고맙습니다!
 

상황이 이렇다고 말해줘, 나는 이렇게 csv 파일을 읽었다

 void ReadDate(){
   while (! IsStopped ()){
       string dTime = FileReadString (ExtCsvHandle); // читаем строчку 1
       string sValue = FileReadString (ExtCsvHandle); // читаем строчку 2
       Print ( "Date=" , StrToTime (dTime), "Value=" ,sValue);   
      
   }
}

그러나 csv 파일에는 첫 번째 추가 줄인 헤더가 있습니다.

Time,Value
15.02 . 2012 00 : 00 : 00 ;Значение 1
15.02 . 2012 00 : 01 : 07 ;Значение 2
15.02 . 2012 00 : 02 : 26 ;Значение 3
15.02 . 2012 00 : 00 : 00 ;Значение 1
15.02 . 2012 00 : 01 : 07 ;Значение 2
15.02 . 2012 00 : 02 : 26 ;Значение 3

프로그래밍 방식으로 첫 번째 줄을 건너뛰거나 값을 저장하는 동안 일반적으로 프로그래밍 방식으로 삭제하는 방법은 모든 것을 망칩니다.

미리 감사드립니다.