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

 
alsu :
"double 유형이어야 함"이 아니라 "전역 변수에 double로 저장됨"입니다. 느끼다

안녕하세요. 나는 "차이를 느끼기 위해" 노력했고 그것이 결과적으로 ... 즉. 다음과 같은 방식으로 GV 변수를 정의하는 것이 가능합니다(일부 확장 포함). GV 변수는 말하자면 모든 유형의 변수를 저장할 수 있는 "상자"입니다( string 제외, GV 변수에는 double 유형만 있고 유형 축소 규칙에 따르면 유형 축소는 허용되지 않습니다. , 즉 문자열 에서 허용되지 않음 두 배 ). 그리고 우리가 GV 변수에 넣은 이 변수는 "이 상자의 형태를 취합니다"(즉, 원래 유형에서 이중 유형으로 캐스트됩니다)... 일반적으로 이와 같습니까?

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

안녕하세요. 질문은 다음과 같습니다. S.K의 책에서 MQL 4 에 따르면 " 거래 작업 " 장, "주문 수정" 섹션 에서 선언된 가격이 스크립트가 첨부된 위치에 더 가까운 보류 주문을 수정하는 간단한 스크립트 의 예가 있습니다. 다음과 같이 다른 보류 중인 주문(modifyorderprice.mq4)의 가격보다

 //--------------------------------------------------------------------
// modifyorderprice.mq4 
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------- 1 --
int start()                                     // Спец.функция start
  {
   int Tral= 10 ;                                 // Дист. приближения
   string Symb= Symbol ();                         // Финанс. инструмент
   double Dist= 1000000.0 ;                       // Предустановка
   double Win_Price= WindowPriceOnDropped ();     // Здесь брошен скрипт
//--------------------------------------------------------------- 2 --
   for ( int i= 1 ; i<= OrdersTotal (); i++)           // Цикл перебора ордер
     {
       if ( OrderSelect (i- 1 ,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         //------------------------------------------------------ 3 --
         if ( OrderSymbol ()!= Symb) continue ;     // Не наш фин.инструм.
         if ( OrderType ()< 2 ) continue ;           // Рыночный ордер  
         //------------------------------------------------------ 4 --
         if ( NormalizeDouble ( MathAbs ( OrderOpenPrice ()-Win_Price), Digits )
            < NormalizeDouble (Dist, Digits ))     // Выбираем ближайший
           {
            Dist= MathAbs ( OrderOpenPrice ()-Win_Price); // Новое значение
             int     Tip   = OrderType ();           // Тип выбранного орд.
             int     Ticket= OrderTicket ();         // Номер выбранн. орд.
             double Price = OrderOpenPrice ();     // Цена выбранн. орд.
             double SL    = OrderStopLoss ();       // SL выбранного орд.
             double TP    = OrderTakeProfit ();     // TP выбранного орд.
           }                                     // Конец if
        }                                       // Конец анализа ордера
     }                                           // Конец перебора орд.
//--------------------------------------------------------------- 5 --
   if (Tip== 0 )                                   // Если отложенных нет
     {
       Alert ( "По " ,Symb, " отложенных ордеров нет" );
       return ;                                   // Выход из программы
     }
//--------------------------------------------------------------- 6 --
   while (true)                                   // Цикл закрытия орд.
     {
또는 블록 5-6의 이 스크립트에는 오류가 있습니다. (내가 볼 때) 라인
 if (Tip== 0 )                                   // Если отложенных нет
처럼 보여야 한다
 if (Tip< 2 )                                   // Если отложенных нет
모든 유형의 미결(시장) 주문 유형이 0 또는 1, 즉 2보다 작기 때문입니다.

아니면 내가 뭔가를 잘못 이해했습니다.

질문: 명확히 해주세요: 제가 뭔가를 잘못 이해했다면 정확히 무엇을 말하세요?

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

 
7777877 :

안녕하세요. 질문은 다음과 같습니다. S.K의 책에서 MQL 4 에 따르면 "주문 수정" 섹션의 "거래 작업" 장 에는 보류 중인 주문을 수정하는 간단한 스크립트 의 예가 있습니다. 기타 보류 중인 주문의 가격 (

또는 블록 5-6의 이 스크립트에는 오류가 있습니다. (내가 볼 때) 라인

처럼 보여야 한다

모든 유형의 미결(시장) 주문 유형이 0 또는 1, 즉 2보다 작기 때문입니다.

아니면 내가 뭔가를 잘못 이해했습니다.

질문: 명확히 해주세요: 제가 뭔가 를 잘못 이해했다면 정확히 무엇 을 말합니까?

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

친애하는 ... 그렇게 큰 글자로 여기에 쓸 필요가 없습니다 ... 그렇지 않으면 눈을 깰 수 있습니다 :-)

그리고 이것은... 질문을 하기 전에.. 메타에디터에서 HELP를 읽어보셨나요? 모두? 우선 ... 유형 및 기타 사항에 대해 넌센스를 묻지 않도록 ....

===

OrderSend() 함수의 작업 유형입니다. 다음 값 중 하나일 수 있습니다.

끊임없는 의미 설명
OP_BUY 0 구입
OP_SELL 하나 판매
OP_BUYLIMIT 2 보류 중인 주문 BUY LIMIT
OP_SELLLIMIT 보류 중인 주문 SELL LIMIT
OP_BUYSTOP 4 보류 중인 주문 BUY STOP
OP_SELLSTOP 5 보류 중인 주문 SELL STOP
 

그러나 유형별로 - 모든 것이 잘됩니다 ... 정확히 == 0이어야합니다 ...

왜냐하면 3번째 블록에서

      if ( OrderType ()< 2 ) continue ;           // Рыночный ордер  

시장가 주문 건너뛰기...

===

주문 목록에 지연이 있는 경우 TYPE 변수는 0이 아닙니다.

---

 

안녕하세요. 말해 주세요.

예를 들어 MA가 Level_R 및 Level_S를 통과하는 기준이 있습니다.

 int Criterion;
double MA_1=iMA(......,0);
double MA_2=iMA(......,1);
double MA_3=iMA(......,2);
if (MA_1 > Level_S_1 && Ma_2 <= Level_S_2 MA_3 <= Level_S_3) Criterion=1;
if (MA_1 > Level_R_1 && Ma_2 <= Level_R_2 MA_3 <= Level_R_3) Criterion=2;

질문: 새로운 패스가 발생할 때까지 값 1 또는 2(패스에 따라 다름)를 유지하고 후속 틱에서 0으로 재설정되지 않도록 기준을 기억하는 방법.

 
변수 외부 시작 또는 다른 함수의 정의를 전역 변수 로 이동하고 닫습니다...
 
Aleksander :
변수 외부 시작 또는 다른 함수의 정의를 전역 변수로 이동하고 닫습니다...
나는 그것을 시도했고 그는 저주했다 ... 나의 무능함을 암시했다.
 
그런 다음, 텍스트가 작은 경우 - 전체 레이아웃을 .. 20-30행, 더 이상
 
int Criterion, Crit;
int start()
 {
  Crit= Fun_Criterion( Criterion); 

  switch(Crit)
   {
   /************/
   }
return(0);
 }

Fun_Criterion(int Criterion)
 {
  if(MA_1 > Level_S_1 && Ma_2 <= Level_S_2 MA_3 <= Level_S_3) Criterion=1;
  if(MA_1 < Level_R_1 && Ma_2 >= Level_R_2 MA_3 >= Level_R_3) Criterion=2;

  return(Criterion);
 }
 

중개인이 있는 이유는 무엇입니까? 그리고 FUN 기능은 무엇입니까?

 int Criterion;
int start () {
  Fun_Criterion(); 

   switch ( Criterion )
   {
   /************/
   }
   return ( 0 );
}
//-----------------------------
void Fun_Criterion() {
   if (MA_1 > Level_S_1 && Ma_2 <= Level_S_2 && MA_3 <= Level_S_3) Criterion= 1 ;
   if (MA_1 < Level_R_1 && Ma_2 >= Level_R_2 && MA_3 >= Level_R_3) Criterion= 2 ;
 }

그리고 AND &&가 있어야 할 위치에 없는 것 같습니다...