MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 648

 
psyman :

네버네스 , 왜 여기에 쓰는 겁니까?

화염에 별도의 가지를 시작하고 모자를 벗고 거기에 코끼리를 배포하십시오.

그래서 즉시 사회자에게 그 사실을 알렸습니다.

중재자님, 별도의 스레드에서 거래 이론에 대해 논의해 보겠습니다.

진행자는 반대합니다.

아마도 중재자는 자신의 "거래 이론"을 가지고 있지 않을 것입니다.

 
inter78 :

안녕하세요! 차트 간 전환에 대해서도 질문합니다. 28개 또는 30개의 차트를 열었습니다. 라벨로 신중하게 바꾸고, 조건에 맞으면 포지션을 오픈합니다 . 조각 10 또는 20. 또는 5. 중요하지 않습니다. 나머지가 간섭하고 열린 위치에 대한 정보가 없는 것이 중요합니다. 전역 변수에 ID를 보내려고 했습니다. 그러나 완전히 다른 숫자를 반환합니다. 아이디가 크고 왜곡되어 있다고 설명했습니다. 파일로 해보았습니다. TXT로 돌아가고 long으로 변환되지 않습니다. 코드에 수동으로 ID를 입력했는데 작동하는 것 같습니다. 필드를 이동하면 원하는 차트가 열립니다. 제대로 하는 방법?

Double과 Long은 길이가 8바이트로 동일합니다.

long을 double로 저장하려면(또는 그 반대로) "union"을 사용할 수 있습니다.


예를 들어:

 //+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   long id=ChartID();
   
   double X=LongToDouble(id);
   long    Y=DoubleToLong(X);
   
   Print( "id=" ,id, " X=" ,X, " Y=" ,Y);
  }


//+------------------------------------------------------------------+
union eightbytes
   {
   double    dbl;
   long      lng;
   } VALUE;

double LongToDouble( long value )
   {
   VALUE.lng= value ;
   return (VALUE.dbl);
   }

long DoubleToLong ( double value )
   {
   VALUE.dbl= value ;
   return (VALUE.lng);
   }
 
neverness :

그래서 즉시 사회자에게 그 사실을 알렸습니다.

중재자님, 별도의 스레드에서 거래 이론에 대해 논의해 보겠습니다.

진행자는 반대합니다.

아마도 중재자는 자신의 "거래 이론"을 가지고 있지 않을 것입니다.

당신은 광대 이론가 의 분야에 있습니다. 그들은 거기에 그림을 그리는 것을 좋아합니다.

그리고 포럼에는 유사한 스레드가 많이 있습니다. 최소한 토론하십시오!

От теории к практике
От теории к практике
  • 2017.12.01
  • www.mql5.com
Добрый вечер, уважаемые трейдеры! Решил было на какое-то время покинуть форум, и сразу как-то скучно стало:)))) А просто читать, увы - неинтересно...
 
Taras Slobodyanik :

Double과 Long은 길이가 8바이트로 동일합니다.

long을 double로 저장하려면(또는 그 반대로) "union"을 사용할 수 있습니다.


예를 들어:

실례합니다, Taras, 전역 변수 에 ID를 보내고 왜곡 없이 추출하는 방법의 코드를 보낼 수 있습니까?
 
inter78 :
실례합니다, Taras, 전역 변수 에 ID를 보내고 왜곡 없이 추출하는 방법의 코드를 보낼 수 있습니까?

모든 것이 준비되었으므로 쓰기/읽기를 추가하기만 하면 됩니다.

 string GVname= "gvName" ;

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   //создаем временную глобальную переменную
   if (! GlobalVariableCheck (GVname))
       GlobalVariableTemp (GVname);
   
   long   id= ChartID ();
   
   //сохраняем long как double
   GV_Save(LongToDouble(id));
   
   //читаем double и переводим в long
   long   Y=DoubleToLong(GV_Read());
   
   Print ( "id=" ,id, " Y=" ,Y);
  }

//+------------------------------------------------------------------+
union eightbytes
   {
   double    dbl;
   long      lng;
   } VALUE;

double LongToDouble( long value)
   {
   VALUE.lng=value;
   return (VALUE.dbl);
   }

long DoubleToLong ( double value)
   {
   VALUE.dbl=value;
   return (VALUE.lng);
   }


//+------------------------------------------------------------------+
double GV_Read()
{
if (! GlobalVariableCheck (GVname))
   GlobalVariableTemp (GVname);
   
return ( GlobalVariableGet (GVname));
}
//+------------------------------------------------------------------+
void GV_Save( double value)
{
GlobalVariableSet (GVname, value);
}
 
Taras Slobodyanik :

모든 것이 준비되었으므로 쓰기/읽기를 추가하기만 하면 됩니다.

정말 감사합니다! 이전에 그러한 지표를 만들려고 시도한 사람이 있는지 궁금합니다. 아무리 찾아봐도 안나오더군요. 나는 이것이 많은 사람들에게 흥미로울 것이라고 생각합니다.
 
Vitaly Muzichenko :

OnInit()에서 초기화 수행

아니요, 현재 막대에 신호를 보내지 않습니다. 지표가 차트에 첨부된 후 처음으로 모든 것을 계산한 후 _time 변수를 재설정 할 수 있습니다.

지표가 모든 것을 한 번 계산했는지 어떻게 알 수 있습니까?
 
Ghabo :

차트에 표시기를 던지고... ALERT 하지만 신호가 5바 떨어져 있습니다. 추가 작업 중에는 예상한 대로 경고음이 울립니다.

처음에 신호를 보내지 않도록 만드는 방법은 무엇입니까?

 if (М_А> 0.0 )  
{
if (time!= Time [ 0 ])
   {
    time= Time [ 0 ]; 
    AL( Symbol ()+ " " + Period ()+ " УХ ТЫ" , 2 ); //
   }
 }

AL() 함수에서 가능한 모든 알림.

M_A가 무엇인가요? 그것은 무엇을 포함하고 어디에서 데이터를 가져옵니까?

시간 확인과 함께 현재 막대의 신호 유효성도 확인해야 합니다. 그리고 M_A의 값을 확인하면 됩니다. 어디서 가져오나요?

 
Artyom Trishkin :

M_A가 무엇인가요? 그것은 무엇을 포함하고 어디에서 데이터를 가져옵니까?

시간 확인과 함께 현재 막대의 신호 유효성도 확인해야 합니다. 그리고 M_A의 값을 확인하면 됩니다. 어디서 가져오나요?

나는 지표를 부른다.

М_А = NormalizeDouble ( iCustom ( NULL , 0 , "Morning_All_Best" , 0 ,i), Digits );

유효성을 확인하는 방법?

 
Ghabo :

나는 지표를 부른다.

유효성을 확인하는 방법?

1. 정규화를 하는 이유는 무엇입니까? 이 작업은 표시기 루프에서 작동하기에는 너무 비용이 많이 들고 여기서는 필요하지 않습니다.

2. "0보다 큼"은 무엇을 의미합니까? 이 사용자 지정 표시기 는 어떤 신호를 제공합니까? 데이터 창(Ctrl+D)에서 이 표시기의 버퍼 값에 표시되는 것은 무엇입니까?