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

 

도움을 주셔서 감사합니다.

 
spidey :

좋은 저녁입니다. 표시기에 경고를 올바르게 넣는 방법을 알려주십시오. 그렇지 않으면 모든 것을 시도한 다음 매 틱마다 경고음이 울리고 전혀 경고음이 울리지 않습니다...


받아보세요, 구독하기 :)

파일:
 
장점 i번째 막대(예: M15) 의 종가 와 표시기의 당일 시가를 비교하는 방법을 알려주세요.
 

안녕하세요.

아래 그림과 같이 .hst를 얻을 수 있는 위치 또는 시각적 테스터를 위해 Eliot 웨이브를 생성하는 방법을 알려주거나 조언하십시오(csv 파일로 가능).

 
RomanS :
장점 i번째 막대(예: M15)의 종가와 표시기의 당일 시가를 비교하는 방법을 알려주세요.


아마도 올바르게 설명되지 않았을 것입니다 ... 예를 들어

 #property indicator_separate_window
#property  indicator_buffers 4
#property  indicator_color1  Red
#property  indicator_color2  Green
#property  indicator_color3  Blue
#property  indicator_color4  Black

extern int DAY       = 0 ;
extern int History   = 500 ;

double GBP[],EUR[],JPY[],USD[]; 

int init()
  {
   SetIndexBuffer ( 0 , GBP);
   SetIndexStyle( 0 , DRAW_LINE , STYLE_SOLID , 2 );
   SetIndexBuffer ( 1 , EUR);    
   SetIndexStyle( 1 , DRAW_LINE , STYLE_SOLID , 2 );
   SetIndexBuffer ( 2 , JPY);
   SetIndexStyle( 2 , DRAW_LINE , STYLE_SOLID , 2 );
   SetIndexBuffer ( 3 , USD);
   SetIndexStyle( 3 , DRAW_LINE , STYLE_SOLID , 2 );
   IndicatorShortName( "..." );
   return ;
  }

int start()
  {
  int limit = 0 , 
      counted_bars = IndicatorCounted();
      if (counted_bars> 0 ) counted_bars--; 
      limit = Bars - counted_bars;
 
  for ( int i= 0 ; i<limit; i++)
    {
     USD[i] = -(iClose( "EURUSD" , NULL ,i)-iOpen( "EURUSD" , PERIOD_D1 ,DAY))
              -(iClose( "GBPUSD" , NULL ,i)-iOpen( "GBPUSD" , PERIOD_D1 ,DAY))
              +(iClose( "USDJPY" , NULL ,i)-iOpen( "USDJPY" , PERIOD_D1 ,DAY))/iClose( "USDJPY" , NULL ,i);
     EUR[i] = +(iClose( "EURUSD" , NULL ,i)-iOpen( "EURUSD" , PERIOD_D1 ,DAY))
              +(iClose( "EURUSD" , NULL ,i)*iClose( "USDJPY" , NULL ,i)-iOpen( "EURUSD" , PERIOD_D1 ,DAY)*iOpen( "USDJPY" , PERIOD_D1 ,DAY))/iClose( "USDJPY" , NULL ,i)
              +(iClose( "EURUSD" , NULL ,i)/iClose( "GBPUSD" , NULL ,i)-iOpen( "EURUSD" , PERIOD_D1 ,DAY)/iOpen( "GBPUSD" , PERIOD_D1 ,DAY))*iClose( "GBPUSD" , NULL ,i);
     GBP[i] = +(iClose( "GBPUSD" , NULL ,i)-iOpen( "GBPUSD" , PERIOD_D1 ,DAY))
              +(iClose( "GBPUSD" , NULL ,i)*iClose( "USDJPY" , NULL ,i)-iOpen( "GBPUSD" , PERIOD_D1 ,DAY)*iOpen( "USDJPY" , PERIOD_D1 ,DAY))/iClose( "USDJPY" , NULL ,i)
              -(iClose( "EURUSD" , NULL ,i)/iClose( "GBPUSD" , NULL ,i)-iOpen( "EURUSD" , PERIOD_D1 ,DAY)/iOpen( "GBPUSD" , PERIOD_D1 ,DAY))*iClose( "GBPUSD" , NULL ,i);
     JPY[i] = -(iClose( "USDJPY" , NULL ,i)-iOpen( "USDJPY" , PERIOD_D1 ,DAY))/iClose( "USDJPY" , NULL ,i)
              -(iClose( "EURUSD" , NULL ,i)*iClose( "USDJPY" , NULL ,i)-iOpen( "EURUSD" , PERIOD_D1 ,DAY)*iOpen( "USDJPY" , PERIOD_D1 ,DAY))/iClose( "USDJPY" , NULL ,i)
              -(iClose( "GBPUSD" , NULL ,i)*iClose( "USDJPY" , NULL ,i)-iOpen( "GBPUSD" , PERIOD_D1 ,DAY)*iOpen( "USDJPY" , PERIOD_D1 ,DAY))/iClose( "USDJPY" , NULL ,i);
    }
   return ( 0 );
  }

DAY = 0으로 설정하면 i 번째 막대의 가격을 M5로 설정하고 오늘 시가와 비교하고 DAY = 1이면 어제 등의 시가와 비교합니다.

그리고 그것을 동적으로 만드는 방법... 즉. 예를 들어 1278번째 막대를 계산할 때 이 막대가 있는 날의 시가와 비교가 있었는데 이것을 어떻게 해야 하는지 머리가 아팠습니다

 

어쨌든 이것이 일종의 MACD 또는 STOH 지표의 차트라고 가정해 보겠습니다. 매도의 경우 EA Xmax*0.25, 매수의 경우 Xmin*0.25의 진입점을 설명하는 방법을 알려주세요. 기간 "n"이 일정하지 않고 Xmax 및 Xmin이 변경되는 경우.

파일:
ypi.rar  7 kb
 

그러한 연산자를 구현하는 방법

 while ( Условие если закрылся любой ордер )                  
{   то опредеяем тип закрытого ордера из списка   }  
значение передаем следущему оператору

{  по переданому значению выбераем из списка нужный ордер и открываем его  } 
после того как ордер открыт возращяемся в начало

또는 다른 방법으로 이 주기를 구현할 수 있습니다.

 
RomanS :


아마도 올바르게 설명되지 않았을 것입니다 ... 예를 들어

DAY = 0으로 설정하면 i 번째 막대의 가격을 M5로 설정하고 오늘의 시가와 비교하고 DAY = 1이면 어제 등의 시가와 비교합니다.

그리고 그것을 동적으로 만드는 방법... 즉. 예를 들어 1278번째 막대를 계산할 때 이 막대가 있는 날의 시가와 비교가 있었는데 이것을 어떻게 해야 하는지 머리가 아팠습니다

이를 위해 이전 기간의 OHLC를 반환하는 함수가 있습니다. :)

 //+------------------------------------------------------------------+
//| getOHLC                                                          |
//+------------------------------------------------------------------+
double getOHLC( int OHLC, string symbol, int timeframe, int shift = 0 ){
   if (timeframe < Period ()) return (- 1 );
   switch (OHLC){
      case 0 :  return (iOpen(symbol, timeframe, iBarShift(symbol, timeframe, Time[shift])));
      case 1 :  return (iLow(symbol, timeframe, iBarShift(symbol, timeframe, Time[shift])));
      case 2 :  return (iHigh(symbol, timeframe, iBarShift(symbol, timeframe, Time[shift])));
      case 3 :  return (iClose(symbol, timeframe, iBarShift(symbol, timeframe, Time[shift])));
   }
}
//+------------------------------------------------------------------+

옵션:
int OHLC - 더 높은 시간 프레임에서 데이터를 추출 할 표준 상수 에 해당합니다.
문자열 기호 - 악기의 기호 이름.
int timeframe - 작업할 더 높은 시간 프레임의 기간으로 , 표준 상수 에 해당합니다.
int Shift t - 더 높은 기간의 일치 항목을 검색하기 위해 현재 막대의 번호, 현재 시간대를 지정하는 선택적 매개변수입니다.

귀하의 경우에 대한 함수 호출의 예:

 for ( int i= 0 ; i<limit; i++)
    {
     USD[i] = -(iClose( "EURUSD" , NULL ,i)-getOHLC( 0 , "EURUSD" , PERIOD_D1 ,i))
              -(iClose( "GBPUSD" , NULL ,i)-getOHLC( 0 , "GBPUSD" , PERIOD_D1 ,i))
              +(iClose( "USDJPY" , NULL ,i)-getOHLC( 0 , "USDJPY" , PERIOD_D1 ,i))/iClose( "USDJPY" , NULL ,i);
     EUR[i] = +(iClose( "EURUSD" , NULL ,i)-getOHLC( 0 , "EURUSD" , PERIOD_D1 ,i))
              +(iClose( "EURUSD" , NULL ,i)*iClose( "USDJPY" , NULL ,i)-getOHLC( 0 , "EURUSD" , PERIOD_D1 ,i)*getOHLC( 0 , "USDJPY" , PERIOD_D1 ,i))/iClose( "USDJPY" , NULL ,i)
              +(iClose( "EURUSD" , NULL ,i)/iClose( "GBPUSD" , NULL ,i)-getOHLC( 0 , "EURUSD" , PERIOD_D1 ,i)/getOHLC( 0 , "GBPUSD" , PERIOD_D1 ,i))*iClose( "GBPUSD" , NULL ,i);
     GBP[i] = +(iClose( "GBPUSD" , NULL ,i)-getOHLC( 0 , "GBPUSD" , PERIOD_D1 ,i))
              +(iClose( "GBPUSD" , NULL ,i)*iClose( "USDJPY" , NULL ,i)-getOHLC( 0 , "GBPUSD" , PERIOD_D1 ,i)*getOHLC( 0 , "USDJPY" , PERIOD_D1 ,i))/iClose( "USDJPY" , NULL ,i)
              -(iClose( "EURUSD" , NULL ,i)/iClose( "GBPUSD" , NULL ,i)-getOHLC( 0 , "EURUSD" , PERIOD_D1 ,i)/getOHLC( 0 , "GBPUSD" , PERIOD_D1 ,i))*iClose( "GBPUSD" , NULL ,i);
     JPY[i] = -(iClose( "USDJPY" , NULL ,i)-getOHLC( 0 , "USDJPY" , PERIOD_D1 ,i))/iClose( "USDJPY" , NULL ,i)
              -(iClose( "EURUSD" , NULL ,i)*iClose( "USDJPY" , NULL ,i)-getOHLC( 0 , "EURUSD" , PERIOD_D1 ,i)*getOHLC( 0 , "USDJPY" , PERIOD_D1 ,i))/iClose( "USDJPY" , NULL ,i)
              -(iClose( "GBPUSD" , NULL ,i)*iClose( "USDJPY" , NULL ,i)-getOHLC( 0 , "GBPUSD" , PERIOD_D1 ,i)*getOHLC( 0 , "USDJPY" , PERIOD_D1 ,i))/iClose( "USDJPY" , NULL ,i);
    }

따라서 iClose ("EURUSD",NULL,i)는 현재 차트의 i 아래에 있는 막대의 종가를 찾고 getOHLC (0, "EURUSD",PERIOD_D1,i)는 해당 날짜의 시가를 찾습니다. 현재 차트의 막대 i가 위치합니다.

 
RomanS :


아마도 올바르게 설명되지 않았을 것입니다 ... 예를 들어

DAY = 0으로 설정하면 i 번째 막대의 가격을 M5로 설정하고 오늘의 시가와 비교하고 DAY = 1이면 어제 등의 시가와 비교합니다.

그리고 그것을 동적으로 만드는 방법... 즉. 예를 들어 1278번째 막대를 계산할 때 이 막대가 있는 날의 시가와 비교가 있었는데 이것을 어떻게 해야 하는지 머리가 아팠습니다

먼저 이 막대가 어느 날에 해당하는지 계산해야 합니다. 지금은 집에 없기 때문에 나중에 저녁에 집에 있을 때 함수를 입력하겠습니다. 지금은 스스로를 찾거나 구현 방법에 대해 생각해 보십시오.

죄송합니다 ... 이미 옵션을 제공했습니다 ....

 
akuma_san1 :

어쨌든 이것이 일종의 MACD 또는 STOH 지표의 차트라고 가정해 보겠습니다. 매도의 경우 EA Xmax*0.25, 매수의 경우 Xmin*0.25의 진입점을 설명하는 방법을 알려주세요. 기간 "n"이 일정하지 않고 Xmax 및 Xmin이 변경되는 경우.

입력 기준이 매우 모호합니다. 개인적으로 명확하지 않습니다. 모든 레벨의 교차를 제어해야 하는 경우 제공하는 모든 매개변수를 변경해도 간섭 요소가 없습니다. 첫 번째 막대에서 필요한 매개변수의 값과 두 번째 막대에서 동일한 매개변수의 값을 살펴보십시오. 첫 번째 막대에서 매개변수 값이 설정한 임계값보다 높으면 두 번째 막대에서 더 낮으면 상향식 교차가 있습니다. 첫 번째 막대가 낮고 두 번째 막대가 높으면 하향식 교차점입니다. 여기에 매수와 매도에 대한 두 가지 신호가 있습니다. 설정한 값의 위 또는 아래에 있는 값을 간단히 확인할 수 있습니다. 따라서 신호도 발생하지만 전체 시간 동안 매개변수는 제어된 값보다 높거나 낮습니다.
추신. 매개변수가 변경되지 않았다면 신호를 기다리지 않았을 것입니다... :)