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

 

안녕하세요.

사용 가능한 모든 주문을 마감하는 스크립트가 있습니다.

내가 이해하지 못하는 세 줄이 있습니다.

어렵지 않다면 초보자가 이해할 수 있는 러시아어로 번역해 주세요.

나는 교과서를 공부했지만, 그렇게 긴 논리적 표현은 본 적이 없다.

스크립트를 첨부합니다. 고맙습니다.

파일:
 

첫 번째 항목을 "번역"하려고 합니다.

 if ((( OrderSymbol () == Symbol () && OnlyThisSymbol) || !OnlyThisSymbol))

"식 1. 또는 2. 중 하나 이상이 참이면..."
1. 주문 상품이 차트 상품과 동일하고 외부 변수인 OnlyThisSymbol이 true로 설정되어 있습니다.
2. 외부 변수 OnlyThisSymbol의 값은 false입니다.

이제 이 항목의 의미:
마감하기 전에 다른 필터를 사용하여 위치별로 마감된 주문을 검색합니다. 이 항목은 기기별 필터입니다. 외부 변수 OnlyThisSymbol의 값을 입력하면 사용자가 차트의 상품에 대한 주문만 마감하거나 모든 상품에 대한 주문을 마감할 수 있습니다.

 
alsu :

확실히 그런 방식은 아닙니다. 사실 Experts 변수에는 이미 int 유형이 있으므로 값을 할당하기 전에 유형 변환이 발생해야 합니다. 컴파일러

* 상자에서 이중 값을 꺼냈습니다(프로그램에는 이름이 없지만 RAM의 컴파일러 또는 프로세서 레지스터에 알려진 일부 주소에 단순히 기록됨).

* 위 변수의 값으로 필요한 모든 변경을 수행하고 Expert 변수에 새 값(이미 int 유형임)을 기록했습니다.

* 이 값(int! 유형)을 New_Experts 변수에 할당했습니다. 그것들은 동일한 유형을 가지므로 하나의 메모리 셀에서 다른 메모리 셀로 값을 전송하는 것에 불과합니다.


추신: 저는 자신의 행위를 이렇게 자세하게 이해하는 사람들의 존재를 매우 기쁘게 생각합니다. 사실, 농담이 아닙니다. 다시 연락하십시오.


좋은 하루 ... 마지막 메시지와 끝에서 두 번째 메시지를 구문 분석하면 막 다른 골목에 도달했습니다. 특히 (이전 답변의 메시지): "다음으로 상자에서 값을 가져왔을 때 유형은 double 이지만 결과를 int 유형의 변수에 쓰라는 명령이 주어지면 컴파일러는 새 상자에 값을 넣는 데 필요한 모든 작업을 자동으로 수행합니다." 그리고 마지막 답변의 메시지: "사실 Experts 변수에는 이미 int ... 유형이 있습니다." 우리는 그것을 GV-변수 상자에 "넣는" 순간에 그것을 이중 유형으로 변환했습니다. 그렇지 않습니까?

귀하의 응답에 미리 감사드립니다

 

말해봐 친구들. 테스터의 초기 조건뿐만 아니라 MQL4에서 계정 잔액 값 을 프로그래밍 방식으로 설정할 수 있습니까?

질문을 이해하기 위해 이것이 필요한 이유를 설명하겠습니다. Expert Advisor가 최적화 중에 계정 잔액의 크기를 변수로 변경 하기 위해.

 

안녕하세요.

(HL)/2를 기반으로 차트에 Sl 및 Tp를 표시하는 칠면조를 만들려고 하는데 뭔가 작동하지 않습니다. 막대가 닫힐 때 그려집니다. 무엇이 잘못되었습니까?

ATR 칠면조가 기본으로 사용되었습니다.

 //+------------------------------------------------------------------+
//|                                                          Tp/Sl.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net/"

#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Red
#property indicator_color2 Green
#property indicator_color3 Red
#property indicator_color4 Green
//---- input parameters
extern int PeriodMM= 25 ;
//---- buffers
double SlBuffer[];
double TpBuffer[];
double SlBuffer2[];
double TpBuffer2[];
double TempBuffer[];
double TempBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- 1 additional buffer used for counting.
   IndicatorBuffers ( 4 );
//---- indicator line
   SetIndexStyle ( 0 , DRAW_LINE );
   SetIndexBuffer ( 0 ,SlBuffer);
   SetIndexStyle ( 1 , DRAW_LINE );
   SetIndexBuffer ( 1 ,TpBuffer);
   SetIndexStyle ( 2 , DRAW_LINE );
   SetIndexBuffer ( 2 ,SlBuffer2);
   SetIndexStyle ( 3 , DRAW_LINE );
   SetIndexBuffer ( 3 ,TpBuffer2);
   SetIndexBuffer ( 4 ,TempBuffer);
   SetIndexBuffer ( 5 ,TempBuffer2);
//----
   SetIndexDrawBegin ( 0 ,PeriodMM);
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Average True Range                                               |
//+------------------------------------------------------------------+
int start()
  {
   int i,counted_bars= IndicatorCounted ();
//----
   if ( Bars <=PeriodMM) return ( 0 );
//---- initial zero
   if (counted_bars< 1 )
       for (i= 1 ;i<=PeriodMM;i++)
      SlBuffer[ Bars -i]= 0.0 ;
      TpBuffer[ Bars -i]= 0.0 ;
      SlBuffer2[ Bars -i]= 0.0 ;
      TpBuffer2[ Bars -i]= 0.0 ;
//----
   i= Bars -counted_bars- 1 ;
   while (i>= 0 )
     {
       double high=High[i];
       double low =Low[i];
       double close = Close[i];
      TempBuffer[i]=(high-low)/ 2 ;
      TempBuffer2[i]=(high-low)/ 2 * 2.5 ;
      i--;
     }
//----
   if (counted_bars> 0 ) counted_bars--;
   int limit= Bars -counted_bars;
   for (i= 0 ; i<limit; i++)
      SlBuffer[i]=Close[i]+ iMAOnArray (TempBuffer, Bars ,PeriodMM, 0 , MODE_SMA ,i);
      TpBuffer[i]=Close[i]+ iMAOnArray (TempBuffer2, Bars ,PeriodMM, 0 , MODE_SMA ,i);
      SlBuffer2[i]=Close[i]- iMAOnArray (TempBuffer, Bars ,PeriodMM, 0 , MODE_SMA ,i);
      TpBuffer2[i]=Close[i]- iMAOnArray (TempBuffer2, Bars ,PeriodMM, 0 , MODE_SMA ,i);
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
 
동지, CSV 파일이 생성되지 않는 이유를 이해할 수 없습니다. 모든 것이 이전에 작동했습니다.
 //+------------------------------------------------------------------+
//|                                                          TP1.mq4 |
//|                                                      S.I.Shlikov |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "S.I.Shlikov"
#property link       ""
int init()  
  {
   int h= FileOpen ( "H" +( Period ()/ 60 )+ ".csv" , FILE_CSV | FILE_WRITE | FILE_READ , ";" );
     if (h< 1 )
      {
       Print ( "Файл не найден : " , GetLastError ());
       return (false);
      }
   FileSeek (h, 0 , SEEK_END );
   FileWrite (h, "Date" , "EURUSD" , "GBPUSD" , "NZDUSD" , "USDJPY" , "EURJPY" , "GBPJPY" , "USDCHF" , "EURCHF" , "GBPCHF" );
   FileClose (h);        
  }
int start()
  {
   int h= FileOpen ( "H" +( Period ()/ 60 )+ ".csv" , FILE_CSV | FILE_WRITE | FILE_READ , ";" );
     if (h< 1 )
      {
       Print ( "Файл не найден : " , GetLastError ());
       return (false);
      }
   string Wtime= TimeToStr ( TimeCurrent (),TIME_DATE|TIME_MINUTES);
   FileSeek (h, 0 , SEEK_END );
   FileWrite (h,Wtime, DoubleToStr ( iClose ( "EURUSD" , Period (), 0 ), MarketInfo ( "EURUSD" ,MODE_DIGITS)),
                     DoubleToStr ( iClose ( "GBPUSD" , Period (), 0 ), MarketInfo ( "GBPUSD" ,MODE_DIGITS)),
                     DoubleToStr ( iClose ( "NZDUSD" , Period (), 0 ), MarketInfo ( "NZDUSD" ,MODE_DIGITS)),
                     
                     DoubleToStr ( iClose ( "USDJPY" , Period (), 0 ), MarketInfo ( "USDJPY" ,MODE_DIGITS)),
                     DoubleToStr ( iClose ( "EURJPY" , Period (), 0 ), MarketInfo ( "EURJPY" ,MODE_DIGITS)),
                     DoubleToStr ( iClose ( "GBPJPY" , Period (), 0 ), MarketInfo ( "GBPJPY" ,MODE_DIGITS)),
                     
                     DoubleToStr ( iClose ( "USDCHF" , Period (), 0 ), MarketInfo ( "USDCHF" ,MODE_DIGITS)),
                     DoubleToStr ( iClose ( "EURCHF" , Period (), 0 ), MarketInfo ( "EURCHF" ,MODE_DIGITS)),
                     DoubleToStr ( iClose ( "GBPCHF" , Period (), 0 ), MarketInfo ( "GBPCHF" ,MODE_DIGITS))
                     );
   FileClose (h);   
   return ( 0 );
  }
 
orb :
동지, CSV 파일이 생성되지 않는 이유를 이해할 수 없습니다. 모든 것이 이전에 작동했습니다.

오류 번호는 무엇입니까?
 
sergeev :

오류 번호는 무엇입니까?
오류 번호가 없습니다... 파일이 생성되지 않았을 뿐입니다. ALPRI\tester\files\에서 찾고 있습니다.
 
orb :
오류 번호가 없습니다... 파일이 생성되지 않았을 뿐입니다. ALPRI\tester\files\에서 찾고 있습니다.

글쎄, 다른 곳을 봐
 
sergeev :

글쎄, 다른 곳을 봐
이미 보았다.