[아카이브!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 2. - 페이지 476

 
필요한 경우 jma를 게시합니다. 지표 이름을 JMA[i]로 변경
파일:
jmaxvib.mq4  11 kb
 
for (i = 0 ; i < limit; i++)
     {
       if (dBuffer[i+ 1 ]> 80 && dBuffer[i]< 80 ) DN[i] = 70 ; Fd=- 1 ; Fu= 0 ;               //пересекла 80   --> 1
       if (dBuffer[i+ 1 ]< 20 && dBuffer[i]> 20 ) UP[i] = 30 ; Fu= 1 ;  Fd= 0 ;               //пересекла 20   --> 1
       
       if (dBuffer[i+ 1 ]>rsi[i+ 1 ] && dBuffer[i]<rsi[i]) dn[i] = 60 ; fd=- 1 ; fu= 0 ;     //пересечение двух  -->  2
       if (dBuffer[i+ 1 ]<rsi[i+ 1 ] && dBuffer[i]>rsi[i]) up[i] = 40 ; fu= 1 ;  fd= 0 ;     //пересечение двух     -->  2
       
       if (Fd==- 1 && fd==- 1 ) dot[i]= 90 ; Fd= 0 ; Fu= 0 ; fd= 0 ; fu= 0 ;
       if (Fu== 1 && fu== 1 )   dot[i]= 10 ; Fd= 0 ; Fu= 0 ; fd= 0 ; fu= 0 ;

현재 시간 부터 과거까지 막대를 열거하고 있습니다.

배열의 검색은 마지막 항목으로 이동합니다.

따라서 모든 변수는 마지막 경우(이 경우 가장 오래된 경우)에 대한 값을 제공합니다.

따라서 과거에서 현재로의 탐색이 필요하다.

 for (i = limit; i >= 0 ; i--)
그리고 변수
 int fd, fu,Fd, Fu;

최상위 수준, 즉 시작 및 초기화 전에 선언합니다.

그리고 시작에서 재설정할 필요가 없습니다. 제로화한 곳에서만 제로화를 둡니다.

 if (Fd==- 1 && fd==- 1 ) dot[i]= 90 ; Fd= 0 ; Fu= 0 ; fd= 0 ; fu= 0 ;
       if (Fu== 1 && fu== 1 )   dot[i]= 10 ; Fd= 0 ; Fu= 0 ; fd= 0 ; fu= 0 ;
 
rlx 감사합니다. 모든 것이 작동했습니다.
 
PapaYozh :


첫째, OrderSend()는 두 번 발생하고 두 번 모두 지정한 조건을 벗어납니다.

둘째, 정규화되지 않은 가격이 OrderSend()에 전달됩니다.

셋째, OrderSend() 함수에서 반환된 결과를 분석하고, 주문을 열거나 수정하거나 닫을 때 오류가 발생한 경우 로그에 메시지를 작성하고 로그를 분석합니다.


누군가 Expert Advisor 실험 1의 수정된 버전을 게시할 수 있습니까?
 

안녕하세요!

답변 감사합니다 - 많은 도움이 되었습니다 :)

얘들아! EA는 두 이동 평균이 교차 할 때 거래를 합니다. 그리고 그들이 다시 교차하면 그는 거래를 닫고 반대 방향으로 열어 이익을 잃습니다.

1. 선이 막 수렴하기 시작할 때 거래를 성사시킨다는 조건으로 글을 쓰는 방법은? 그리고 그는 왜 같은 방향으로 새로운 거래를 시작하지 않고 반대 방향으로 교차하기를 기다리겠습니까?

2. 또는 er si ai가 위에서 아래로 레벨 80을 교차하여 매수하고 레벨 20을 교차하여 매도할 때 거래를 마감합니다. 그리고 거래를 성사할 때 조건이 충족되면 같은 방향으로 거래를 열지 않고 반대 방향으로 교차하기를 기다렸다고요?

포럼에 비슷한 주제가 있으면 링크를 제공하십시오!

미리 감사드립니다!

즐거운 거래!

유익한 거래!

 

안녕하세요!

이것이 무엇을 의미하는지 알려주세요:

주문 구매 ...... 실패 [거래 시간 초과]

구체적으로 이 시간 초과는 무엇입니까?

 
smartemiy :

안녕하세요!

답변 감사합니다 - 많은 도움이 되었습니다 :)

얘들아! EA는 두 이동 평균이 교차할 때 거래를 합니다. 그리고 그들이 다시 교차하면 그는 거래를 닫고 반대 방향으로 열어 이익을 잃습니다.

1. 선이 막 수렴하기 시작할 때 거래를 성사시킨다는 조건으로 글을 쓰는 방법은? 그리고 그는 왜 같은 방향으로 새로운 거래를 시작하지 않고 반대 방향으로 교차하기를 기다리겠습니까?

2. 또는 er si ai가 위에서 아래로 레벨 80을 교차하여 매수하고 레벨 20을 교차하여 매도할 때 거래를 마감합니다. 그리고 거래를 성사할 때 조건이 충족되면 같은 방향으로 거래를 열지 않고 반대 방향으로 교차하기를 기다렸다고요?

포럼에 비슷한 주제가 있으면 링크를 제공하십시오!

미리 감사드립니다!

즐거운 거래!

유익한 거래!


링크를 따라 https://www.mql5.com/en/code 유사한 창고
 
또 다른 질문: 악기 1핍의 가치를 추출하는 데 사용할 수 있는 함수는 무엇입니까?
 
PapaYozh :


첫째, OrderSend()는 두 번 발생하고 두 번 모두 지정한 조건을 벗어납니다.

지루하고 싶지 않지만...

 if ( OrdersTotal ()> 0 &&tral> 0 &&OrderMagicNumber()==MAGIC&&(OrderType()==OP_SELL||OrderType()==OP_BUY)){
     if ( ObjectFind (NamePrice)==- 1 )
      {
         ObjectCreate (NamePrice, OBJ_HLINE , 0 , 0 ,Ask);
        ObjectSet(NamePrice, OBJPROP_COLOR ,LineColor);
      }
       double n= ObjectGet( NamePrice, OBJPROP_PRICE1); 
       double p1= ObjectGet( NamePrice1, OBJPROP_PRICE1);
       double p2= ObjectGet( NamePrice2, OBJPROP_PRICE1);
//....................................................................... 
       double d= AccountEquity()-AccountBalance();                 
       if ( ObjectFind (NamePrice1)==- 1 &&d> 0 )
      {       
         ObjectCreate (NamePrice1, OBJ_HLINE , 0 , 0 ,n+d* Point * 10 );
        ObjectSet(NamePrice1, OBJPROP_COLOR ,LineColor1);
      }
       if (n+d* Point * 10 >p1)ObjectSet(NamePrice1,OBJPROP_PRICE1,n+d* Point * 10 );
       if ( ObjectFind (NamePrice2)==- 1 &&n+d* Point * 10 <p1)
      {       
         ObjectCreate (NamePrice2, OBJ_HLINE , 0 , 0 ,n+d* Point * 10 );
        ObjectSet(NamePrice2, OBJPROP_COLOR ,LineColor2);
      } 
       if (p2!=n+d* Point * 10 )ObjectSet(NamePrice2,OBJPROP_PRICE1,n+d* Point * 10 );  
       if (nb+ns== 2 &&tral< 20 &&p1-p2>=(p1-n)/tral&&p2>n&&p2-n>dohod* Point / 10 )CloseALL(); 
       if (nb+ns== 2 &&tral> 20 &&p1-p2>=tral* Point &&p2>n)CloseALL();  
      }
//..........................................................................
     if (ob== 0 ||OrderOpenTime()<iTime( Symbol (),TF, 0 ))
       { 
     
       if ( R== 1 &&zb== 0 &&C1>O1&&iVolume( Symbol (),TF, 0 )< 2 )
         {
         if (ob== 0 ||OrderOpenTime()<iTime( Symbol (),TF, 0 ))
         {
         OrderSend ( Symbol (),OP_BUYSTOP,Lots,Ask+dist* Point , 3 , 0 , 0 , "ko" ,MAGIC, TimeCurrent ()+ 60 *experation, Green );
         }
         }
      
      }
     if (os== 0 ||OrderOpenTime()<iTime( Symbol (),TF, 0 ))
        {      
       if (R== 1 &&zs== 0 &&C1<O1&&iVolume( Symbol (),TF, 0 )< 2 )
        {        
         if (os== 0 ||OrderOpenTime()<iTime( Symbol (),TF, 0 ))
         {
         OrderSend ( Symbol (),OP_SELLSTOP,Lots,Bid-dist* Point , 3 , 0 , 0 , "ko" ,MAGIC, TimeCurrent ()+ 60 *experation, Red );
         }
         }
       return ( 0 );
     }
   

   
  }

OrderTotal()이 0인 경우 주문이 어떻게 열릴지 설명하십시오.

고맙습니다.

 

어드바이저가 시간당 한 번만 거래할 수 있도록 어드바이저에 어떤 코드를 입력해야 하는지 알려주세요

예를 들어, 고문이 일하고 주문이 열렸습니다(더 이상 관심이 없음). 시간 단위의 현재 표시줄에서 주문이 더 이상 열리지 않아야 합니다.

모든 것이 다음과 같이 보입니다.

정수 hh;
int 현재 시간;
CurrentHour=TimeHour(TimeCurrent());
if (CurrentHour!=hh)
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point);
hh=TimeHour(TimeCurrent());
}

하지만 수많은 주문 이 열려 있습니다.