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

 

그리고 시장에 다른 주문이 있지만 다른 수량의 주문이 있으면 이러한 결함이 발생하는 것 같습니다.

1로트에 4매, 1로트에 4매가 있다고 가정해 보겠습니다. 그리고 1은 0.5랏을 구매합니다.

그것을 우회하는 방법? 이 기능에 어떤 종류의 사이클이 필요합니까?

 
EgorKim :

그리고 시장에 다른 주문이 있지만 다른 수량의 주문이 있으면 이러한 결함이 발생하는 것 같습니다.

1로트에 4매, 1로트에 4매가 있다고 가정해 보겠습니다. 그리고 1은 0.5랏을 구매합니다.

그것을 우회하는 방법? 이 기능에 어떤 종류의 사이클이 필요합니까?

드러머가 어디론가 사라졌다. 이것이 표준 라이브러리 를 통해 작업하는 그의 장점입니다. 뭘 선택해야할지 모르겠어

       if (m_position.SelectByIndex(i))

예, 이해하기 게으릅니다.

나는 솔루션에 조금 다르게 접근할 것입니다. 구매 및 판매 위치 티켓이 있는 두 개의 배열을 별도로 생성하고 두 번째 사이클에서 쌍으로 위치를 닫습니다.

또는 하나의 2차원 배열이 가능합니다. 그러나 인덱스를 신중하게 배포해야 합니다. 누락되지 않도록...

 
Alexey Viktorov :

드러머가 어디론가 사라졌다. 이것이 표준 라이브러리 를 통해 작업하는 그의 장점입니다. 뭘 선택해야할지 모르겠어

예, 이해하기 게으릅니다.

나는 솔루션에 조금 다르게 접근할 것입니다. 구매 및 판매 위치 티켓이 있는 두 개의 배열을 별도로 생성하고 두 번째 사이클에서 쌍으로 위치를 닫습니다.

또는 하나의 2차원 배열이 가능합니다. 그러나 인덱스를 신중하게 배포해야 합니다. 누락되지 않도록...

나는 그것에 대해 스스로 생각했다. 두 배열의 코드를 공유할 수 있습니까? 나는 그것을 스스로 구현할 수 없습니다.

임시 솔루션으로 제한된 주기를 수행했습니다. 이 코드가 어떻게 올바른지 모르겠지만 적어도 뭔가가 있습니다. 진실은 이상하게도 제비뽑기로 끝이 난다.

분명히 다가오는 것의 양도 비교해야 분쇄가 없습니다. 여러분, 저는 포기합니다

 void CloseBy()
  {
   int s= 10 ;
   do // цикл
     {
      s--;
       ulong ticket_buy= ULONG_MAX ;
       ulong ticket_sell= ULONG_MAX ;
       for ( int i= 0 ;i< PositionsTotal ();i++) // ATTENTION! Here, specially began a detour with "0"
         if (m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
           {
             if (m_position.PositionType()== POSITION_TYPE_BUY && ticket_buy== ULONG_MAX )
               ticket_buy=m_position.Ticket();

             if (m_position.PositionType()== POSITION_TYPE_SELL && ticket_sell== ULONG_MAX )
               ticket_sell=m_position.Ticket();
           }
       if (ticket_buy!= ULONG_MAX && ticket_sell!= ULONG_MAX )
         m_trade.PositionCloseBy(ticket_buy,ticket_sell);
     }
   while (s> 1 );// цикл
   return ;
  }
 
EgorKim :

나는 그것에 대해 스스로 생각했다. 두 배열 의 코드를 공유할 수 있습니까 ?

아니요, 여러 가지 이유가 있습니다.

1. 나 자신은 카운터 클로징을 사용하지 않는다.

2. 미리 만들어진 코드가 없고, 구체적으로 작성하고 싶은 마음도 없습니다.

3. 어제 나는 그런 생각을 했다. 두 개라도. 그리고 오늘은 또 다른 내일이 될 것입니다. 따라서 현재 머릿속에 있는 것만 씁니다.

그리고 가장 큰 이유는 - 남을 돕는 것과 남의 일을 하는 것은 큰 차이라고 생각합니다.

내가 도울 수 있습니다. 그러나 나는 당신을 도울 수 없을 것입니다. 나는 표준 라이브러리 를 거의 사용하지 않으며, 당신의 코드를 이해하기 위해서는 SB를 이해해야 합니다.

 

여보세요

차트의 특정 범위 또는 영역에서만 결과를 차트에 표시하는 인디케이터 또는 인디케이터를 생성 할 수 있는 기능의 예를 알려주세요!

예를 들어, 터미널 시간 1:00에서 2:35까지이며 이 선택은 차트에서 직접 마우스로 이루어져야 합니다.


특히 선택한 범위에서 매수 또는 매도 양초의 수를 계산해야 합니다.

 
Milhail Novgorodcev :

여보세요

차트의 특정 범위 또는 영역에서만 결과를 차트에 표시하는 인디케이터 또는 인디케이터를 생성 할 수 있는 기능의 예를 알려주세요!

예를 들어, 터미널 시간 1:00에서 2:35까지이며 이 선택은 차트에서 직접 마우스로 이루어져야 합니다.


특히 선택한 범위에서 매수 또는 매도 양초의 수를 계산해야 합니다.

가장 먼저 떠오른 것:

  • 스크립트, 두 개의 입력 매개변수 - 시작 시간 및 종료 시간
  • 그림은 수동으로 그려집니다 - 직사각형, 입력 매개변수에 직사각형 이름으로 스크립트가 실행됩니다.
  • 주어진 이름의 직사각형 생성을 모니터링하는 전문가 또는 표시기 ...

 
Milhail Novgorodcev :

여보세요

차트의 특정 범위 또는 영역에서만 결과를 차트에 표시하는 인디케이터 또는 인디케이터를 생성 할 수 있는 기능의 예를 알려주세요!

예를 들어, 터미널 시간 1:00에서 2:35까지이며 이 선택은 차트에서 직접 마우스로 이루어져야 합니다.


특히 선택한 범위에서 매수 또는 매도 양초의 수를 계산해야 합니다.

그리고 무엇이 문제입니까?

OnChartEvent() 에서는 두 지점(현재 시간이 아니라 막대가 클릭된 시간)에서 두 개의 변수 를 차례로 마우스 클릭 시간으로 할당하고 두 변수가 모두 0이 아닌 경우 계산을 합니다. 이 범위에서. 수신된 값의 출력 후에 이 변수는 0으로 재설정되고 다음 마우스 클릭을 기다립니다.

첫 번째 클릭이 실수로 이루어지면 그것을 취소하는 방법이 하나뿐입니다. 하지만 문서를 주의 깊게 읽으면 뭔가를 생각해낼 수 있다고 생각합니다. 예를 들어, 키를 누르거나 마우스 휠을 스크롤...

 

도와주세요, 제발!

나는 이미 역사에 대한 스크린 샷을 찍기 위해 스크립트를 편집하는 데 지쳤습니다. 스크립트는 매일 오전 8시로 스크롤하여 스크린샷을 찍어야 합니다.

스크립트가 제대로 작동하지 않습니다.

 //+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   ChartSetInteger ( 0 , CHART_SHIFT , false );
   ChartSetInteger ( 0 , CHART_AUTOSCROLL , false );
   int _bars= Bars ( Symbol (), 0 );
 
   for ( int i= 0 ; i<_bars; i++)
     {
       MqlDateTime time_now;
       //datetime candle_time=iTime(NULL,_period,0);
       TimeToStruct ( iTime ( NULL , _Period ,i),time_now);   // change time to struct

       if (time_now.hour== 8 && time_now.min== 0 )
        {
         //--- прокрутим на 10 баров вправо от начала истории 
         ChartNavigate ( 0 , CHART_BEGIN ,i);
         Sleep ( 5000 );
         //--- получим номер самого первого видимого на графике бара (нумерация как в таймсерии) 
         long first_bar= ChartGetInteger ( 0 , CHART_FIRST_VISIBLE_BAR , 0 );
         Print (first_bar);
         string name=_Sumbol_N( string ( Symbol ()))+ "_" + Symbol ()+ "_" +TFMigrate( Period ())+ " " + string (time_now.year)+ "." + string (time_now.mon)+ "." + string (time_now.day)+ " " + string (time_now.hour)+ "." + string (time_now.min);

         ChartScreenShot ( 0 ,name+ " 2560_1600.PNG" , 2560 , 1600 , ALIGN_LEFT );
         //i=5;
        };
     };

//Print(iTime(NULL,_Period,0));

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string _Sumbol_N( string ft)
  {
   if (ft ==   "EURUSD" ) return ( "01" );
   if (ft ==   "GBPUSD" ) return ( "02" );

   return "" ;
  }
//+------------------------------------------------------------------+
string TFMigrate( int tf)
  {
   switch (tf)
     {
       case 0 : return ( "CURRENT" );
       case 1 : return ( "M1" );
       case 5 : return ( "M5" );
       case 15 : return ( "M15" );
       case 30 : return ( "M30" );
       case 60 : return ( "H1" );
       case 240 : return ( "H4" );
       case 1440 : return ( "D1" );
       case 10080 : return ( "W1" );
       case 43200 : return ( "MN1" );

     }
  }
//+------------------------------------------------------------------+
 
oleg360 :

도와주세요, 제발!

나는 이미 역사에 대한 스크린 샷을 찍기 위해 스크립트를 편집하는 데 지쳤습니다. 스크립트는 매일 오전 8시로 스크롤하여 스크린샷을 찍어야 합니다.

스크립트가 제대로 작동하지 않습니다.

지금까지 스크롤 기능이 오작동하고 있습니다(더 정확하게는 예측할 수 없이 작동함). 관리자는 이해합니다.

 
Vladimir Karputov :

지금까지 스크롤 기능이 오작동하고 있습니다(더 정확하게는 예측할 수 없이 작동함). 관리자는 이해합니다.

고맙습니다!

사유: