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

 

인사말. MQL4. 거래 고문에 게임 "뱀"을 등록하고 싶습니다.

OnTimer() 이벤트의 발생 빈도를 1 미만(예: 0.7)으로 결정하는 Expert Advisor에서 시간(초)을 설정할 수 있습니까?

또는 코드의 일부를 주기적으로 실행하는 다른 방법으로 OnTick()에서 실행 파일이 지연되지 않도록 하시겠습니까?

 
Andrey Sokolov :

인사말. MQL4. 거래 고문에 게임 "뱀"을 등록하고 싶습니다.

OnTimer() 이벤트의 발생 빈도를 1 미만(예: 0.7)으로 결정하는 Expert Advisor에서 시간(초)을 설정할 수 있습니까?

또는 코드의 일부를 주기적으로 실행하는 다른 방법으로 OnTick()에서 실행 파일이 지연되지 않도록 하시겠습니까?

https://docs.mql4.com/en/eventfunctions/eventsetmillisecondtimer
EventSetMillisecondTimer - Работа с событиями - Справочник MQL4
EventSetMillisecondTimer - Работа с событиями - Справочник MQL4
  • docs.mql4.com
Указывает клиентскому терминалу, что для данного эксперта или индикатора необходимо генерировать события таймера с периодичностью менее одной секунды. нужно получать события таймера чаще, чем один раз в секунду. Если вам достаточно обычного таймера с периодом в несколько секунд, то используйте EventSetTimer(). Обычно эта функция должна...
 

아래 코드는 牖漠摲牥⁳湩潦〉〮र〲थ⸰〰㠉┰〉〮र를 출력합니다.

그리고 텍스트 테스트를 표시해야 합니다.

파일은 Files\\Test\\ 폴더에 있습니다.

함수는 핸들이 정확하다고 기록하고 1과 같으며 즉시 GetLastError 가 오류 5008 Invalid handle ....를 기록합니다.

어디서 파나요?

 //+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   core();
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {

  }
//+------------------------------------------------------------------+
void core()
  {
   string value = "" , name = "" ;

   name =   "Test" + "\\test.csv" ;
   Print ( FileIsExist (name));

   ResetLastError ();

   int m_hendle = - 1 ;
   m_hendle = FileOpen (name, FILE_READ | FILE_WRITE | FILE_CSV );
   if (m_hendle != INVALID_HANDLE )
     {
       Print (( string )m_hendle + "    " + name + " [" + ( string ) FileSize (m_hendle) + "]" + ( string ) GetLastError ());
       while (! FileIsEnding (m_hendle))
        {
         string sCurrent = FileReadString (m_hendle);
         Print ( "sCurrent = " , sCurrent);
        }
       FileClose (m_hendle);
     }
  }
//+------------------------------------------------------------------+
 
Vladimir Pastushak :

아래 코드는 牖漠摲牥⁳湩潦〉〮र〲थ⸰〰㠉┰〉〮र를 출력합니다.

코로나바이러스인듯

 

안녕하세요... 일회성 mt5 고문을 4로 변환하는 데 도움을 주세요. 그는 스스로 공부하고 욕망도 필요도 없습니다. 어려운 경우 이해하고 점수를 매길 것입니다. 필요성은 크지 않습니다 ...

이미 질문을 받았고 일부 주제에 대한 참조에 대한 응답으로 " Grail 전문가" 설정을 배우거나 제공하는 방법을 알려줍니다. 포럼을 읽는 동안 사람들이 도울 것 같았습니다 ... 재미있습니다. 사람들이 돈을 위해 비싸지 않은 일을 요청하면 ... 그들은 무료로 도움을 주며 돈 없이 요청하면 분명히 고려합니다. 대리와 나샤루를 원하는 사람이겠지..지금 여기 돈이 있었다면 속지 않고 바로 결제했을텐데 존재하지도 않고 등장하면 더 이상 필요하지도 않을텐데... 득점하는 것이 더 쉽지만 여전히 ... 희망은 마지막에 죽습니다.


나중에 나타날 때 지불 할 수 있습니다 ...

파일:
Lift.mq5  9 kb
 
eKpuBu4 :

안녕하세요... 일회성 mt5 고문을 4로 변환하는 데 도움을 주세요. 그는 스스로 공부하고 욕망도 필요도 없습니다. 어려운 경우 이해하고 점수를 매길 것입니다. 필요성은 크지 않습니다 ...

나머지는 어디에 있습니까?

전문가.mqh>

시그널트릭스.mqh>


SignalStoch.mqh>

TrailingFixedPips.mqh>

MoneyFixedRisk.mqh>

 
안녕하세요. 나는 mql4 프로그래밍 지식으로 빛나지 않습니다
 input double    Lots= 0.01 ;     //Lots size
input int       Tprof= 1000 ;     //TakeProfit
input int       TreilSt= 100 ;     //Trailing Stop
input int       TrStKor= 10 ;     //The size of the correction Trailing Stop
input int       Magik= 1001012 ;   //Magic Number
extern int Bars_left = 5 ;
extern int Bars_right = 5 ;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---

//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   static double Upf,Lowf;
   double Tupf= 0 ,Tlowf= 0 ;
   int i,k;
   for (i= 2 ; i< 100 ; i++)
     {
      Tupf= iCustom ( Symbol (), 0 , "takbir" ,Bars_left,Bars_right, 0 ,i);
       if (Tupf> 0 )
         break ;
     }
   for (k= 2 ; k< 100 ; k++)
     {
      Tlowf= iCustom ( Symbol (), 0 , "takbir" ,Bars_left,Bars_right, 1 ,k);
       if (Tlowf> 0 )
         break ;
     }
//----Open position
//if(i>0) Print("i = ", i, " k = ",k);
   int total= OrdersTotal ();
/*if(total<1)
      {*/
    
   if (Ask>Tupf+ 15 * _Point && Tupf!=Upf)
     {
       double StL= NormalizeDouble (Tlowf, _Digits );
       int ticket= OrderSend ( NULL ,OP_BUY,Lots,Ask, 30 ,StL,Bid+Tprof* _Point , NULL ,Magik, 0 , clrBlue );
       if (ticket< 0 )
        {
         Print ( "OrderSend error #" , GetLastError ());
        }
       else { Print ( "Ask=" ,Ask, "Upf=" ,Upf, " StL=" ,StL); Upf=Tupf;}
     }
   if (Bid<Tlowf- 15 * _Point && Tlowf!=Lowf)
     {
       double StL= NormalizeDouble (Tupf, _Digits );
       int ticket= OrderSend ( NULL ,OP_SELL,Lots,Bid, 30 ,StL,Ask-Tprof* _Point , NULL ,Magik, 0 , clrRed );
       if (ticket< 0 )
        {
         Print ( "OrderSend error #" , GetLastError ());
        }
       else { Print ( "Bid=" ,Bid, "Lowf=" ,Lowf, " StL=" ,StL);   Lowf=Tlowf;}
     }
// }
//----Trailing Stop operation
   for ( int cni= 0 ;cni<total;cni++)
     {
       if (! OrderSelect (cni,SELECT_BY_POS,MODE_TRADES))
         continue ;
       if (OrderMagicNumber()==Magik && TreilSt> 0 )
        {
         if (OrderType()==OP_BUY)
           {
             if (Bid-OrderOpenPrice()> _Point *TreilSt)
              {
               if (OrderStopLoss()<Bid- _Point *TreilSt-TrStKor* _Point )
                 {
                   //--- modify order and exit
                   if (!OrderModify(OrderTicket(),OrderOpenPrice(),Bid- _Point *TreilSt,OrderTakeProfit(), 0 , clrBlue ))
                     Print ( "OrderModify error " , GetLastError ());
                   return ;
                 }
              }
           }
         if (OrderType()==OP_SELL)
           {
             if ((OrderOpenPrice()-Ask)> _Point *TreilSt)
              {
               if (OrderStopLoss()>Ask+ _Point *TreilSt+ _Point *TrStKor)
                 {
                   //--- modify order and exit
                   if (!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+ Point *TreilSt,OrderTakeProfit(), 0 , clrRed ))
                     Print ( "OrderModify error " , GetLastError ());
                   return ;
                 }
              }
           }
        }
     }
  }

그러나 다음을 수정하는 방법을 알 수 없습니다.

 double StL= NormalizeDouble (Tupf, _Digits );

손절매는 이전 "상부 프랙탈"에 설정됩니다.

그리고 다음이 필요합니다.

마지막 더 낮은 프랙탈이 깨지면 손절매는 더 낮은 프랙탈과 브레이크아웃 사이의 최대 가격 에 배치됩니다.

마지막 상위 프랙탈이 깨진 경우 - 손절매는 상위 프랙탈과 브레이크아웃 사이의 최소 가격에 배치됩니다.

나는 시간을 통해 프랙탈의 형성을 설정하고 인덱스를 결정하려고 노력하지만 현재 시간을 구현하는 방법을 이해하지 못하고 현재 시간에서 프랙탈까지 검색 할 때마다 막대를 정렬 할 때까지 열리다?

아마도 주문을 시작하는 동안 무언가를 찾는 방법은 무엇입니까? 그리고 순서 수정, 정류장 변경 등을 통해 방법을 알 수 없습니다.

도와주세요. 친애하는 전문가 여러분, 5분만 시간을 내십시오.

Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Технические индикаторы требуют для своих расчетов указания значений цен и/или значений объемов, на которых они будут считаться. Существуют 7 предопределенных идентификаторов перечисления ENUM_APPLIED_PRICE, для указания нужной ценовой базы расчетов. Если технический индикатор для своих расчетов использует ценовые данные, тип которых задается...
 
v0van1990 :
도와주세요. 친애하는 전문가 여러분, 5분만 시간을 내십시오.

여기서 수정해야 합니다.

     {
      Tupf= iCustom ( Symbol (), 0 , "takbir" ,Bars_left,Bars_right, 0 ,i);
       if (Tupf> 0 )
         break ;
     }
 
MakarFX :

여기서 수정해야 합니다.

이 기능은 마지막으로 형성된 비표준 프랙탈에 대한 정보를 제공하며 EA 시작 시 이러한 비표준 프랙탈을 변경합니다.

또는 터키에 기능을 추가하십시오 - 마지막 프랙탈을 깨기 전에 높거나 낮음에 대한 정보? 또는 새로운 프랙탈이 형성되는 동안?

내 말이 맞아?