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

 
Valeriy Yastremskiy :

주문 유형 수의 플래그 또는 제어 또는 티켓이 시장 주문 마감 시간의 제어인 경우 0이 아니면 주문이 마감되고 주문을 열기 위한 플래그가 false입니다.

프로그래밍 방식은 어떻습니까?
 
AIGUL SALMANOVA :
프로그래밍 방식은 어떻습니까?
 if ( OrderSelect (Ticket, SELECT_BY_TICKET)== true )
        {
         if (OrderCloseTime()== 0 )               // Если наш рыночный ордер не закрыт
           {
             if (flagAlert == true )
               Alert ( "Наш рыночный ордер жив, Модифицируем его если нужно " , Text,Ticket, ". Ждём ответ.." );

            ModifyTral(); // Модифицируем если нужно
           }
         if (OrderCloseTime()!= 0 )               // Если наш рыночный ордер закрылся
           {
            OpnOr= false ;                     // Флаг открытия рыночного ордера после его закрытия делаем ЛОЖЬ
            Ticket= 0 ;                           // Тикет ордера рыночного, он может быть только один
           
             Alert ( "Наш рыночный ордер закрылся. Работа Советника продолжается " , "Прибыль/убыток = " ,OrderProfit(),
                   " Своп = " , OrderSwap(), " Комиссия = " , OrderCommission());
             return ;
           }
        }
       else
        { Alert ( "OrderSelect() нашего рыночного ордера вернул ошибку - " , GetLastError ()); return ;}
     }

티켓 계산용.

주문을 열 때 티켓을 기억해야 합니다.

 Alert ( "Попытка открыть Buy Ожидание ответа.." , "SL = " ,SL, "TP = " ,TP, "Lts = " ,Lts);
            Ticket= OrderSend (Symb,OP_BUY,Lts,Ask,slippage,SL,TP, "QstrBuy" ,Magic, 0 ,Blue); //Открытие Buy
             if (Ticket> 0 ) // Получилось :)
              {
               Alert ( Symbol (), "Открыт ордер Buy по цене " ,Ask, "Ticket = " ,Ticket);}
 
Valeriy Yastremskiy :

솔직히 말해 무엇이 필요한지 명확하지 않습니다. 표시되는 내용과 필요한 내용을 이해하는 방법을 공식으로 작성하십시오.

마지막 4틱 사이에 밀리초 단위의 시간이 필요합니다. 새 눈금이 나타나면 값을 업데이트합니다.

표시기는 마지막 틱( GetTickCount() )의 시간을 버퍼에 씁니다.

EA는 표시기에서 값을 가져와 시차를 계산합니다.

 double buf1= iCustom ( Symbol (), 0 , "time" , 0 , 1 );
double buf2= iCustom ( Symbol (), 0 , "time" , 0 , 2 );
double buf3= iCustom ( Symbol (), 0 , "time" , 0 , 3 );
double buf4= iCustom ( Symbol (), 0 , "time" , 0 , 4 );
double delta1=buf1-buf2;
double delta2=buf2-buf3;
double delta3=buf3-buf4;
Alert (delta1, "   " ,delta2, "   " ,delta3);

모든 것을 고려한 것 같지만 Alert는 그림과 같이 하나씩 값을 내준다.

이유를 이해하지 못합니다.


 
prom18 :

마지막 4틱 사이에 밀리초 단위의 시간이 필요합니다. 새 눈금이 나타나면 값을 업데이트합니다.

표시기는 마지막 틱(GetTickCount())의 시간을 버퍼에 씁니다.

EA는 표시기에서 값을 가져와 시차를 계산합니다.

모든 것을 고려한 것 같지만 Alert는 그림과 같이 하나씩 값을 내준다.

이유를 이해하지 마십시오.


문서를 읽지 않기 때문에

GetTickCount 에 대한 도움말에는 이에 대해 기록되어 있습니다. 이것은 카운터의 정수 오버플로입니다.

 
Maxim Kuznetsov :

문서를 읽지 않기 때문에

GetTickCount에 대한 도움말에는 이에 대해 기록되어 있습니다. 이것은 카운터의 정수 오버플로입니다.

유니트 말씀하시는건가요? 경고창에 왜 뜨나요? 나는 그것을 거기에 쓰지 않았다.

 
prom18 :

유니트 말씀하시는건가요? 경고창에 왜 뜨나요? 나는 그것을 거기에 쓰지 않았다.

첫 번째 경고 에서 계산된 차이를 잘못 표시합니다(오버플로를 고려하지 않고).

코드에 큰 정수 값이 있는 두 번째 경고는 제공한 조각에 없습니다 :-)

 

그것이 바로 요점입니다. 코드에는 존재하지 않습니다.

표시기의 전체 코드입니다.

 #property   indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua
double x[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers( 1 );
   SetIndexStyle( 0 , DRAW_LINE );
   SetIndexBuffer ( 0 ,x);
   SetIndexDrawBegin( 0 , 0 );
   SetIndexLabel( 0 , "x" );
   SetIndexShift( 0 , 0 );
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   uint b= GetTickCount ();
   x[ 0 ]=b;
   Alert (b);
   for ( int j= ArraySize (x)- 1 ;j>= 1 ;j--){x[j]=x[j- 1 ];}
   return ( 0 );
  }
//+------------------------------------------------------------------+

고문의 전체 코드.

 #property copyright ""
#property link        ""
#property version    "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- 
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//--- 
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   uint buf1= iCustom ( Symbol (), 0 , "time" , 0 , 1 );
   uint buf2= iCustom ( Symbol (), 0 , "time" , 0 , 2 );
   uint buf3= iCustom ( Symbol (), 0 , "time" , 0 , 3 );
   uint buf4= iCustom ( Symbol (), 0 , "time" , 0 , 4 );
   uint delta1=buf1-buf2;
   uint delta2=buf2-buf3;
   uint delta3=buf3-buf4;
   Alert (delta1, "   " ,delta2, "   " ,delta3);  
  }
//+------------------------------------------------------------------+
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
  • www.mql5.com
//| Expert initialization function                                   | //| Expert deinitialization function                                 | //| Expert tick function                                             | //| test1                                                            |...
 
prom18 :

그것이 바로 요점입니다. 코드에는 존재하지 않습니다.

표시기의 전체 코드입니다.

고문의 전체 코드.

당신이 뒤에 무엇을 남겼는지보십시오.

time.mq4를 살펴보십시오 - 아마도 경고를 보낼 것입니다.

 
prom18 :

그것이 바로 요점입니다. 코드에는 존재하지 않습니다.

표시기의 전체 코드입니다.

고문의 전체 코드.

경고 구조의 표시기에서. 경보 (b) 아래 5행;

 uint b= GetTickCount ();
   x[ 0 ]=b;
   Alert (b);

분명히 이것은 시스템이 시작된 후 경과 한 밀리초 수입니다 )

 

빠른 거래 버튼의 상태를 추적하는 방법은 무엇입니까?

즉, 차트에 있는지 여부입니다.

프롬프트 기능 또는 기타 방법 무엇.