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

 

오 :-)

감사하다!

 

안녕하세요 감정사님들!

여기 고문이 있습니다. 프랙탈 위/아래 위치를 엽니다 . 프랙탈 상단에서 스톱을 5포인트 높게(구매하는 경우), 5포인트 낮게(판매하는 경우) 만드는 방법???

P_up0 = iCustom ( 0 , 0 , "Ценовой канал" , Chperiod , 0 , 0 ) ;
   P_down0 = iCustom ( 0 , 0 , "Ценовой канал" , Chperiod , 1 , 0 ) ;
   P_up1 = iCustom ( 0 , 0 , "Ценовой канал" , Chperiod , 0 , 1 ) ;
   P_down1 = iCustom ( 0 , 0 , "Ценовой канал" , Chperiod , 1 , 1 ) ;
   Up = iCustom ( 0 , 0 , "olyakish_fractals_02(для Skonti)" , 15 , 150 , "Процент для отсеивания по объему" , 110 , 1 , 3 ) ;
   Down = iCustom ( 0 , 0 , "olyakish_fractals_02(для Skonti)" , 15 , 150 , "Процент для отсеивания по объему" , 110 , 3 , 3 ) ;
//задали все данные 

   total = OrdersTotal ( ) ;
   if ( total < 1 ) 
     {
      // Проверка свободной маржи
      if ( AccountFreeMargin ( ) < ( 1000 * Lots ) )
        {
         Print ( "We have no money. Free Margin = " , AccountFreeMargin ( ) ) ;
         return ( 0 ) ;  
        }
      // Условие открытие позиции BUY
      if ( Up > Down )
        {
         Lots = GetSizeLot ( ) ;
         ticket = OrderSend ( Symbol ( ) , OP_BUY , Lots , Ask , 3 , 0 , 0 , "" , 16384 , 0 , Green ) ;
         if ( ticket > 0 )
           {
            if ( OrderSelect ( ticket , SELECT_BY_TICKET , MODE_TRADES ) ) Print ( "BUY order opened : " , OrderOpenPrice ( ) ) ;
           }
         else Print ( "Error opening BUY order : " , GetLastError ( ) ) ; 
         return ( 0 ) ; 
        }
      // Условие открытие позиции SELL
      if ( Up < Down )
        {
         Lots = GetSizeLot ( ) ;
         ticket = OrderSend ( Symbol ( ) , OP_SELL , Lots , Bid , 3 , 0 , 0 , "" , 16384 , 0 , Red ) ;
         if ( ticket > 0 )
           {
            if ( OrderSelect ( ticket , SELECT_BY_TICKET , MODE_TRADES ) ) Print ( "SELL order opened : " , OrderOpenPrice ( ) ) ;
           }
         else Print ( "Error opening SELL order : " , GetLastError ( ) ) ; 
         return ( 0 ) ; 
        }
      return ( 0 ) ;
     }
    
   for ( cnt = 0 ; cnt < total ; cnt + + )
     {
      OrderSelect ( cnt , SELECT_BY_POS , MODE_TRADES ) ;
      if ( OrderType ( ) < = OP_SELL & &   
         OrderSymbol ( ) = = Symbol ( ) )  
        {
         if ( OrderType ( ) = = OP_BUY )   // длинная позиция открыта
           {
            // условие закрытие длинной позиции
            if ( P_down1 > P_down0 | | Up < Down )
                {
                 OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , 3 , Violet ) ; 
                 return ( 0 ) ; 
                }
            if ( TrailingStop > 0 )  
              {                  
               if ( Bid - OrderOpenPrice ( ) > Point * TrailingStop )
                 {
                  if ( OrderStopLoss ( ) < Bid - Point * TrailingStop & & OrderStopLoss ( ) ! = OrderOpenPrice ( ) + X * Point )
                    {
                     OrderModify ( OrderTicket ( ) , OrderOpenPrice ( ) , OrderOpenPrice ( ) + X * Point , OrderTakeProfit ( ) , 0 , Green ) ;
                     return ( 0 ) ;
                    }
                 }
              }
           }
         else 
           {
            // условие закрытия короткой позиции
            if ( P_up1 < P_up0 | | Up > Down )
              {
               OrderClose ( OrderTicket ( ) , OrderLots ( ) , Ask , 3 , Violet ) ; 
               return ( 0 ) ; 
              }
            if ( TrailingStop > 0 )  
              {               
               if ( ( OrderOpenPrice ( ) - Ask ) > ( Point * TrailingStop ) )
                 {
                  if ( NormalizeDouble ( OrderStopLoss ( ) , Digits ) ! = NormalizeDouble ( OrderOpenPrice ( ) - X * Point , Digits ) )
                    {
                     OrderModify ( OrderTicket ( ) , OrderOpenPrice ( ) , OrderOpenPrice ( ) - X * Point , OrderTakeProfit ( ) , 0 , Red ) ;
                     return ( 0 ) ;
                    }
                 }
              }
           }
        }
     }
   return ( 0 ) ;
  }

여기서는 Price Channel을 사용했습니다.

 // условие закрытия короткой позиции
            if ( P_up1 < P_up0 | | Up > Down )
              {
               OrderClose ( OrderTicket ( ) , OrderLots ( ) , Ask , 3 , Violet ) ; 
               return ( 0 ) ; 
              }
그리고
 // условие закрытие длинной позиции
            if ( P_down1 > P_down0 | | Up < Down )
                {
                 OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , 3 , Violet ) ; 
                 return ( 0 ) ; 
                }

포지션이 열린 프랙탈의 L 또는 H를 지정하기가 어렵습니다!

이 정도??

 if ( NormalizeDouble ( MathAbs ( High [ i ] - 5 ) , Digits ) < Price )
 
어떤 악기의 가격이 5와 같습니까?
 if ( NormalizeDouble ( MathAbs ( High [ i ] - 5 ) , Digits ) < Price )

그래서 우리는 최하위 숫자의 가격을 곱합니다.

5*Point
 

여기서 내가 틀렸다. 고맙습니다.

위치가 열린 프랙탈 의 상단을 설정하는 방법????

 
우리는 실험을 통해 모든 문제를 해결합니다. 스크립트를 작성하고 실행하고,
- 우리는 표준 iFractals ()의 다음과 같은 차이점을 봅니다.
1. 프랙탈 인덱스 표시기는 Hi/Lo와 정확히 동일합니다.
2. 존재하지 않는 프랙탈 값 ==0
 int i ;
   double f ;
   for ( i = 0 ; i < 50 ; i + + ) { f = iFractals ( NULL , 0 , MODE_UPPER , i ) ; if ( f ! = 0 ) break ; }
 Alert(f,"  ",High[i]," i=",i);
추신: 우리는 이 주기에 의해 포지션에서 되돌아보고 있습니다. 포지션을 열 때, 기억하십시오.
datetime timeFractalOnOpenPos=Time[i]
 
어드바이저에 표시하는 방법을 모르겠습니다. 포지션을 여는 조건에서 이 프랙탈을 암기하십시오. 닫는 상태에서 어떻게 호출합니까?
 
호출한다는 것이 무엇을 의미하는지 명확하지 않습니다.
전역 프로그램 변수에서
- 위치의 여는 프랙탈의 막대의 시간을 기억하고, 막대의 시간까지 iBars ()를 통해 막대의 수를 압니다.
- 프랙탈의 가격을 기억하십시오.
- 위/아래로 기억
그리고 무엇을 다시 호출합니까?
 
아마도 그렇게 두지 않았을 것입니다. 그냥 코딩하는 방법을 모르겠습니다.
 
명확히 합시다 - 얼마나 많은 주문과 각 방향으로 어떤 주문이 있습니까?
 

모든 블록 위에

double UfractalBuy,LfractalBuy;

구매 주문을 열 때 가장 가까운 프랙탈을 기록하십시오.

int i; double f;

     if ( ticket > 0 )
           {
             if ( OrderSelect ( ticket , SELECT_BY_TICKET , MODE_TRADES ) ) 
             {
             Print ( "BUY order opened : " , OrderOpenPrice ( ) ) ;
  
   for ( i = 0 ; i < 50 ; i + + ) { f = iFractals ( NULL , 0 , MODE_UPPER , i ) ; if ( f ! = 0 ) break ; }
   UfractalBuy = High [ i ] ;
   for ( i = 0 ; i < 50 ; i + + ) { f = iFractals ( NULL , 0 , MODE_LOWER , i ) ; if ( f ! = 0 ) break ; }
   LfractalBuy = Low [ i ] ;
             }
           }

구매 주문 마감을 위한 다른 조건 입력

if(P_down1>P_down0||Up<Down||Close[0]+5*Point<LfractalBuy)