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

 
artmedia70 :

IMHO - 주문을 검색하고 시장에서 마감되었는지, 어떻게 마감되었는지, 테이크, 스톱 또는 수동으로 확인하는 것이 좋습니다. 여기에서 다른 방향으로 춤을 춥니다.

그러면 모든 것이 확실히 완벽해질 것입니다. 그리고 전역 변수가 손실 될 수 있습니다 ...


변수를 잃는다는 것이 무엇을 의미하는지 설명해 주시겠습니까? 그리고 고문도 이것을 확인했다는 의미에서 찾을 수 있습니까?
 
Begemot7 :
변수를 잃는다는 것이 무엇을 의미하는지 설명해 주시겠습니까? 그리고 고문도 이것을 확인했다는 의미에서 찾을 수 있습니까?

나는 실제 및 데모에 대한 모든 어드바이저의 변수에 주문 및 위치에 대한 중요한 데이터를 저장하지 않습니다. EA 로직에 필요한 데이터를 쓸 수 있는 최대치는 주문 코멘트에 있습니다. 포지션이 있는지, 얼마나 있는지, 주문이 있는지, 마감된 포지션이 있는지, 마감된 방법을 찾아야 할 때 시장 포지션/주문 또는 과거 데이터를 순환하면서 필요한 주문을 찾고 필요한 정보를 추출합니다. 따라서 컴퓨터가 예기치 않게 꺼질 때 손실될 수 있으므로 모든 중요한 정보는 변수에 저장되지 않습니다. 나중에 언제든지 꺼낼 수 있습니다. 어떻게 든 터미널의 전역 변수에 저장하려고했습니다. 컴퓨터가 꺼지거나 멈출 때 정보가 항상 거기에 저장되는 것은 아닙니다. 그리고 그곳에 있는 새로운 정보의 기록을 지속적으로 모니터링하는 것은 어쩐지 씁쓸합니다 ... 내가 필요한 순간에 필요한 것을 찾기가 더 쉽습니다.
 
PapaYozh :

다음 함수를 사용하여 표시기가 던진 지점의 좌표를 얻을 수 있습니다.

WindowXOnDropped()

창YonDropped()

가격 및 시간:

WindowPriceOnDropped()

WindowTimeOnDropped()


담아보도록 하겠습니다. 예는 다음과 같을 것입니다 ...
 

이상한 상황에 직면했습니다. 제발 말해줘...

세 명의 자필 고문이 있습니다. 전략은 동일하며 도구에 따라 구현이 약간 다를 뿐입니다. 쌍: EURUSD, EURGBP 및 USDJPY. 처음 두 개는 모든 것이 정상이고 마지막 두 개는 거래되지 않습니다. 브로커 - FX-트렌드. 계정은 최소 로트가 0.01인 미니 계정입니다.

동시에: 데모 계정에서는 모든 것이 정상입니다. 테스터의 동일한 실제 계정 으로 테스터에서 시작하면 거래가 열립니다. 그러나 현실에서는 그렇지 않습니다. 주문(및 기타 모든 항목)을 열기 위한 그래픽 마커가 성공적으로 배치되었습니다. 로그에서 - 절대적으로 아무것도 아닙니다.

이 모든 것이 VPS에서 회전합니다.


정보가 이게 전부입니다. 파기 방향에 대한 힌트를 주시면 감사하겠습니다.

 
Sepulca :

다음과 같이 하는 것이 좋습니다(어드바이저를 다시 시작하는 경우).



주문이 하나만 있고 하나가 있으면 주문 없이도 할 수 있습니다.


if( 주문 합계() <1)

{

}

......

 
artmedia70 :
나는 실제 및 데모에 대한 모든 어드바이저의 변수에 주문 및 위치에 대한 중요한 데이터를 저장하지 않습니다. EA 로직에 필요한 데이터를 쓸 수 있는 최대치는 주문 코멘트에 있습니다. 포지션이 있는지, 얼마나 있는지, 주문이 있는지, 마감된 포지션이 있는지, 마감된 방법을 찾아야 할 때 시장 포지션/주문 또는 과거 데이터를 순환하면서 필요한 주문을 찾고 필요한 정보를 추출합니다. 따라서 컴퓨터가 예기치 않게 꺼질 때 손실될 수 있으므로 모든 중요한 정보는 변수에 저장되지 않습니다. 나중에 언제든지 꺼낼 수 있습니다. 어떻게 든 터미널의 전역 변수에 저장하려고했습니다. 컴퓨터가 꺼지거나 멈출 때 정보가 항상 거기에 저장되는 것은 아닙니다. 그리고 그곳에 있는 새로운 정보의 기록을 지속적으로 모니터링하는 것은 어쩐지 씁쓸합니다 ... 내가 필요한 순간에 필요한 것을 찾기가 더 쉽습니다.

그렇군요...더불어 안전하게 플레이하세요. 물론 모든 주문을 정렬하는 것이 더 정확합니다. 그러나 여기에 특정한 경우가 있습니다. GlobalVariables가 손실되면 이 DC를 떠나야 합니다. GlobalVariables는 컴퓨터에 저장되지 않고 DC 내부에 저장되지 않고 최대 3개월 동안 보관됩니다. 아니면 내가 틀렸습니까?
 
스스로 알아낸 것 같습니다 :). 그들은 정확하게 말합니다 - 가장 중요한 것은 공식화하는 것입니다. 일반적으로 시장에서 실행할 때 stop과 take는 0으로 설정됩니다. 그런 다음 원하는 대로 설정합니다. 누군가는 필요할지도...
 
Sepulca :
그렇군요...더불어 안전하게 플레이하세요. 물론 모든 주문을 정렬하는 것이 더 정확합니다. 그러나 여기에 특정한 경우가 있습니다. GlobalVariables가 손실되면 이 DC를 떠나야 합니다.

DC가 일부러 그러는 건가요? MT4는 중개인이 쉽게 조종할 수 있는 단말이라 속임수가 많다고 하는데 누가 들어봤나?
 
Begemot7 :

DC가 일부러 그러는 건가요? MT4는 중개인이 쉽게 조종할 수 있는 단말이라 속임수가 많다고 하는데 누가 들어봤나?


정말 이해가 되지 않습니다. 물론, x ...... 구름을 생성하지 않는 한 전역 변수를 파괴하는 요점이 무엇입니까? 문서에서 인용:
"클라이언트 터미널의 전역 변수는 MQL4 프로그램의 전역 수준에서 선언된 변수와 혼동되어서는 안 됩니다. 전역 변수는 마지막 액세스 순간부터 4주 동안 클라이언트 터미널에 존재하며 이후 자동으로 소멸됩니다. 글로벌 변수는 새로운 값을 설정할 뿐만 아니라 글로벌 변수의 값을 읽는 것으로 간주됩니다. 클라이언트 터미널의 글로벌 변수 는 클라이언트 터미널에서 실행되는 모든 MQL4 프로그램에서 동시에 사용 가능합니다. 당신의 돈을 위해 싸워라.

 

전문가의 도움이 필요합니다!!! 이미 이 코드로 머리가 깨졌습니다... 4개의 버퍼가 있으며 그 중 2개는 올바르게 작동하지만(Buffer &buffer2) 나머지 2개는 작동하지 않습니다. 특정 조건이 발생하면 버퍼가 채워지고 이 값이 초과되면 버퍼가 삭제(0)되지만 나머지 2개의 버퍼는 여전히 차트에 멈춥니다. 그것을 고칠 방법을 말해?

       //--- Функция расчета буферов CountZZ(BuferUp,BuferDn,iPeriod,Dev,Step);
int CountZZ( double & ExtMapBuffer[], double & ExtMapBuffer1[], double & ExtMapBuffer2[], double & ExtMapBuffer3[], int ExtDepth, int ExtDeviation, int ExtBackstep )
{
   int     shift, back,lasthighpos,lastlowpos;
   double val,res;
   double curlow,curhigh,lasthigh,lastlow,lastlow1,lasthigh1;
   int count = iBars(pair,tf)-ExtDepth;

   for (shift=count; shift>= 0 ; shift--)
     {
     //--- Расчитываем буфер BuferUp
      val = iLow(pair,tf,iLowest(pair,tf,MODE_LOW,ExtDepth,shift));
       if (val==lastlow) val= 0.0 ;
       else
        {
         lastlow=val;
         if ((iLow(pair,tf,shift)-val)>(ExtDeviation* Point )) val= 0.0 ;
         else
           {
             for (back= 1 ; back<=ExtBackstep; back++)
              {
               res=ExtMapBuffer[shift+back];
               if ((res!= 0 )&&(res>val)) ExtMapBuffer[shift+back]= 0.0 ;
              }
           }
        }
       
          ExtMapBuffer[shift]=val;
       //--------------------------------------------------------------------    
          
     //--- Расчитываем буфер BuferUp2
       if (ExtMapBuffer[shift]> 0.0 )
      {
             if (use.narrow.bands) val = MathMin (iClose(pair,tf,shift),iOpen(pair,tf,shift));
                 else {val = MathMax (iClose(pair,tf,shift),iOpen(pair,tf,shift));
             val = MathMin (val, MathMin (iHigh(pair,tf,shift+ 1 ),iHigh(pair,tf,shift- 1 )));}
       if (ExtMapBuffer[shift+back]== 0.0 ) ExtMapBuffer1[shift+back]= 0.0 ;
      } 
          ExtMapBuffer1[shift]=val;
       //--------------------------------------------------------------------    
          
       //--- Расчитываем буфер BuferDn
      val=iHigh(pair,tf,iHighest(pair,tf,MODE_HIGH,ExtDepth,shift));
     
       if (val==lasthigh) val= 0.0 ;
       else
        {
         lasthigh=val;
         if ((val-iHigh(pair,tf,shift))>(ExtDeviation* Point )) val= 0.0 ;
         else
           {
             for (back= 1 ; back<=ExtBackstep; back++)
              {
               res=ExtMapBuffer2[shift+back];
               if ((res!= 0 )&&(res<val)) ExtMapBuffer2[shift+back]= 0.0 ;
              }
           }
        }
      ExtMapBuffer2[shift]=val;
       //-------------------------------------------------------------------
      
       //--- Расчитываем буфер BuferDn2
       if (ExtMapBuffer2[shift]> 0.0 )
      {
             if (use.narrow.bands) val = MathMax (iClose(pair,tf,shift),iOpen(pair,tf,shift));
                 else {val = MathMin (iClose(pair,tf,shift),iOpen(pair,tf,shift));
             val = MathMax (val, MathMax (iLow(pair,tf,shift- 1 ),iLow(pair,tf,shift+ 1 )));}
       if (ExtMapBuffer2[shift+back]== 0.0 ) ExtMapBuffer3[shift+back]= 0.0 ;
      }
      ExtMapBuffer3[shift]=val;
       //-------------------------------------------------------------------
      
     }
           
   // Отсееваем ненужные значения
   lasthigh=- 1 ; lasthighpos=- 1 ;
   lastlow=- 1 ;  lastlowpos=- 1 ;

   for (shift=count; shift>= 0 ; shift--)
     {
      curlow=ExtMapBuffer[shift];
      curhigh=ExtMapBuffer2[shift];
       if ((curlow== 0 )&&(curhigh== 0 )) continue ;
       //---
       if (curhigh!= 0 )
        {
         if (lasthigh> 0 )
           {
             if (lasthigh<curhigh) ExtMapBuffer2[lasthighpos]= 0 ;
             else ExtMapBuffer2[shift]= 0 ;
           }
         //---
         if (lasthigh<curhigh || lasthigh< 0 )
           {
            lasthigh=curhigh;
            lasthighpos=shift;
           }
         lastlow=- 1 ;
        }
       //----
       if (curlow!= 0 )
        {
         if (lastlow> 0 )
           {
             if (lastlow>curlow) ExtMapBuffer[lastlowpos]= 0 ;
             else ExtMapBuffer[shift]= 0 ;
           }
         //---
         if ((curlow<lastlow)||(lastlow< 0 ))
           {
            lastlow=curlow;
            lastlowpos=shift;
           }
         lasthigh=- 1 ;
        }
     }
 
   for (shift=iBars(pair,tf)- 1 ; shift>= 0 ; shift--)
   {
       if (shift>=count) ExtMapBuffer[shift]= 0.0 ;
         else
         {
            res=ExtMapBuffer2[shift];
             if (res!= 0.0 ) ExtMapBuffer2[shift]=res;
         }
   }
}

사유: