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

 

Alp :

어리석은 질문을 해서 미안하지만 그래도.

이해가 안되네요. 차트가 눈에 띄게 뛰도록 유로 쌍으로 1달러를 $1,000,000 또는 다른 금액으로 구매(즉, 구매 거래)한다고 가정해 보겠습니다.

그리고 문제는 그가 그러한 거래를 한 후 어디로 갈 것인가입니다(내 거래에서 한 번 점프)? 다 된 것 같아요. 내 생각이 맞나요?

Dimka-novitsek :

네, 네, 그렇게 봅니다. 결국, 당신이 유로를 샀다고 가정해 봅시다. 그 일부가 당신의 로커를 핥고 있기 때문에 시장에는 더 적은 금액이 있습니다. 따라서 시장에서 nii의 가격이 상승합니다!!

그러면 더욱 이해할 수 없게 됩니다. 내가 유로를 1,000,000(1kk) 달러에 산다고 가정해 봅시다(중개인이 여기에 100을 곱하면 결과적으로 거래는 100kk가 됨). 차트가 100포인트 상승하고 즉시 매도하여 10,000 흑자 상태가 됩니다. 달러, 음, 중개인 수수료와 스프레드가 있습니다. 결과적으로 내 주머니에 $ 6,000가 있습니다. (글쎄, 세일 후 다시 100포인트 떨어질 것이 뻔하다.) 이건 말도 안 돼!!!! 그는 여전히 넘어질 수 있습니까? 그렇지 않으면 초대형 플레이어가 실제로 아무 것도 하지 않고 수십억 달러를 벌었을 것입니다.

 
Roman. :

얘들아 나에게 이것에 대해 말해줘:

다음은 hrenfx에서 지그재그로 롤백하지 않는 최대 크기를 찾는 스크립트입니다. 여기 를 참조하세요.

M5의 기기 차트에 던졌습니다. 기본 시간 범위로 정상적으로 계산됩니다.

이것은 F2를 통해 다운로드 할 때 Alpari 사무실에서 악기에 대한 기록의 최대 깊이입니다. 클라이언트 터미널의 "전문가" 탭의 내용처럼 보입니다. 사실인 것 같습니다.

동일한 시간 간격, 동일한 기간에 Expert Advisor에서 동일한 스크립트 구성을 사용하는 경우 M5 차트가 올바르게 계산되지 않습니다.

완전히 다른(스크립트보다 작은) 숫자 또는 0을 씁니다. 오류가 무엇일 수 있습니까? 아니면 일종의 기록 불일치입니까? 덕분에.

저것들. 나는 이론상 롤백이 없는 것을 찾는 예상 시간보다 늦게 올빼미 테스터에서 시작합니다.


테스터의 막대 수를 확인하십시오. 처음에는 1000이어야 합니다. 물론 거기에 있다면
 
Vinin :

테스터의 막대 수를 확인하십시오. 처음에는 1000이어야 합니다. 물론 거기에 있다면

이것은 어떻게 확인할 수 있습니까?
 
인쇄 ("막대=", 막대);
 
Vinin :
Print("막대=", 막대);

알겠습니다. 감사합니다. 내가 확인 할게요.
 
스레드 신사 는 열린 위치를 손익분기점으로 변환하는 기능의 예를 제공할 수 있습니다(진드기에 대한 작업), 어드바이저에는 후행이 있습니다. 이 후행의 시작은 사용으로 전송하는 기능 후에만 가능합니다. 미리 감사드립니다.
 

이 코드 조각에서 외부 변수 Lottes111이 지속적으로 값을 늘리고 알 수 없는 숫자를 곱하여 43543546645000000000000000이 되는 이유를 알려주세요.

이 코드를 제외하고, Lottes111 변수는 다른 곳에서는 사용되지 않습니다. lot111은 0.01이고 dcou는 2-3입니다. 더 정확하게는 새로운 막대 마다 증가하는 것을 알았습니다. 왜 그런지 이해할 수 없습니다. 다른 곳에서는 참여하지 않고 값을 유지하고 각 막대에서 증가하는 외부 변수에 2를 곱하는 것이 어떻게 가능합니까?

 double fGetLots( int a_cmd_0) {
   int dcou;
   dcou = AccountBalance ()/2000;
   Lots111 = Lots111*dcou;
   int i11;
   int orders;
   
   for (i11= 0 ;i11< OrdersTotal ();i11++)
     {
     if ( OrderSelect (i11,SELECT_BY_POS,MODE_TRADES) == true)
       {
       if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNumber)
         {
         orders++;
         }
       }
     }
   static double Lots2;
   
   if (orders == 0 )
     {
     Lots2 = Lots111;
     }
   Comment (Lots111, "\n" ,Lots2, "\n" ,orders, "\n" ,dcou);
   double l_lots_4;
   int l_datetime_12;
   switch (gi_256) {
   case 0 :
      l_lots_4 = Lots2;
       break ;
   case 1 :
      l_lots_4 = NormalizeDouble (Lots2 * MathPow (MultiLotsFactor, gi_360), gd_240);
       break ;
   case 2 :
      l_datetime_12 = 0 ;
      l_lots_4 = Lots2;
       for ( int l_pos_20 = OrdersHistoryTotal () - 1 ; l_pos_20 >= 0 ; l_pos_20--) {
         if ( OrderSelect (l_pos_20, SELECT_BY_POS, MODE_HISTORY)) {
             if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNumber) {
               if (l_datetime_12 < OrderCloseTime ()) {
                  l_datetime_12 = OrderCloseTime ();
                   if ( OrderProfit () < 0.0 ) l_lots_4 = NormalizeDouble ( OrderLots () * MultiLotsFactor, gd_240);
                   else l_lots_4 = Lots2;
               }
            }
         } else return (- 3 );
      }
   }
   if ( AccountFreeMarginCheck ( Symbol (), a_cmd_0, l_lots_4) <= 0.0 ) return (- 1 );
   if ( GetLastError () == 134 /* NOT_ENOUGH_MONEY */ ) return (- 2 );
   return (l_lots_4);
}
 
sss2019 :

이 코드 조각에서 외부 변수 Lottes111이 지속적으로 값을 늘리고 알 수 없는 숫자를 곱하여 43543546645000000000000000이 되는 이유를 알려주세요.

이 코드를 제외하고, Lottes111 변수는 다른 곳에서는 사용되지 않습니다. lot111은 0.01이고 dcou는 2-3입니다.

때때로 변수를 초기화해 보십시오. 때로는 도움이 됩니다. 특히 기본적으로 사용되는 경우. 즉, 값이 확실하지 않지만 곱하고 나눕니다. 당신은 또한 0으로 나누기를 얻을 수 있습니다
 
Vinin :
때때로 변수를 초기화해 보십시오. 때로는 도움이 됩니다. 특히 기본적으로 사용되는 경우. 즉, 값이 확실하지 않지만 곱하고 나눕니다. 당신은 또한 0으로 나누기를 얻을 수 있습니다


그러기 위해서는 좀 더 자세히 설명해주세요. 그리고 모든 변수에 초기 값을 설정했지만 문제가 제거되지 않았다는 것을 이해했다고 생각합니다.
 
sss2019 :

그러기 위해서는 좀 더 자세히 설명해주세요. 그리고 글쎄, 나는 모든 변수에 초기 값을 설정했지만 문제가 제거되지 않았다는 것을 이해 한 것 같습니다.

당신은 (이전에 그것을 해킹한) 어떤 조언자로부터 코드를 찢었지만, 그것은 중요하지 않습니다(적어도 당신은 그것을 이해하려고 노력했습니다). 그러나 쉽게 탐색 할 수있는 기반을 만들어야했습니다. 그러면 문제가 없을 것입니다. 머리로 작업하십시오.