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

 
Integer :


폭력적인 환상의 인상적인 수준. 데이터가 일부 기호(아직 열리지 않은 기호)에만 표시되고 시장 검토에 있는 모든 기호에 대해서는 표시되지 않는 이유는 무엇입니까? RefreshRates() 함수는 일부 문자를 업데이트해야 하고 일부는 업데이트하지 않아야 한다는 까다로운 방식을 어떻게 찾았습니까?

준코, 잔소리 그만해.


드미트리, 맹세하지 말자 .. 서로 돕는 것이 더 낫습니다. 그렇지 않으면 당신과 Vadim이 최근에 너무 많은 불일치를 겪었습니다. 어떻게든 며칠 동안 생각에 잠기고, 지점에 가지 않고, 그리고는 평소와 같이 들어가서 모든 것을 통과했습니다. 그래서 저도 솔직히 웃기게 읽었습니다, 웃기네요! 그런 접전과 토론, 대회가 있어서 그저 감탄만 나옵니다 :) 어떤 곳에서는 난해한 문구와 단어가 스쳐지나갔지만 사실은 완전히 넌센스였습니다. 나는 선진적인 생각과는 거리가 멀고 여전히 나 자신을 연구하고 연구하지만 (어떤 곳에서는 특히 수영을합니다) 대화가 완전한 부조리의 지점에 도달했음을 분명히 이해하고 보았습니다.

프로들이 모인 것 같은데 그렇지 않으면 말하지 않겠습니다. 그렇지 않으면 나는 당신에 대해 말하지 않을 것입니다. 왜냐하면. 나는 모든 사람들이 그들이하는 일을 이해하고 있음을 봅니다. 그러나 가장 흥미로운 것은 프로들이 실수를 인정하고 싶지 않을 때 그런 점프를 한다는 것입니다. 그러나 당신은 당신의 실수로부터 배웁니다! 그리고 여기에는 부끄러운 것이 없습니다. 따라서 누군가가 실수를 했다면 주제에서 벗어날 필요가 없지만 인정하는 것이 더 쉽습니다. 수십 페이지의 프로그래머 홍수가 성격으로 바뀌는 동안 이것은 어떻게 든 선택 사항이 아닙니다. 목표는 적어도 이 스레드나 포럼에서 서로 머리부터 발끝까지 헛소리를 하는 것이 아니라, 말하자면 프로그래밍에서 펌핑하고 이 주제에 대한 생각을 공유하는 것입니다. 그러니 같이 살자. 하로쉬는 말썽을 부린다.

 
hoz :

괜찮습니다. 기능을 한 줄씩 "읽고" 직접 작성하면 모든 것이 제자리에 들어갈 것입니다.

함수 매개변수가 있습니다.

매일 마지막 막대의 여는 시간, 즉 현재 날짜가 열리기 전에 마감된 모든 위치가 계산되고 합산됩니다! 논리적인가요? 그래서 당신이 필요로하거나 가지고있는 다른 막대를 넣으십시오. 하지만 직접 보세요.


죄송합니다. 여전히 작동하지 않습니다.

오늘의 총 이익이 아니라 오늘의 총 이익을 반환하는 함수가 필요합니다.

그리고 아무리 노력해도... 작동하지 않습니다. 결과는 전체 이야기입니다.

이론적으로 전체 역사에서 오늘 이전에 있었던 일을 빼면 오늘 있었던 일을 알 수 있습니다.

 double tm1=GetProfitFromDateInCurrency ( Symbol (), - 1 , - 1 , iTime ( NULL , PERIOD_D1 , 0 ));  
double tm2=GetProfitFromDateInCurrency ( Symbol (), - 1 , - 1 , TimeCurrent ());  

Print (  m2-m1 );

ZERO 감염을 인쇄합니다 .....

 
똑똑한 사람이 의심하는 것은 자연스러운 일이기 때문에 어리석은 사람이 똑똑한 사람에게 자신이 바보임을 증명하는 것이 그 반대보다 항상 더 쉽습니다.
 
lottamer :


이론적으로 전체 역사에서 오늘 이전에 있었던 일을 빼면 오늘 있었던 일을 알 수 있습니다.

ZERO 감염을 인쇄합니다 .....


이론적으로 이 기능이 무엇을 하는지 이해해야 합니다. 그리고 그것을 이해하려면 전체적으로 한 줄씩 구문 분석해야 합니다. 나는 이미 당신에게 이것을 말했습니다. 여기에서는 모든 것이 기본입니다. 그리고 도와주는 것은 의미가 없습니다. 왜냐하면. 간단한 함수의 코드를 이해하는지 여부는 귀하가 결정합니다.

위에서 모든 것을 설명했습니다.

 
hoz :


Vadim, 나는 메이저와 엔과 십자가 이외의 다른 악기를 열어 본 적이없는 터미널에서 스크립트를 실행했습니다. 일반적으로 스크린샷은 다음과 같습니다.

아무것도 다운로드되지 않습니다, tk. 주석으로 판단하면 시장 데이터 배열이 비어 있습니다.

1. 어떻게 런칭하셨나요? 먼저 업데이트하지 않고 시작해야 합니다. 저것들. IsRefreshRate = 거짓. 데이터가 업데이트되지 않습니다.

2. 그런 다음 IsRefreshRates = true로 실행합니다. 데이터가 업데이트됩니다.

스크린샷 1: 스크린샷 2:

바 시간에주의하십시오. 또한 MarketInfo()가 시장 개요에서 데이터를 가져오는 것을 볼 수 있습니다.

여기 전문가가 있습니다. 조금 수정했습니다. 악기의 이름을 표시합니다.

 extern string Tool           = "AUDNZD" ; // Имя инструмента.
extern bool    IsRefreshRates = true ;     // Флаг включения обновления таймсерий.
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start()
 {
   string sTool = Tool; // Имя инструмента.
   if (Tool == "" ) sTool = Symbol ();
   while (! IsStopped ())
   {
     if (IsRefreshRates) RefreshRates();
     string sComment = StringConcatenate ( "MarketInfo() (" , sTool, ")\n" ,
                                        TimeToStr(MarketInfo(sTool, MODE_TIME), TIME_DATE|TIME_MINUTES|TIME_SECONDS), "\n" ,
                                        DoubleToStr(MarketInfo(sTool, MODE_BID), Digits ), "  " , DoubleToStr(MarketInfo(sTool, MODE_ASK), Digits ),
                                         "\n\nПредопределенные переменные (" , Symbol (), ")\n" ,
                                        TimeToStr(Time[ 0 ], TIME_DATE|TIME_MINUTES|TIME_SECONDS), "\n" ,
                                        DoubleToStr(Bid, Digits ), "  " , DoubleToStr(Ask, Digits ),
                                         "\n\nМассивы-таймсерии (" , sTool, ")\n" );
     for ( int i = 0 ; i < 10 ; i++)
     {
      sComment = sComment + StringConcatenate (TimeToStr(iTime(sTool, 0 , i), TIME_DATE|TIME_MINUTES|TIME_SECONDS), "  " ,
                                              DoubleToStr(iOpen(sTool, 0 , i), Digits ), "  " ,
                                              DoubleToStr(iLow(sTool, 0 , i), Digits ), "  " ,
                                              DoubleToStr(iHigh(sTool, 0 , i), Digits ), "  " ,
                                              DoubleToStr(iClose(sTool, 0 , i), Digits ), "  " ,
                                              DoubleToStr(iVolume(sTool, 0 , i), 0 ), "\n" );
     }
     Comment (sComment);
     Sleep ( 300 );
   }
 } 
호즈 :


드미트리, 맹세하지 말자 .. 서로 돕는 것이 더 낫습니다. 그렇지 않으면 당신과 Vadim이 최근에 너무 많은 불일치를 겪었습니다. 어떻게든 며칠 동안 생각에 잠기고, 지점에 가지 않고, 그리고는 평소와 같이 들어가서 모든 것을 통과했습니다. 그래서 저도 솔직히 웃기게 읽었습니다, 웃기네요! 그런 접전과 토론, 대회가 있어서 그저 감탄만 나옵니다 :) 어떤 곳에서는 난해한 문구와 단어가 스쳐지나갔지만 사실은 완전히 넌센스였습니다. 나는 선진적인 생각과는 거리가 먼 내 자신을 여전히 연구하고 연구하지만 (나는 특히 수영하는 곳에서) 대화가 완전한 부조리의 지점에 도달했음을 분명히 이해하고 보았습니다.

프로들이 모인 것 같은데 그렇지 않으면 말하지 않겠습니다. 그렇지 않으면 나는 당신에 대해 말하지 않을 것입니다. 왜냐하면. 나는 모든 사람들이 그들이하는 일을 이해하고 있음을 봅니다. 그러나 가장 흥미로운 것은 프로들이 실수를 인정하고 싶지 않을 때 그런 점프를 한다는 것입니다. 그러나 당신은 당신의 실수로부터 배웁니다! 그리고 여기에는 부끄러운 것이 없습니다. 따라서 누군가가 실수를 했다면 주제에서 벗어날 필요가 없지만 인정하는 것이 더 쉽습니다. 수십 페이지의 프로그래머 홍수가 성격으로 바뀌는 동안 이것은 어떻게 든 선택 사항이 아닙니다. 목표는 적어도 이 스레드나 포럼에서 서로 머리부터 발끝까지 헛소리를 하는 것이 아니라, 말하자면 프로그래밍에서 펌핑하고 이 주제에 대한 생각을 공유하는 것입니다. 그러니 같이 살자. 하로쉬는 말썽을 부린다.

빅터, 신경 쓰지 마. 생각을 공식화하는 방법을 모르고 이성적인 연설을 만드는 방법을 모르는 사람들이 있습니다. 그들에게 가장 강력한 주장은 욕설입니다.

여전히 그러한 사람들은 새로운 것을 받아들이지 않습니다. Dmitry는 자신의 대기열을 구성하지 않고 스레드로 작업하는 방법을 아직 파악하지 못했습니다. 그는 이 대기열이 필요한 예를 제시하지도 않았습니다.

이제 그는 다시 논쟁을 벌이고 있습니다. 자신의 입장을 확인하고 설득력 있게 증명하는 대신.

 
Zhunko :

빅터, 신경 쓰지 마. 생각을 공식화하는 방법을 모르고 이성적인 연설을 만드는 방법을 모르는 사람들이 있습니다. 그들에게 가장 강력한 주장은 욕설입니다.

여전히 그러한 사람들은 새로운 것을 받아들이지 않습니다. Dmitry는 자신의 대기열을 구성하지 않고 스레드로 작업하는 방법을 아직 파악하지 못했습니다. 그는 이 대기열이 필요한 예를 제시하지도 않았습니다.

이제 그는 다시 논쟁을 벌이고 있습니다. 자신의 입장을 확인하고 설득력 있게 증명하는 대신.


Junko, 당신은 너무 멀리 가고 있습니다. 여기에 작성된 모든 내용은 귀하에게 직접 적용됩니다. 스트림에 대해 이해하지 못했고 데이터가 업데이트된 이유 등을 이해하지 못했습니다. 그러나 당신은 당신 자신을 전문가로 만듭니다. 이것은 완전한 PC입니다. 당신은 여전히 자신을 올바른 사람으로 묘사합니다.
 
Integer :


폭력적인 환상의 인상적인 수준. 데이터가 일부 기호(아직 열리지 않은 기호)에만 표시되고 시장 검토에 있는 모든 기호에 대해서는 표시되지 않는 이유는 무엇입니까? RefreshRates() 함수는 일부 문자를 업데이트해야 하고 일부는 업데이트하지 않아야 한다는 까다로운 방식을 어떻게 찾았습니까?

준코, 잔소리 그만해.

RefreshRates()는 Expert Advisor가 작동하는 항목만 업데이트합니다. 그래서 그는 알게 됩니다. 전문가로부터. 오래 전에 Metaquote의 누군가가 이에 대해 썼습니다.
 
hoz :


이론적으로 이 기능이 무엇을 하는지 이해해야 합니다. 그리고 그것을 이해하려면 전체적으로 한 줄씩 구문 분석해야 합니다. 나는 이미 당신에게 이것을 말했습니다. 여기에서는 모든 것이 기본입니다. 그리고 도와주는 것은 의미가 없습니다. 하나의 간단한 함수의 코드를 이해하는지 여부는 귀하가 결정해야 합니다.

위에서 모든 것을 설명했습니다.


나는 그것을 알아.

일반적으로 함수는 총 이익을 반환하지만 기록 탭에서 사용자가 설정한 기간 동안만 반환합니다. HISTORY 탭에서 기간을 변경하면 작업 과정에서 바로 변경됩니다.

안 필요해.

주어진 매개변수에 따라 기간을 설정하기 위해 필요합니다.

기능 자체를 변경하려고 ...

 double GetProfitFromDateInCurrency( string sy= "" , int op=- 1 , int mn=- 1 , datetime dt=iTime ( NULL , PERIOD_D1 , 0 )   )
{
   double p= 0 ;
   int     i, 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== "" ) && (op< 0 || OrderType()==op)) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (mn< 0 || OrderMagicNumber()==mn) {
             if (dt<OrderCloseTime()) {
              p+=OrderProfit()+OrderCommission()+OrderSwap();
            }
          }
        }
      }
    }
  }
   return (p);
}

그러나 컴파일러는 다음과 같이 불평합니다.

' iTime ' - 초기화가 예상됩니다.

무엇을 추가해야합니까?

 
Zhunko :
RefreshRates()는 Expert Advisor가 작동하는 항목만 업데이트합니다. 그래서 그는 알게 됩니다. 전문가로부터. 오래 전에 Metaquote의 누군가가 이에 대해 썼습니다.

프로그래밍 언어 의 기능에 소유하지 않은 신비한 기능과 속성을 부여할 필요는 없습니다.

 
마지막에 이전 페이지에서 그는 데이터가 업데이트되는 내용을 썼습니다.
사유: