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

 
Shniperson >> :
주님. H4에서 거래할 때 H1의 막대 값이 고려되도록 만드는 방법은 무엇입니까? 예를 들어 if(.......&& 닫기[0](H1 bar)>High[1](H1 bar) ????????????

iClose() 및 iHigh() 사용 - 이 함수에서 임의의 시간 프레임을 설정할 수 있습니다.

 
하나의 버퍼를 다른 버퍼에 할당하는 것이 올바르지 않은 이유를 이해할 수 없습니다(Buffer1의 결과는 표시기 창에 표시되지 않음). 두 번째 질문은 현재 0으로만 제한될 수 있는데 표시기가 0 막대와 이전 막대(한계=2)를 계산해야 하는 이유는 무엇입니까?

#property indicator_separate_window
#property indicator_buffers 1

extern int FastMA=3;
extern int SlowMA=25;

double Buffer1[];


double Buffer2[];

int init()
{
  SetIndexBuffer(0,Buffer1);
  SetIndexBuffer(1,Buffer2);
  return(0);
}

int start()
{
  int limit,counted_bars;
  counted_bars=IndicatorCounted();   //counted_bars=Bars-1
  if(counted_bars>0) counted_bars--; //??? counted_bars=Bars-1-1
  limit=Bars-counted_bars;     //лимит теперь равен двум
  for(int i=0; i<limit; i++){
     Buffer2[i]=MathAbs(Close[i]-Open[i]);
  }
  for(i=0; i<limit; i++){
    Buffer1[i]=Buffer2[i]*(-1);
  }
}

 
친애하는 프로그래머 여러분, 표시기가 0 을 넘을 때 울리는 소리를 표시기에 삽입하는 데 도움을 주십시오. 고맙습니다!
파일:
 
C-4 >> :
한 버퍼를 다른 버퍼에 할당하는 것이 올바르지 않은 이유를 이해할 수 없습니다(Buffer1의 결과가 표시기 창에 표시되지 않음).

그리기 버퍼에 SetIndexStyle(0,DRAW_LINE)이 없습니다. , 그리고 계산된 IndicatorBuffers(2);



 
빙고! 음, 물론 IndicatorBuffers (2)는 SetIndexBuffer를 지정하는 것으로 충분할 것이라고 생각했습니다. 그건 그렇고, 나는 SetIndexStyle(0,DRAW_LINE) 없이도 그립니다. 얇은 검은 선이 나타납니다. 기본 설정은 활성화되어 있습니다.
 

안녕하세요 감정사입니다.

미결제 주문만 마감하는 어드바이저를 만들었어요! ( 반자동 거래 ).

마감 규칙: 주요 마감은 가격 채널을 따릅니다. SHELL 마감이 1핍을 깨면,

1핍 다운하면 BAY가 닫힙니다. 또한 일정 거리의 여러 지점에 대해 손익분기점 보험이 설정됩니다.

질문이 있습니다. 모든 작업을 올바르게 수행했습니까? 코드가 정확합니까 !!!??

 extern bool check = false ; 
extern int PeriodP = 12 ; 
extern double TrailingStop = 35 ; // расстояние после которого будем устанавливать безубыток
extern double X = 5 ; //установка в + 5 пунктов! 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start ( )
  {
   double P_up0 , P_down0 , P_up1 , P_down1 ;
   int cnt , total ;

  P_up0 = iCustom ( Symbol ( ) , Period ( ) , "Ценовой канал" , PeriodP , 0 , 0 ) ;
  P_down0 = iCustom ( Symbol ( ) , Period ( ) , "Ценовой канал" , PeriodP , 1 , 0 ) ;
  P_up1 = iCustom ( Symbol ( ) , Period ( ) , "Ценовой канал" , PeriodP , 0 , 1 ) ;
  P_down1 = iCustom ( Symbol ( ) , Period ( ) , "Ценовой канал" , PeriodP , 1 , 1 ) ;

    
   for ( cnt = OrdersTotal ( ) - 1 ; cnt > = 0 ; cnt - - ) {
      OrderSelect ( cnt , SELECT_BY_POS , MODE_TRADES ) ;
      if ( OrderType ( ) < = OP_SELL & &    OrderSymbol ( ) = = Symbol ( ) )   {
         if ( OrderType ( ) = = OP_BUY ) 
            {
                 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 ) 
            {
               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 ) ;
                    }
                 }
              }
            
           }
        }
     
   if ( check ) Order_Open ( ) ;
   return ( 0 ) ;
  }
//+------------------------------------------------------------------+

void Order_Open ( ) {
   if ( OrdersTotal ( ) < = 1 ) {
      OrderSend ( Symbol ( ) , OP_BUY , 0.1 , Ask , 3 , 0 , 0 , "" , 20080421 , 0 ) ;
      OrderSend ( Symbol ( ) , OP_SELL , 0.1 , Bid , 3 , 0 , 0 , "" , 20080421 , 0 ) ;
   }
}
 
롱 포지션을 청산하는 조건은 없으며 이제 매수 주문은 어쨌든 청산됩니다.
주문을 검색할 경우 OrderSelect - RefreshRates() 앞이나 뒤에 넣어야 합니다.
 
Roger >> :
롱 포지션을 청산하는 조건은 없으며 이제 매수 주문은 어쨌든 청산됩니다.

오류를 찾았습니다. BUY 닫기를 놓쳤습니다.

최종 버전. 적어도 컴파일은 오류 없이 통과했습니다.

 extern bool check = false ; 
extern int PeriodP = 12 ; 
extern double TrailingStop = 35 ; // расстояние после которого будем устанавливать безубыток
extern double X = 5 ; //установка в + 5 пунктов! 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start ( )
  {
   double P_up0 , P_down0 , P_up1 , P_down1 ;
   int cnt , total ;

  P_up0 = iCustom ( Symbol ( ) , Period ( ) , "Ценовой канал" , PeriodP , 0 , 0 ) ;
  P_down0 = iCustom ( Symbol ( ) , Period ( ) , "Ценовой канал" , PeriodP , 1 , 0 ) ;
  P_up1 = iCustom ( Symbol ( ) , Period ( ) , "Ценовой канал" , PeriodP , 0 , 1 ) ;
  P_down1 = iCustom ( Symbol ( ) , Period ( ) , "Ценовой канал" , PeriodP , 1 , 1 ) ;

    
   for ( cnt = OrdersTotal ( ) - 1 ; cnt > = 0 ; cnt - - ) {
      OrderSelect ( cnt , SELECT_BY_POS , MODE_TRADES ) ;
      if ( OrderType ( ) < = OP_SELL & &    OrderSymbol ( ) = = Symbol ( ) )   {
         if ( OrderType ( ) = = OP_BUY ) {  
            
            if ( P_down1 > P_down0 ) {
                 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  
            {
               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 ) ;
                    }
                 }
              }
            
           }
        
     }
   if ( check ) Order_Open ( ) ;
   return ( 0 ) ;
  }
//+------------------------------------------------------------------+

void Order_Open ( ) {
   if ( OrdersTotal ( ) < = 1 ) {
      OrderSend ( Symbol ( ) , OP_BUY , 0.1 , Ask , 3 , 0 , 0 , "" , 20080421 , 0 ) ;
      OrderSend ( Symbol ( ) , OP_SELL , 0.1 , Bid , 3 , 0 , 0 , "" , 20080421 , 0 ) ;
   }
}
 

매우 "간단한" 질문: 예금 통화 로 1(하나) 공개 지수 랏의 가격을 계산하는 방법은 무엇입니까?

예: 어제 9400 포인트를 열 때 1 lot 닛케이 가격을 열었습니다. 질문: 오픈 당시 예금 통화로 9400(담보 아님! 즉, 로트 가격)의 가치가 얼마인지 확인하는 방법은 무엇입니까?

 
jobber писал(а) >>

매우 "간단한" 질문: 예금 통화로 1(하나) 공개 지수 랏의 가격을 계산하는 방법은 무엇입니까?

예: 어제 9400 포인트를 열 때 1 lot 닛케이 가격을 열었습니다. 질문: 오픈 당시 예금 통화로 9400(담보 아님! 즉, 로트 가격)의 가치가 얼마인지 확인하는 방법은 무엇입니까?

그리고 MarketInfo()는 해당 매개변수에 도움이 되지 않습니다.