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

 
MosheDayan :
신호에 대해 자세히 설명할 수 있습니까? MT 또는 타사를 통한 것입니까?
아마도 여기 에 쓰여 있을 것입 니다 . 레벨 대신 거래가 방송되고 시스템이 마음에 들면 누구나 연결할 수 있습니다.
 

도움을 주셔서 감사합니다. 수정되었습니다.

 
예를 들어 지표의 데이터에 따라 전체 터미널 또는 특정 Expert Advisor에서 자동 거래를 중지/활성화할 수 있습니까?
 
Andrey Sokolov :
예를 들어 지표의 데이터에 따라 전체 터미널 또는 특정 Expert Advisor에서 자동 거래를 중지/활성화할 수 있습니까?

자체적으로 터미널의 전역 변수를 사용하여 모든 사람에게 동일한 GP를 설정하고 값을 모니터링할 수 있습니다(예: 0인 경우 모든 어드바이저가 거래하지 않음).

WinAPI를 통해 터미널 패널에서 자동 거래 버튼을 찾아 비활성화할 수도 있습니다.

 
안녕하세요! 차트와 함께 움직이지 않지만 고정된 차트(스티커, 알림)에 텍스트를 표시하는 코드가 있습니까? 고맙습니다!
 
Vladimir.Tyumen :
안녕하세요! 차트와 함께 움직이지 않지만 고정된 차트(스티커, 알림)에 텍스트를 표시하는 코드가 있습니까? 고맙습니다!
OBJ_LABEL
 
안녕하세요 여러분, 저는 언어를 배우기 시작했습니다. 최근에 그리드 Expert Advisor를 만드는 방법에 대한 비디오 자습서를 보고 작성하고 컴파일했습니다. 오류 0개, 경고 0개입니다. 그러나 로봇은 거래를 열지 않습니다. 나는 코드를 게시하고 게으름이 아닌 사람을 살펴보십시오)))

미리 감사드립니다!


extern double Lots      = 0.1 ;
extern double Profit    = 50 ;
extern int Step         = 30 ;
extern int Magic        = 6677 ;
extern int Slippage     = 5 ;

extern int maPeriod     = 100 ;
extern int maShift      = 1 ;

double ma, FindLastBuyPrice, price;
//------------------------------------------------------------------
//___ПРОВЕРКА_ЗНАКОВ_ПОСЛЕ_ТОЧКИ___
//------------------------------------------------------------------
int OnInit ()
{
   if ( Digits == 3 || Digits == 5 )
   {
      Step     *= 10 ;
      Slippage *= 10 ;
   }
   return ( INIT_SUCCEEDED );
}
//---------------------------------------------
void OnDeinit ( const int reason)
{

}
//------------------------------------------------------------------
//
//------------------------------------------------------------------
void OnTick ()
{
  
   ma = iMA ( Symbol (), 0 ,maPeriod, maShift, MODE_SMA , PRICE_CLOSE , 0 );
  
   if (CountBuy() && CountSell() == 0 && Bid < ma) //
   {
       if ( OrderSend ( Symbol (), OP_SELL , Lots, Bid , Slippage, 0 , 0 , "" , Magic, 0 , Red) < 1 )
         Print ( "Неудалось открыть ордер на Продажу" );
   }
   if (CountBuy() && CountSell() == 0 && Ask < ma)
   {
       if ( OrderSend ( Symbol (), OP_BUY , Lots, Ask , Slippage, 0 , 0 , "" , Magic, 0 , Blue) < 1 )
         Print ( "Неудалось открыть ордер на Покупку" );
      
   }
   if (CountBuy() >= 1 )
   {
      price = FindLastBuyPrice();
       if ((price - Ask ) >= Step* Point )
      {
         if ( OrderSend ( Symbol (), OP_BUY , Lots, Ask , Slippage, 0 , 0 , "" , Magic, 0 , Blue) < 1 )
         Print ( "Неудалось открыть ордер на Покупку" );
      }
   }
  
   if (CountSell() >= 1 )
   {
      price = FindLastBuyPrice();
       if (( Bid - price) >= Step* Point )
      {
         if ( OrderSend ( Symbol (), OP_SELL , Lots, Bid , Slippage, 0 , 0 , "" , Magic, 0 , Red) < 1 )
         Print ( "Неудалось открыть ордер на Ппродажу" );
      }
   }
  
  
   double op = CalculateProfit();
   if (op >= Profit)
   {
      CloseAll();
   }      
  
}
//------------------------------------------------------------------
void CloseAll()
{
   for ( int i = OrdersTotal ()- 1 ; i>= 0 ; i--)
   {
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
      {
         if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic)
         {
             if ( OrderType () == OP_BUY )
            {
               if (! OrderClose ( OrderTicket (), OrderLots (), Bid , Slippage))
               {
                   Print ( "Не удалось закрыть ордер на ПОКУПКУ" );
               }
            }
             if ( OrderType () == OP_SELL )
            {
               if (! OrderClose ( OrderTicket (), OrderLots (), Ask , Slippage))
               {
                   Print ( "Не удалось закрыть ордер на ПРОДАЖУ" );
               }
            }
         }
      }
   }
}
//------------------------------------------------------------------
double CalculateProfit()   // Считаем профит по всем ордерам
{
   double oProfit = 0 ;
   for ( int i= OrdersTotal () - 1 ; i>= 0 ; i--)
   {
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
      {
         if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic)
         {
             if ( OrderType () == OP_BUY || OrderType () == OP_SELL )
            {
               oProfit += OrderProfit ();
            }
         }
      }
   }
  
   return (oProfit);

}
//------------------------------------------------------------------
double FindLastBuyPrice()
{

   int oldTicket, ticket   = 0 ;
   double oldopenPrice     = 0 ;
  
   for ( int cnt = OrdersTotal ()- 1 ; cnt>= 0 ; cnt--)
   {
       if ( OrderSelect (cnt, SELECT_BY_POS , MODE_TRADES ))
      {
         if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic && OrderType () == OP_BUY )
         {
            oldTicket = OrderTicket ();
             if (oldTicket > ticket)
            {
               ticket = oldTicket;
               oldopenPrice = OrderOpenPrice ();
            }
         }
        
      }
   }
   return (oldopenPrice);
}
double FindLastSellPrice()
{

   int oldTicket, ticket   = 0 ;
   double oldopenPrice     = 0 ;
  
   for ( int cnt = OrdersTotal ()- 1 ; cnt>= 0 ; cnt--)
   {
       if ( OrderSelect (cnt, SELECT_BY_POS , MODE_TRADES ))
      {
         if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic && OrderType () == OP_SELL )
         {
            oldTicket = OrderTicket ();
             if (oldTicket > ticket)
            {
               ticket = oldTicket;
               oldopenPrice = OrderOpenPrice ();
            }
         }
        
      }
   }
   return (oldopenPrice);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int CountBuy()
{
   int count = 0 ;
   for ( int trade = OrdersTotal ()- 1 ; trade >= 0 ; trade--)
   {
       if ( OrderSelect (trade, SELECT_BY_POS , MODE_TRADES ) == true )
      {
         if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic && OrderType () == OP_BUY )
            count++;
      }
   }
   return (count);
}
//+------------------------------------------------------------------+
int CountSell()
{
   int count = 0 ;
   for ( int trade = OrdersTotal ()- 1 ; trade >= 0 ; trade--)
   {
       if ( OrderSelect (trade, SELECT_BY_POS , MODE_TRADES ) == true )
      {
         if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic && OrderType () == OP_SELL )
            count++;
      }
   }
   return (count);
}
//+------------------------------------------------------------------+


 

안녕하세요. 질문:

라이브러리에 표시기가 있습니다 . 고문을 작성 해야합니다.

파일을 생성하지 않으려면 어떤 작업 계획이 필요하지만 결국에는 둘 또는 하나가 있어야 합니다. 이상적으로는 결합하십시오.


Voznesen :
안녕하세요 여러분, 저는 언어를 배우기 시작했습니다. 최근에 그리드 Expert Advisor를 만드는 방법에 대한 비디오 자습서를 보고 작성하고 컴파일했습니다. 오류 0개, 경고 0개입니다. 그러나 로봇은 거래를 열지 않습니다. 나는 코드를 게시하고 게으름이 아닌 사람을 살펴보십시오)))
그리고 그는 어떻게 거래를 시작해야 합니까? 어떤 조건에서?
 
trader781 :

안녕하세요. 질문:

라이브러리에 표시기가 있습니다 . 고문을 작성 해야합니다.

파일을 생성하지 않으려면 어떤 작업 계획이 필요하지만 결국에는 둘 또는 하나가 있어야 합니다. 이상적으로는 결합하십시오.


리소스로 연결된 사용자 지정 지표 작업

mql4 프로그램이 작동하려면 하나 이상의 사용자 지정 표시기가 필요할 수 있으며, 모두 실행 가능한 mql4 프로그램의 코드에 포함될 수 있습니다. 지표를 리소스로 포함하면 프로그램을 더 쉽게 배포할 수 있습니다.

유일한 문제는 포함된 파일이 없는 경우 다른 컴퓨터에서 컴파일되지 않는다는 것입니다.
Ресурсы - Программы MQL4 - Справочник MQL4
Ресурсы - Программы MQL4 - Справочник MQL4
  • docs.mql4.com
Ресурсы - Программы MQL4 - Справочник MQL4