[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 831

 

안녕하세요 전문가 여러분.

이 문제에 대해 조언해 주십시오.

MQL4에 i번째 막대에서 j번째 막대까지의 간격에서 가격이 취한 최대/최소 값을 결정할 수 있는 표준 기능이 있습니까?

미리 감사드립니다.

 
Morzh09 :

좋은 오후, 친애하는 전문가들.

이 문제에 대해 조언해 주십시오.

MQL4에 i번째 막대에서 j번째 막대까지의 간격에서 가격이 취한 최대/최소 값을 결정할 수 있는 표준 기능이 있습니까?

미리 감사드립니다.

https://docs.mql4.com/ru/series/iHighest

https://docs.mql4.com/ru/series/iLowest

 
그리고 그렇게 하면
 void CheckForOpen() { 

//

s= 0 ;
     t_up=icustom(.........................);
     if (t_up== 1 )
        {
          s= 1 ;
          for (k= 0 ;k< 10 ;k++)             //количество раз проверки
            {
               sleep( 30000 );             //
             //думаю что в этом месте рефреш ????????
               if (t_up== 1 )
                    s= 1 ;
                else
                    {
                       s= 0 ;
                       break ;
                    }
             }
           if (s== 1 )op= "buy" ;
        }
      else
        {
          s= 0 ;
          break ;
        }
return ;
}
새로 고침을 삽입해야 하는 위치. 그리고 문제는 Sleepa 사용의 결과가 무엇입니까?
 
gince :
그리고 이렇게 하면 새로 고침을 삽입해야 하는 위치에 있습니다. 그리고 문제는 Sleepa 사용의 결과가 무엇입니까?

테스터에서 절전 모드가 작동하지 않습니다 .

왜 모든 틱을 확인하는 것이 적합하지 않습니까? 인덕터가 "무거워"입니까?

 

안녕하세요, 친애하는 전문가 여러분! MOL4에서 프로그래밍을 배우고 있습니다. "매도 주문보다 매수 주문이 더 많은 경우"라는 조건을 올바르게 작성하는 방법을 알 수 없습니다. 도와주세요.

 
fanat :

안녕하세요, 친애하는 전문가 여러분! MOL4에서 프로그래밍을 배우고 있습니다. "매도 주문보다 매수 주문이 더 많은 경우"라는 조건을 올바르게 작성하는 방법을 알 수 없습니다. 도와주세요.

열려 있는? 닫은? 시장? 연기?
차이가 있습니다.
 
fanat :

안녕하세요, 친애하는 전문가 여러분! MOL4에서 프로그래밍을 배우고 있습니다. "매도 주문보다 매수 주문이 더 많은 경우"라는 조건을 올바르게 작성하는 방법을 알 수 없습니다. 도와주세요.


1. 첫 번째 유형의 주문 수를 계산합니다.

2. 두 번째 유형 의 주문 수를 계산합니다.

3. 결과 비교

 extern int Magic= 20100906 ;
//+------------------------------------------------------------------+
//|     Массив для хранения количества открытых позиций каждого типа |
//|                                Copyright © 2010, Victor Nicolaev |
//|                                            e-mail: vinin@mail.ru |
//+------------------------------------------------------------------+
//| int Order_Count[6];                                              |
//+------------------------------------------------------------------+
int Order_Count[ 6 ];

//+------------------------------------------------------------------+
//|       Функция возвращаюшая количество ордеров определенного типа |
//|                                   исхода из заданных ограничений |
//|                                Copyright © 2010, Victor Nicolaev |
//|                                            e-mail: vinin@mail.ru |
//+------------------------------------------------------------------+
//| int Order_Count_Calculate(string lSymbol, int lMagic, int lOP=-1)|
//+------------------------------------------------------------------+
int Order_Count_Calculate( string lSymbol, int lMagic, int lOP=- 1 ){
   ArrayInitialize (Order_Count, 0 );
   for ( int i = OrdersTotal () - 1 ;  i >= 0 ;  i--) {
       if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) continue ;
       if (OrderSymbol() != lSymbol)                   continue ;
       if (OrderMagicNumber() != lMagic)                 continue ;
      Order_Count[OrderType()]++;
   }
   if (lOP!=- 1 ) return (Order_Count[lOP]);
   return ( 0 );
}

int start(){
   Order_Count_Calculate( Symbol (), Magic);
   if (Order_Count[OP_BUY]>Order_Count[OP_SELL])
   // Ваши действия
   return ( 0 );
}

 

여보세요!!!

화살표가 있는 간단한 표시기. 어제도 이러고 저러고....안되요... 오늘도 생각해보니 신선한 마음으로 아직도 오류가 안보인다.....

글쎄, 그는 아무것도 그리지 않는다 !!!!! 어디가 잘못되었는지 알려주세요....

 //+------------------------------------------------------------------+
//|                                         Indicator_OsMA_Stoch.mq4 |
//|                                                                  |
//|           огромное cпасибо за помощь Vinin и granit77            |
//+------------------------------------------------------------------+
#property copyright ""
#property link       ""

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
//---- input parameters
extern int        Fast_EMA= 8 ;       // пар-ры OsMA
extern int        Slow_EMA= 34 ;     // пар-ры OsMA
extern int        Signal_EMA= 1 ;     // пар-ры OsMA
extern double     N = 0.0002 ;       // контр. линия
extern int      KPeriod     = 21 ;   // Период (количество баров) для вычисления линии %K.
extern int      DPeriod     = 5 ;   // Период усреднения для вычисления линии %D.
extern int      Slowing     = 8 ;   // Значение замедления.
extern int        A = 20 ;           // расстояние от бара
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double OsMA[];
double Stoch[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorBuffers( 4 );
   SetIndexStyle( 0 , DRAW_ARROW , EMPTY, 1 );
   SetIndexArrow( 0 , 234 );
   SetIndexBuffer ( 0 ,ExtMapBuffer1);
   SetIndexEmptyValue( 0 , 0.0 );
   SetIndexStyle( 1 , DRAW_ARROW , EMPTY, 1 );
   SetIndexArrow( 1 , 233 );
   SetIndexBuffer ( 1 ,ExtMapBuffer2);
   SetIndexEmptyValue( 1 , 0.0 );
   SetIndexBuffer ( 2 ,OsMA);
   SetIndexBuffer ( 3 ,Stoch);
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int     counted_bars=IndicatorCounted();
   int limit = Bars -counted_bars- 1 ;
   
   for ( int i = limit; i>= 0 ; i--) {
      ExtMapBuffer2[i] = EMPTY;
      ExtMapBuffer1[i] = EMPTY;
      OsMA[i]= iOsMA ( NULL , 0 ,Fast_EMA,Slow_EMA,Signal_EMA, PRICE_OPEN ,i);
      Stoch[i]= iStochastic ( NULL , 0 ,KPeriod,DPeriod,Slowing, 1 , 0 ,MODE_MAIN,i);
       if (true                &&
        (OsMA[i]>OsMA[i+ 1 ])  ||
        (OsMA[i]<OsMA[i+ 1 ])  &&
        (Stoch[i+ 1 ]>Stoch[i])||
        (Stoch[i+ 1 ]<Stoch[i])
        )
      {
       if ((OsMA[i]<-N)&&(Stoch[i]< 20 )) ExtMapBuffer2[i] = Low[i] -A* Point ;
       if ((OsMA[i]> N)&&(Stoch[i]> 80 )) ExtMapBuffer1[i] = High[i]+A* Point ; 
      }
   }
   return ( 0 );
}
//+------------------------------------------------------------------+ 
 
도와주세요, 제발. 보류 중인 주문 이 여러 개 있습니다(예: 10개). 그 중 하나가 열리고 트리거됩니다(테이크 또는 손실에 관계 없이). 다음 보류 주문은 다음 틱에 배치되어야 합니다. 티켓이나 매직으로 주문을 식별하기 어렵습니다(작업 가능한 포지션의 수는 제한이 없습니다). 따라서 지연을 설정할 시간을 선택하는 가장 쉬운 방법은 이미 닫힌 위치의 변수(무슨 상관 없이)의 마지막 값과 끝에서 두 번째 값을 비교하는 것이라고 결정했습니다. 고맙습니다!
 
dimon74 :
도와주세요, 제발. 보류 중인 주문이 여러 개 있습니다(예: 10개). 그 중 하나가 열리고 트리거됩니다(테이크 또는 손실에 관계 없이). 다음 보류 주문은 다음 틱에 배치되어야 합니다. 티켓이나 매직으로 주문을 식별하기 어렵습니다(작업 가능한 포지션의 수는 제한이 없습니다). 따라서 지연을 설정할 시간을 선택하는 가장 쉬운 방법은 이미 닫힌 위치의 변수(무슨 상관 없이)의 마지막 값과 끝에서 두 번째 값을 비교하는 것이라고 결정했습니다. 고맙습니다!

다음에는 무엇이 바뀔까요?
사유: