포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 662

 
글쎄, 누군가 이미 RSI에서 기성품 iMAOnArray 칠면조를 가지고 있습니까?
 
berezhnuy :
글쎄, 누군가 이미 RSI에서 기성품 iMAOnArray 칠면조를 가지고 있습니까?

이제 아무도 당신에게 "도움"이라고 응답하지 않은 이유를 이해합니다 ...
 
berezhnuy :
글쎄, 누군가 이미 RSI에서 기성품 iMAOnArray 칠면조를 가지고 있습니까?

코드베이스에 있으므로 검색하기만 하면 됩니다.
 
동지. 연습을 위해 가장 간단한 획득 표시를 코딩하기로 결정했습니다. 하지만 결국 차트의 시간대를 변경하고 천박한 시간대로 돌아가면 경고가 다시 작동하는 문제가 있었습니다. 막대당 한 번만 경고하는 옵션을 찾았지만 다시 TF를 전환하면 모든 것이 재설정됩니다.
 if ( Bars != ThisBarTrade ) {
   ThisBarTrade = Bars ;   // ensure only one trade opportunity per bar
   // Trade logic goes here
}
다음은 그래픽 서랍 없이 논리만 있는 코드 자체입니다. 어떻게 고치는 지?
   if (engulfAlerter && Open[ 2 ]>Close[ 2 ] && Open[ 1 ]<Close[ 1 ] && Close[ 1 ]>Open[ 2 ])
      {
         Alert ( "Bullish Engulf" );
      }
   if (engulfAlerter && Open[ 2 ]<Close[ 2 ] && Open[ 1 ]>Close[ 1 ] && Close[ 1 ]<Open[ 2 ])
      {
         Alert ( "Bearish Engulf" );
      }
추신: 터키는 다른 TF로 전환하는 동안 초기화 해제 중에 조건부 "ThisBarTrade"를 재설정합니다.
 

티켓을 따로 사고 파는 방법을 알려주세요.

ticket=OrderSend("EURUSD",OP_SELL,SellLot,Bid,3,0,0,"",MAGICMA,0,Red);


또 다른

{

OrderSelect (티켓-3,SELECT_BY_POS,MODE_TRADES);

OrderClose(티켓-3,SellLot,Ask,3,Red);


}

ticket-3 특히 TC 거래는 여러 주문에 대한 평균 가격으로 수행됩니다) 그러나 판매 티켓에서 구매 티켓을 분리하려면 어떻게 해야 합니까? 3바이 전에 열린 주문을 받을 수 있도록) 또한 판매합니다.

 

안녕하세요, 친구!) 다음과 같은 문제가 있습니다.

시작할 때 템플릿(나에게 필요한 지표와 그래픽 개체 포함)을 열고 데이터와 거래를 분석하는 프로그램을 작성했습니다. 차트에서 실행하면 모든 것이 잘 작동합니다. 테스터에서 실행하면 렌더링할 때만 작동합니다. 내가 알기로는 템플릿은 시각적으로 열린 차트 에만 로드할 수 있습니다 ... 따라서 일반 테스트 모드에서는 템플릿을 로드하지 않고 차트에 따라 단순히 실행되기 때문에 프로그램이 작동하지 않습니다 ... 그리고 최적화는 어떻습니까? 나는 많은 매개 변수를 가지고 있으며 시각화로 각 옵션을 수동으로 실행하는 것이 어떻게 든 합리적이지 않습니다.

help pliz)) 최적화 및 템플릿 문제를 어떻게 해결할 수 있습니까?

 
evillive :

자콧))))


나만 MQL로 작성하지 않았지만 공식적으로는 문제가 있습니다(:

이것이 어떻게 결정될 수 있었습니까?

값의 수가 매우 제한되어 있으므로 직접적인 무차별 대입으로 확인할 수 있습니다.

 #property strict

/******************************************************************************/
void fun1( int const A) {
   Print ( "fun1()" );

   if (A == 0 || A == 1 ) {
     Print ( "fun1 do!" );
  }
}

/******************************************************************************/
void fun2( int const A) {
   Print ( "fun2()" );

   if (A != 2 ) {
     Print ( "fun2 do!" );
  }
}

/******************************************************************************/
void Гарантия_0_1_2( int const A) {
   switch (A) {
   case 0 :
   case 1 :
   case 2 :
    fun1(A);
    fun2(A);
     break ;
   default :
     Print ( "Не соблюдены условия (теоремы)" );
  }
}

/******************************************************************************/
void OnStart () {
   for ( int A = 0 , limit = 4 ; A < limit; A++) {
     Print ( "Проверяем для A = " , A);
    Гарантия_0_1_2(A);
  }
}

우리는 다음을 얻습니다:

 22 : 52 : 38 Script 3 EURUSDm,H1: loaded successfully
22 : 52 : 38 3 EURUSDm,H1: initialized
22 : 52 : 38 3 EURUSDm,H1: Проверяем для A = 0
22 : 52 : 38 3 EURUSDm,H1: fun1()
22 : 52 : 38 3 EURUSDm,H1: fun1 do !
22 : 52 : 38 3 EURUSDm,H1: fun2()
22 : 52 : 38 3 EURUSDm,H1: fun2 do !
22 : 52 : 38 3 EURUSDm,H1: Проверяем для A = 1
22 : 52 : 38 3 EURUSDm,H1: fun1()
22 : 52 : 38 3 EURUSDm,H1: fun1 do !
22 : 52 : 38 3 EURUSDm,H1: fun2()
22 : 52 : 38 3 EURUSDm,H1: fun2 do !
22 : 52 : 38 3 EURUSDm,H1: Проверяем для A = 2
22 : 52 : 38 3 EURUSDm,H1: fun1()
22 : 52 : 38 3 EURUSDm,H1: fun2()
22 : 52 : 38 3 EURUSDm,H1: Проверяем для A = 3
22 : 52 : 38 3 EURUSDm,H1: Не соблюдены условия (теоремы)
22 : 52 : 38 3 EURUSDm,H1: uninit reason 0
22 : 52 : 38 Script 3 EURUSDm,H1: removed

그것들은 동등하다는 것이 밝혀졌습니다. 3개가 아니라 300만 개의 값이 있는 경우에도 기계가 기능에서 결과를 반환하고 비교하도록 검사하도록 지시할 수 있습니다. 전체 범위에 대해 불일치가 없으면 동일합니다.

함수 호출과 같이 변수 대신 표현식을 사용하면 짧은 논리 표현식 평가 체계로 인해 동등성이 "자격을 갖춘 동등성"이 됩니다.

 

안녕하세요!

다른 지표를 기반으로 지표를 만들었습니다.

첫 번째 버퍼는 예상대로 계산됩니다.

두 번째는 그렇지 않습니다. "line1 > 0" 이후에 각 막대에서 카운트다운이 시작되어야 합니다.

원칙적으로 나는 다음과 같이 고문에서 무엇을 했습니까?

 if (line1 > 0 && time == 0 ){time=Time[i+ 0 ];} //сработало предварительное условие входа, записываем время
if (time > 0 )shift=iBarShift( Symbol (), Period (),i+time); //находим индекс бара

그리고 이미 "shift >= shet" 이후에 그리기 조건이 트리거됩니다.

"shet" 변수의 외부 매개변수를 변경하고 표시기는 변경하지 않습니다.

무엇이 문제가 될 수 있습니까?

표시기 코드:

 #property indicator_buffers 2
#property indicator_color1 Lime 
#property indicator_color2 Red
//--- input parameters
extern int        Period_MA_r= 14 ;
extern int        r2          = 7 ;
extern int        Period_MA_1= 46 ;
extern int        p2          = 19 ;
extern int        shet= 7 ;
extern int        s        = 0 ;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexBuffer ( 0 ,ExtMapBuffer1);
   SetIndexStyle( 0 , DRAW_ARROW );
   SetIndexArrow( 0 , 119 );
   SetIndexEmptyValue( 0 , 0.0 );
   SetIndexBuffer ( 1 ,ExtMapBuffer2);
   SetIndexStyle( 1 , DRAW_ARROW );
   SetIndexArrow( 1 , 119 );
   SetIndexEmptyValue( 1 , 0.0 );
   IndicatorDigits( Digits + 1 );
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted(),
   i,limit1,shift;
   limit1= Bars -counted_bars- 1 ;
   double line1,signal_line;
   static datetime time;
   for (i=limit1;i>= 0 ;i--) 
   {
   line1= 0 ;
   signal_line= 0 ;
   line1= iCustom ( NULL , 0 , "indikator1" ,Period_MA_r,r2, 1 ,i+ 0 );
   signal_line= iCustom ( NULL , 0 , "indikator2" ,Period_MA_1,p2, 0 ,i+ 0 );
   
   if (line1 > 0 && time == 0 ){time=Time[i+ 0 ];} //сработало предварительное условие входа, записываем время
   if (time > 0 )shift=iBarShift( Symbol (), Period (),i+time); //находим индекс бара
   if (line1 == 0 ){time= 0 ;} //если индикатор равен нолю, то время сбрасывается на ноль
   if (line1 > 0 && signal_line < s){ExtMapBuffer1[i]=Low[i]- 95 * Point ;}
   if (line1 > 0 && shift >= shet && signal_line < s){ExtMapBuffer2[i]=High[i]+ 95 * Point ;}
   }
   return ( 0 );
  }
//+------------------------------------------------------------------+
 
Forexman77 :

안녕하세요!

다른 지표를 기반으로 지표를 만들었습니다.

첫 번째 버퍼는 예상대로 계산됩니다.

두 번째는 그렇지 않습니다. "line1 > 0" 이후에 각 막대에서 카운트다운이 시작되어야 합니다.

원칙적으로 나는 다음과 같이 고문에서 무엇을 했습니까?

그리고 이미 "shift >= shet" 이후에 그리기 조건이 트리거됩니다.

"shet" 변수의 외부 매개변수를 변경하고 표시기는 변경하지 않습니다.

무엇이 문제가 될 수 있습니까?

표시기 코드:


0을 추가하면 오해가 있지만 다음을 시도하십시오.

 //+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   int counted_bars=IndicatorCounted(),
   i,limit1,shift = 0 ;
   limit1= Bars -counted_bars- 1 ;
   double line1,signal_line;
   static datetime time;
   for (i=limit1;i>= 0 ;i--) 
   {
       line1= 0 .;
       signal_line= 0 .;
       line1 = iCustom ( _Symbol , _Period , "indikator1" ,Period_MA_r,r2, 1 , i+ 0 );       // Не понятно - зачем прибавлять 0 ???
       signal_line = iCustom ( _Symbol , _Period , "indikator2" ,Period_MA_1,p2, 0 ,i+ 0 );   // Не понятно - зачем прибавлять 0 ???
   
       if (line1 > 0 . && time == 0 ) {time = Time[i+ 0 ];}                   //сработало предварительное условие входа, записываем время [тоже + 0]
       if (time > 0 .) shift= i + iBarShift ( _Symbol , _Period , time);       //находим индекс бара
       if (line1 == 0 .) {time = 0 ;}                                       //если индикатор равен нолю, то время сбрасывается на ноль
       if (line1 > 0 .)
       {
           if (signal_line < s)
           {
               ExtMapBuffer1[i] = Low[i] - 95 .* Point ;
               if (shift >= shet) {ExtMapBuffer2[i] = High[i]+ 95 .* Point ;}
           }
       }
   }
   return ( 0 );
}
//+------------------------------------------------------------------+
 

안녕하세요.

터미널에서 주문 라인을 더블 클릭하면 수정 창이 열립니다.

그러나 한 주문의 개시 가격과 다른 주문의 이익실현이 라인에 있으면 마지막으로 수정된 주문이 열립니다.

친애하는 프로 여러분, 인디케이터에서 필요한 주문을 클릭하여 주문 수정 창을 호출하는 기능이 mql4에 있습니까?