초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1226

 
Alexey Belyakov :


이 옵션도 작동하지 않았습니다.

어린 양이 킬로미터 코드를 좋아하는 이유는 ...

귀하의 문제는변수 선언을 고려하여 6줄의 코드로 해결됩니다.

 /************************Expert tick function************************/
void OnTick ()
 {
   bool signal = true ;
   datetime timeBar = iTime ( _Symbol , PERIOD_CURRENT , 0 );// период можно поставить по своему усмотрению
   datetime static timeOpen = 0 ;
   if (timeBar > timeOpen)
   {
     if (signal)
     {
       // открыть позицию
      timeOpen = timeBar;
     }
   }
 } /******************************************************************/

시그널 변수를 이해하시길 바랍니다.

 

영형! 벌었다! 아이디어 주셔서 감사합니다!

진실은 조금 podshamanit해야 했다. (true) 없이도 훨씬 쉬워졌습니다. 사실, 이 교활하게 혼란스러운 MQL 논리를 설명할 수 없습니다.)

다음과 같이 구현됩니다.

 datetime timeBar = iTime ( _Symbol , PERIOD_CURRENT , 0 ); // период можно поставить по своему усмотрению
datetime static timeOpen = 0 ;

if (( PositionsTotal ()== 0 )&&(c0>h1)&&(rGENUP> 0.30 )&&(timeBar > timeOpen))     // Условие для открытия позиции.
     {
       MqlTradeRequest request;
       MqlTradeResult   result;
      request.action   = TRADE_ACTION_DEAL ;                         // тип торговой операции
      request.symbol   = Symbol ();                                 // символ
      request.volume   = 1 ;                                       // объем в 1 лот
      request.type     = ORDER_TYPE_BUY ;                         // тип ордера
      request.price    = SymbolInfoDouble ( Symbol (), SYMBOL_ASK ); // цена для открытия
      request.deviation= 3 ;
      request.sl    = NormalizeDouble (Ask- 50 * _Point , _Digits );
      request.tp    = NormalizeDouble (Ask+ 50 * _Point , _Digits );    

       if (! OrderSend (request,result))
         PrintFormat ( "OrderSend error %d" , GetLastError ());     // если отправить запрос не удалось, вывести код ошибки
       //--- информация об операции
       PrintFormat ( "retcode=%u  deal=%I64u  order=%I64u" ,result.retcode,result.deal,result.order);
       // допустимое отклонение от цены
timeOpen = timeBar;
}
왜 MQL5에 포지션을 여는 데 사용되는 큰 코드가 있는지 궁금합니다. MQL4와 다릅니다. 4-ke에는 한 줄만 있습니다. 바로 거기 ... 줄일 수 있습니까? 예를 들어 오류 처리기를 제거하시겠습니까?


Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Alexey Belyakov :

영형! 벌었다! 아이디어 주셔서 감사합니다!

진실은 조금 podshamanit해야 했다. (true) 없이도 훨씬 쉬워졌습니다. 사실, 이 교활하게 혼란스러운 MQL 논리를 설명할 수 없습니다.)

다음과 같이 구현됩니다.

왜 MQL5에 포지션을 여는 데 사용되는 큰 코드가 있는지 궁금합니다. MQL4와 다릅니다. 4-ke에는 한 줄만 있습니다. 바로 거기 ... 줄일 수 있습니까? 예를 들어 오류 처리기를 제거하시겠습니까?


무역 클래스를 사용하십시오. 그리고 코드는 매우 짧을 것입니다.

예시:

 //+------------------------------------------------------------------+
//|                                            Only_one_purchase.mq5 |
//+------------------------------------------------------------------+
#property version    "1.003"
#property script_show_inputs
#include <Trade\Trade.mqh>
CTrade         m_trade;           // trading object
//--- input parameters
input ENUM_POSITION_TYPE    InpPositionType   = POSITION_TYPE_BUY ; // Position Type
input double                InpVolume         = 0.0 ;               // Volume
input ulong                 m_magic           = 15489 ;             // magic number
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   m_trade.SetExpertMagicNumber(m_magic);
//--- open a position
   if (InpPositionType== POSITION_TYPE_BUY )
      m_trade.Buy(InpVolume);
   else
      m_trade.Sell(InpVolume);
  }
//+------------------------------------------------------------------+
 
Alexey Belyakov :

영형! 벌었다! 아이디어 주셔서 감사합니다!

진실은 조금 podshamanit해야 했다. (true) 없이도 훨씬 쉬워졌습니다. 사실, 이 교활하게 혼란스러운 MQL 논리를 설명할 수 없습니다.)

다음과 같이 구현됩니다.

왜 MQL5에 포지션을 여는 데 사용되는 큰 코드가 있는지 궁금합니다. MQL4와 다릅니다. 4-ke에는 한 줄만 있습니다. 바로 거기 ... 줄일 수 있습니까? 예를 들어 오류 처리기를 제거하시겠습니까?


그래서 조건이 있다면

 if (( PositionsTotal ()== 0 )&&

그렇다면 왜 새로운 바를 확인합니까? 아니면 같은 바에서 포지션을 닫고 두 번째 오프닝을 금지하는 옵션이 있습니까?

 
Alexey Belyakov :

영형! 벌었다! 아이디어 주셔서 감사합니다!

진실은 조금 podshamanit해야 했다. (true) 없이도 훨씬 쉬워졌습니다. 사실, 이 교활하게 혼란스러운 MQL 논리를 설명할 수 없습니다.)

다음과 같이 구현됩니다.

왜 MQL5에 포지션을 여는 데 사용되는 큰 코드가 있는지 궁금합니다. MQL4와 다릅니다. 4-ke에는 한 줄만 있습니다. 바로 거기 ... 줄일 수 있습니까? 예를 들어 오류 처리기를 제거하시겠습니까?


옛날 옛적에 MQL4가 있었을 때 사람들은 자신의 방식대로 무언가를 할 수 있도록 낮은 수준의 액세스 권한이 부여되지 않았다고 분개했습니다.

글쎄, 주어진 - 이제 MQL4의 OrderSend() 구성 요소에 액세스 권한이 부여되었습니다. 즉, MQL 논리에 배포되어 요청한 대로 수행합니다. 그래서 아니오 - 이제 너무 어려운 섭동입니다.

복잡한? 문제 없습니다. 여기 에 SB의 거래 클래스가 있습니다. MQL4 표준 거래 기능과 거의 동일합니다.
MQL4에서 이러한 클래스는 거래 기능임을 고려하십시오. 그리고 MQL5에서는 모든 것이 오픈 액세스입니다.

즐기다.

 
Artyom Trishkin :

옛날 옛적에 MQL4가 있었을 때 사람들은 자신의 방식대로 무언가를 할 수 있도록 낮은 수준의 액세스 권한이 부여되지 않았다고 분개했습니다.

글쎄, 주어진 - 이제 MQL4의 OrderSend() 구성 요소에 액세스 권한이 부여되었습니다. 즉, MQL 논리에 배포되어 요청한 대로 수행합니다. 그래서 아니오 - 이제 너무 어려운 섭동입니다.

복잡한? 문제 없습니다. 여기 에 SB의 거래 클래스가 있습니다. MQL4 표준 거래 기능과 거의 동일합니다.
MQL4에서 이러한 클래스는 거래 기능임을 고려하십시오. 그리고 MQL5에서는 모든 것이 오픈 액세스입니다.

즐기다.

부교수, 부교수. 왜 그렇게 화났어 (오늘) ©

 
Alexey Viktorov :

부교수, 부교수. 왜 그렇게 화났어 (오늘) ©

구멍으로 들어가자...

 
Alexey Viktorov :

그래서 조건이 있다면

그렇다면 왜 새로운 바를 확인합니까? 아니면 같은 바에서 포지션을 닫고 두 번째 오프닝을 금지하는 옵션이 있습니까?

절대적으로 맞습니다. 동일한 바에서 포지션을 마감할 수 있는 옵션이 있습니다.

 

새로운 벽에 부딪혔습니다. ) "벽"은 손익분기점이라고 합니다.

다음과 같이 MQL4에서 구현했습니다.

(어디선가 찢어서 기억이 안남)

 int BULevel= 30 ;

   for ( int i= 0 ; i< OrdersTotal (); i++) 
      {
       if ( OrderSelect (i, SELECT_BY_POS))
        {      
         if (OrderType()==OP_BUY) 
          {
           if (OrderOpenPrice()<=(Bid-BULevel* Point )&&OrderOpenPrice()>OrderStopLoss())
            {      
             int p=OrderModify(OrderTicket(),OrderOpenPrice(),Bid- 50 * Point ,OrderTakeProfit(), 0 ,Green);
            }
           }       
 
         if (OrderType() == OP_SELL) 
           {
             if (OrderOpenPrice()>=(Ask+BULevel* Point )&&OrderOpenPrice()<OrderStopLoss()) 
             {
              p=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+ 50 * Point ,OrderTakeProfit(), 0 ,Red);
             }
           } 
         }
       }

//------------------------------------------------------------------+

하지만 5일. 어떻게?

트레이딩 클래스를 찾아보니 어디에도 꿰매어 있지 않은 것 같다. 그리고 필요한 것. 프로를 뭐라고 합니까?

 

다른 차트의 거래가 차트에 표시되지 않도록 하려면 어떻게 해야 합니까?

이 차트에 있는 로봇만 거래합니다.

사유: