[아카이브!] 어드바이저를 무료로 써드립니다 - 페이지 11

 
skylord писал(а) >>

안녕하세요.

최근에 MQL을 배우기 시작했는데 Expert Advisor를 쓰려고 합니다...

Expert Advisor는 sidus v.2 지표를 기반으로 하며, 새로운 바가 탄생할 때, 즉 첫 번째 틱에 바가 있는지 확인하는 경우에만 Expert Advisor가 지시하는 방향으로 포지션을 열어야 한다. 이전 막대의 신호와 그 중 하나 주문 - 고정 정류장 및 테이크. 인디케이터 파일을 첨부합니다...

나는이 신호를 얻을 수없는 것 같습니다 :(

도와주시거나 방법을 알려주세요...

Sidus 지표에 대한 전문가 고문

아마도 이것이 도움이 될 것입니다 또는 검색이 도움이 될 것입니다!

또는 두 번째 바람!

 

vvava 감사합니다. 확실히 좋긴 한데 인디케이터와 달리 왼쪽 신호를 많이 건너뛰고 많이 만들어서 더 이상 필요하지 않습니다(

스레드가 누구인지 알려주십시오 . 조언자 에게 이전 막대의 표시기 버퍼 상태를 어떻게 요청할 수 있습니까? 다음과 같이 버퍼를 채우는 경우:

if (sigCurrent==1 && sigPrevious==2)
{
ExtMapBuffer4[i-1] = 높음[i-1]-5*포인트;
//ExtMapBuffer3[i] = 묻기;
항목=참;
entry_point=묻다;
}
그렇지 않으면 (sigCurrent==2 && sigPrevious==1)
{
ExtMapBuffer3[i-1] = 낮음[i-1]-5*포인트;
//ExtMapBuffer4[i] = 입찰가;
항목=참;
entry_point=입찰가;

}
어드바이저는 다음과 같은 조건이 일치해야 합니다.

더블 업;
두 배로 늘리다;
인트르;

Up=iCustom(NULL, 0,"sidus_v.2", 3, 1 );
Down=iCustom(NULL,0,"sidus_v.2", 2,1 );
//---- 판매 조건
if(아래== 낮음 )
{
res=OrderSend( Symbol() ,OP_SELL,Lots,Bid,3,0,0,"",MAGICMA,0,Red);
반품;
}
//---- 구매 조건
if(위== 높음 )
{
res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",MAGICMA,0,Blue);
반품;
}

그러나 이것은 사실이 아닙니다!!

이 경우 어떻게 해야 하는지 알려주세요...

 

안녕하세요.

나는 조용히 거래하고, 나는 4개의 칠면조를 사용합니다, 저항 지지선, 추세, ㅋ, ㅋ, ㅋ 점선 이 있는 역사상 동일한 화살표(교차)

파일:
zigandzag.mq4  16 kb
 
skylord писал(а) >>

안녕하세요.

최근에 MQL을 배우기 시작했는데 Expert Advisor를 쓰려고 합니다...

Expert Advisor는 sidus v.2 지표를 기반으로 하며, 새로운 바가 탄생할 때, 즉 첫 번째 틱에서 해당 바가 있는지 확인하는 경우에만 Expert Advisor가 지시하는 방향으로 포지션을 열어야 한다. 이전 막대의 신호와 그 중 하나 주문 - 고정 정류장 및 테이크. 인디케이터 파일을 첨부합니다...

나는이 신호를 얻을 수없는 것 같습니다 :(

도와주시거나 방법좀 알려주세요...

안녕하세요, 저는 방금 눈으로 코드를 살펴보았습니다. 죄송합니다. 저는 소름 끼치는 벙어리입니다. 물론 틀릴 수 있지만 표시기가 다시 그려지지 않습니까? 논리적으로 생각해보자

for(int i=0; i<limit; i++)
   {

0 막대에서 기록의 모든 막대까지 계산하려면 카운터를 증가시키십시오.

ExtMapBuffer1 [ i ] = iMA ( NULL , 0 , FastEMA , 0 , MODE_EMA , PRICE_CLOSE , i ) ;
     ExtMapBuffer2 [ i ] = iMA ( NULL , 0 , SlowEMA , 0 , MODE_EMA , PRICE_CLOSE , i ) ;
     rsi_sig = iRSI ( NULL , 0 , RSIPeriod , PRICE_CLOSE , i ) ;

글쎄, 모든 것이 여기에서 분명하다

pipdiffCurrent=(ExtMapBuffer1[i]-ExtMapBuffer2[i]);

맥덕 셸

 if ( pipdiffCurrent > 0 & & rsi_sig > 50 ) 
     {
       sigCurrent = 1 ;    //Up
     }
     else if ( pipdiffCurrent < 0 & & rsi_sig < 50 )
     {
       sigCurrent = 2 ;    //Down

McDuck이 0보다 크고 RSI가 50보다 크면 sig는 1이고 작으면 2nd

모든 것이 옳다면

if (sigCurrent==1 && sigPrevious==2)
     {

그래서 여기에서 mcduck이 양수이고 RSI가 50보다 크고 mcduck이 음수이고 RSI가 50보다 작은 조건이 동시에 충족되는 경우 O_o를 이해하지 못했습니다. 조건은 아래에 작성되어 있기 때문에 코드

sigPrevious=sigCurrent;

그렇다면 우리는 그들을 동일시 할 수 있습니다 ...

그래, 그리고 미래를 훔치는 건 나쁜 형태야

ExtMapBuffer3[i-1]

아니요, 그런 식으로 작동하지 않습니다. 다음과 같이 바꾸거나 완전히 다시 실행합니다. 우리는 이미 논리를 알고 있습니다.

 #property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_width1 1
#property indicator_width2 1
//----
extern int        FastEMA = 14 ;
extern int        SlowEMA = 21 ;
extern int        RSIPeriod = 17 ;
//----
double BuyBuffer [ ] , SellBuffer [ ] ;
int pre_signal = 0 ;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init ( )
   {
     
//----
       SetIndexBuffer ( 0 , BuyBuffer ) ;
       SetIndexLabel ( 0 , "Buy" ) ;
       SetIndexStyle ( 0 , DRAW_ARROW , STYLE_SOLID , 1 ) ;
       SetIndexArrow ( 0 , 241 ) ;
//----
       SetIndexBuffer ( 1 , SellBuffer ) ;
       SetIndexLabel ( 1 , "Sell" ) ;
       SetIndexStyle ( 1 , DRAW_ARROW , STYLE_SOLID , 1 ) ;
       SetIndexArrow ( 1 , 242 ) ;
//----
       return ( 0 ) ;
   }

int deinit ( )
   {
      
   }

int start ( )
   {
  

       int counted_bars = IndicatorCounted ( ) ;

      
   int limit = Bars - 17 ;

   if ( counted_bars > 17 ) 
     { 
       limit = Bars - counted_bars ; 
     }

       for ( int i = limit ; i > = 0 ; i - - )
         {
             BuyBuffer [ i ] = EMPTY_VALUE ;
             SellBuffer [ i ] = EMPTY_VALUE ;       
             
                
                 double a = iMA ( NULL , 0 , FastEMA , 0 , MODE_EMA , PRICE_CLOSE , i + 1 ) ;
                 double s = iMA ( NULL , 0 , SlowEMA , 0 , MODE_EMA , PRICE_CLOSE , i + 1 ) ;
                 
                
                
                 double a1 = iMA ( NULL , 0 , FastEMA , 0 , MODE_EMA , PRICE_CLOSE , i ) ;
                 double s1 = iMA ( NULL , 0 , SlowEMA , 0 , MODE_EMA , PRICE_CLOSE , i ) ;
                 double d1 = iRSI ( NULL , 0 , RSIPeriod , PRICE_CLOSE , i ) - 50 ;
             //----
           if ( a < s & & a1 > s1 & & d1 > 0 )
               {
                    BuyBuffer [ i ] = Low [ i ] - iATR ( NULL , 0 , 14 , i ) ;
                    
               }
             if ( a > s & & a1 < s1 & & d1 < 0 )
               {
                    SellBuffer [ i ] = High [ i ] + iATR ( NULL , 0 , 14 , i ) ;          
                    
               }
        
      
         }
       return ( 0 ) ;
   }

그리고 이제 슬픈 그림이 나옵니다. 비교하십시오.

물론 내가 틀릴 수 있고 표시기가 다시 그리지 않지만 용서하고 종가가 아닌 시작 가격(특히 RSI)을 사용하면 도움이 될 것입니다. 그러면 신호가 막대에 정확히 나타납니다. 그것은 =(

 

관심을 가져 주셔서 감사합니다. vtoroe_dyxanie ))) 물론, 내 모든 관찰에 따르면 표시기를 작성하지 않았지만 판독 값을 다시 그리지 않습니다. 나는 이미 고정되었을 때 다음 막대의 첫 번째 눈금부터 사용합니다. 따라서 첫 번째 틱에서 고문에서 이전 막대에서 무슨 일이 일어났는지 알아야 합니까??? 그가 미래를 훔치는 이유는? 그는 주어진 틱에서 그러한 일치가 있으면 sigCurrent가 하나를 할당하고 sigPrevious 변수의 끝에서 동일한 sigCurrent를 할당합니다.

sigPrevious=sigCurrent;

그런 다음 다음 틱에서 sigCurrent가 이미 2이고 sigPrevious 변수가 자연스럽게 버퍼를 1로 채우는 경우:

if (sigCurrent==1 && sigPrevious==2)
  {
  ExtMapBuffer4[i-1] = High[i-1]-5*Point;
  //ExtMapBuffer3[i] = Ask;
  entry=true;
  entry_point=Ask;
  } 

그리고 이것의 브러시에 :

ExtMapBuffer3[i-1]

나 자신을 완전히 이해하지 못하고...

하지만 잘 작동하는 것 같습니다. 신호가 나타나는 막대에 화살표가 그려집니다!

그러나 -1을 제거하면 많은 놀라움이 있었습니다(



 
skylord >> :

관심을 가져 주셔서 감사합니다. vtoroe_dyxanie ))) 물론, 내 모든 관찰에 따르면 표시기를 작성하지 않았지만 판독 값을 다시 그리지 않습니다. 나는 이미 고정되었을 때 다음 막대의 첫 번째 눈금부터 사용합니다. 따라서 첫 번째 틱에서 고문에서 이전 막대에서 무슨 일이 일어났는지 알아야 합니까??? 그가 미래를 훔치는 이유는? 그는 주어진 틱에서 그러한 일치가 있으면 sigCurrent가 하나를 할당하고 sigPrevious 변수의 끝에서 동일한 sigCurrent를 할당합니다.

sigPrevious=sigCurrent;

그런 다음 다음 틱에서 sigCurrent가 이미 2이고 sigPrevious 변수가 자연스럽게 버퍼를 1로 채우는 경우:

if (sigCurrent==1 && sigPrevious==2)
  {
  ExtMapBuffer4[i-1] = High[i-1]-5*Point;
  //ExtMapBuffer3[i] = Ask;
  entry=true;
  entry_point=Ask;
  } 

그리고 이것의 브러시에 :

ExtMapBuffer3[i-1]

나 자신을 완전히 이해하지 못하고...

하지만 잘 작동하는 것 같습니다. 신호가 나타나는 막대에 화살표가 그려집니다!

그러나 나는 -1을 제거했고 많은 놀라움이있었습니다 (



그러나 또 다른 부작용이 있습니다. 때론 조건만 맞으면 신호를 주고 화살을 쏘지 않는다. 하지만 차트에 다시 던지면 모든 화살표가 제자리에 떨어집니다. 어쩌면 어떻게 든 차트에서 새로 "컴파일"하거나 버퍼를 새로 업데이트하도록 할 수 있습니다 ???

 
skylord писал(а) >>

그가 미래를 훔치는 이유는? 그는 주어진 틱에서 그러한 일치가 있으면 sigCurrent가 하나를 할당하고 sigPrevious 변수의 끝에서 동일한 sigCurrent를 할당합니다.

sigPrevious=sigCurrent;

그런 다음 다음 틱에서 sigCurrent가 이미 2이고 sigPrevious 변수가 자연스럽게 버퍼를 1로 채우는 경우:

if (sigCurrent==1 && sigPrevious==2)
{
ExtMapBuffer4[i-1] = High[i-1]-5*Point;
//ExtMapBuffer3[i] = Ask;
entry=true;
entry_point=Ask;
}



당신의 진실, 나는 부주의합니다 ...

정보: "이미 고정된 다음 막대의 첫 번째 틱부터 사용합니다. 따라서 첫 번째 틱에서 이전 막대에서 무슨 일이 있었는지 어드바이저에서 알아내야 합니다 ??? "정말 궁금합니다. 사용이 가능하다

이중 iCustom ( .... int 시프트)

전지적 참조는 말한다

옮기다 - 표시기 버퍼에서 받은 값의 인덱스(현재 막대를 기준으로 지정된 기간 전에 지정된 수만큼 이동).

흥미롭긴 하지만 적어둘 수 있습니다.

(i=0; i<limit;i++){

if (iCustom(NULL, 0,"sidus_v.2", 3, i+ 1 )<0 && iCustom(NULL, 0,"sidus_v.2", 3, i )>0)

....

포럼의 sooooo Smart 회원은 두 명의 멍청이로 전락하지 않을 것이므로 유용할 수 있기 때문에 스스로 기술을 향상시키기 위해 떠났습니다.

 
vtoroe_dyxanie писал(а) >>

당신의 진실, 나는 부주의합니다 ...

정보: "이미 고정된 다음 막대의 첫 번째 틱부터 사용합니다. 따라서 첫 번째 틱에서 이전 막대에서 무슨 일이 있었는지 어드바이저에서 알아내야 합니다 ??? "정말 궁금합니다. 사용이 가능하다

이중 iCustom ( .... int 시프트)

전지적 참조는 말한다

옮기다 - 표시기 버퍼에서 받은 값의 인덱스(현재 막대를 기준으로 지정된 기간 전에 지정된 수만큼 이동).

흥미롭긴 하지만 적어둘 수 있습니다.

(i=0; i<limit;i++){

if (iCustom(NULL, 0,"sidus_v.2", 3, 1 )<0 && iCustom(NULL, 0,"sidus_v.2", 3, 0 )>0)

....

포럼의 sooooo Smart 회원은 두 명의 멍청이로 전락하지 않을 것이므로 유용할 수 있기 때문에 스스로 기술을 향상시키기 위해 떠났습니다.

아니요 작동하지 않습니다 =(

젠장,하지만이 문제를 어떻게 해결합니까? 글쎄, 당신은 이미 지점을 올렸기 때문에 https://www.mql5.com/en/forum/117268 을 따를 것입니다 =)

 
vtoroe_dyxanie писал(а) >>

아니오, 작동하지 않습니다 =(

젠장,하지만이 문제를 어떻게 해결합니까? 글쎄, 당신은 이미 지점을 올렸기 때문에 '어드바이저로부터 방향을 찾는 방법' 을 따를 것입니다 =)

당신은 회사의 감시에 참여할 수 있습니다!?)

 
vtoroe_dyxanie писал(а) >>

아니오, 작동하지 않습니다 =(

젠장,하지만이 문제를 어떻게 해결합니까? 글쎄, 당신은 이미 지점을 올렸기 때문에 '어드바이저로부터 방향을 찾는 방법' 을 따를 것입니다 =)

여기요! 내가 당신에게 도움을 요청한 것을 기억하십니까? 어렵지 않다면 조언 좀 해주실 수 있으신가요? 당신이 저를 위해 한 일은 제가 방금 쓴 것입니다.

파일:
test1.mq4  6 kb