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

 
klyuchnikk :

모두들 안녕.

(분석을 위해) 역사에 대해 일하는 고문이 있습니다. 수동으로 매개 변수를 설정합니다 - 주문 시간(시간, 분). 지정된 날짜 간격으로 어드바이저를 실행한 후 주문 시간을 변경하여 다시 실행합니다. 따라서 하루에 96번(15분 동안). 자체적으로 수행하도록 반복하는 방법은 무엇입니까?

돕기 위해
 
artmedia70 :
다시 한 번 묻습니다. 정확히 언제 주문하시겠습니까? 코드로 대답 하지 말고 (이해하고 싶지 않음 - 구문 분석할 자체 코드가 많이 있음) 단순히 단어 로 대답하십시오.

예를 들면: 나는 ... tyry-pyry-yo-my ...를 전제로 그러한 거리에서 Mashka 위/아래 지연을 설정하고 싶습니다.

두 번째로 설명을 부탁할 때, 정말 어려운가요? 이미 문제를 해결했습니다.


현재 작업은 다음과 같습니다. fastMa가 slowMa를 넘었 습니다... 그래서 구매처를 찾고 있습니다. 다음으로, 가격 즉. Ask (구매를 고려하고 있기 때문에) fastMa에 도달합니다 ( 글쎄, 정확한 값은 여기에 없을 것입니다. +- 약간의 편차가 필요하며 이것은 변수 i_thresholdFromMa 입니다 ) 그리고 가격이 fastMa에 접근하자마자 + - i_thresholdFromMa EA는 (fastMa + buyHear * pt) 가격에 BUYSTOP 을 해야 합니다.

한 터미널에서 나에게 일어난 일은 작동하지 않았고 다른 터미널에서는 작동했으며 세 번째 터미널에서는 항상 작동하지 않습니다. 일반적으로 뭔가 잘못되었습니다.

구매 기능의 마지막 버전은 다음과 같습니다.

 //+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy()
{
   int ticket = - 1 ;
   double OOP = fastMa + buyHear * pt;
   
   if ((ND(OOP) - Ask) >= g_stopLevel)           
   {
       if (ND(OOP) > Ask)           // Проверка что цена открытия выше Ask, т.к. у нас вход отложенником
       {
           ticket = OrderSend ( Symbol (), OP_BUYSTOP, 0.1 , ND(OOP), 3 , 0 , 0 , NULL , i_magic, 0 );
       }
   }
   if (ticket > 0 )
   {
       return ( true );
   }
   else
    
   Alert ( GetLastError ());
}
다음은 입력 매개변수입니다.
 extern double i_thresholdFromMa = 5 ;                           // Отступ от МА
extern double buyHear = 10 ,                                    // Расстояние от МА до отложки на бай

int init()
{
   if ( Digits == 1 || Digits == 3 || Digits == 5 )
       pt = Point * 10 ;
}

화면에 오류가 표시됩니다(OrderSend()에서 가격은 빨간색 점 위에 있고 화면에서 볼 수 있는 것처럼 주문은 아래에 있습니다....).

시가와 함께 캔트

아트미디어70 :
그리고 한 가지 더: fastMA와 slowMA가 전역으로 정의되어 있다면 왜 그것들을 함수에 전달합니까? 모든 함수는 호출된 함수에 매개변수를 전달하지 않고 어쨌든 이를 봅니다.

그리고 이전에는 전역적이지 않았으므로 시작 시가 아니라 특정 기능에서 선언되었습니다. 그러나 그것들은 아무 기능에도 사용되지 않았기 때문에 매번 그것들을 얻는 것은 어떻게든 "좋은 프로그래머의 톤이 아니다"의 표시이고 다른 기능에 동일한 코드 라인이 있을 때 편안하지 않습니다.

Artyom , 당신은 내가 처음부터 올바른 출발을 한다고 생각합니까? 각 틱 에서 값을 얻을 수 있음을 의미합니다. 어렵지 않니? 나 자신도 교육적으로는 프로그래머와 거리가 멀다 보니 이런 질문들이 가끔 떠오른다..

 
Tincup :

던졌다. 답변이 명확하지 않아 다시 질문하겠습니다. 거래 조건을 공식화 할 때 필요하다는 것을 올바르게 이해했습니다.

다시 막대의 해당 수에 대해 MA 값을 사용해야 하지만 그림에서 노란색 화살표로 표시된 값은 사용하지 않아야 합니다.

나는 당신의 대답을 이해했기 때문에 그림을 그렸습니다.



사실 질문이 옳지 않습니다. 점은 곡선의 오프셋이 아니라 EA가 버퍼에서 값을 가져와야 하는 막대의 위치입니다. 이것은 이해해야 할 필요가 있습니다. 그리고 거부와 버퍼에서 값을 가져오는 것 사이에는 아무런 대응 관계가 없습니다.
 

안녕하세요

첫 번째 질문


A=사실

15분 전 Imacd( 메인 라인 )의 값이 30분 미만인 경우

 
Claus084 :

안녕하세요

첫 번째 질문

A=사실

Imacd(본선) 15분 전의 값이 30분 미만인 경우

아니, 가세요!
 
더블 iMACD ( string symbol, int timeframe, int fast_ema_period, int slow_ema_period, int signal_period, int apply_price, int 모드, int shift)
이동 평균 수렴/발산 지표 계산. OSMA가 MACD 히스토그램이라고 하는 시스템에서 이 표시기는 두 줄로 표시됩니다. 클라이언트 단말에서는 이동 평균의 수렴/발산이 히스토그램으로 그려집니다.
옵션:
기호 - 지표가 계산될 데이터가 있는 기호의 기호 이름입니다. NULL은 현재 문자를 의미합니다.
시간대 - 기간. 차트 기간 중 하나일 수 있습니다. 0은 현재 차트의 기간을 의미합니다.
fast_ema_period - 빠른 이동 평균을 계산하는 평균 기간입니다.
느린_에마_기간 - 느린 이동 평균을 계산하기 위한 평균화 기간입니다.
signal_period - 신호선 계산을 위한 평균 주기.
적용 가격 - 중고가격. 가격 상수 중 하나일 수 있습니다.
방법 - 인디케이터 라인 인덱스. 표시줄 ID 값 중 하나일 수 있습니다.
옮기다


여기 질문이 있습니다


내가 제대로 이해하고 있는 걸까
- 표시기 버퍼에서 받은 값의 인덱스(현재 막대를 기준으로 지정된 기간 전에 지정된 수만큼 이동).


기간의 수는?
또는 현재 막대가 아닌 이전 막대의 macd 값을 가져오는 방법은 무엇입니까?\

정수 시작()
{
부울 A=참
 if(iMACD(NULL,15,12,26,9,PRICE_CLOSE,MODE_MAIN,1)<iMACD(NULL,15,12,26,9,PRICE_CLOSE,MODE_SIGNAL,2))
  {
   A==참;
   }
   반품;
}


 

차트 기간 을 클릭하고 어떤 기간을 확인하십시오! 그리고 마지막 위치에서 현재 막대( shift = 0)에 대한 이전 막대( shift = 1)를 찾을 수 있습니다.

 double MA0 = iMACD (symbol,timeframe,fast_ema_period,slow_ema_period,signal_period,applied_price,mode, 0 ); //текущий бар
double MA1 = iMACD (symbol,timeframe,fast_ema_period,slow_ema_period,signal_period,applied_price,mode, 1 ); //предыдущий бар


더 나은 방법은 S. Kovalev의 교과서 공부를 시작하는 것입니다!
 
테스터는 "공개 가격" 테스트 모드에서 공개 가격만 사용합니까, 아니면 공개, 종가, 고가 및 저가를 사용합니까?
 
xant :

다시 안녕.

다음 문제를 해결하는 방법을 알려주세요.

컴파일 된 형식의 표시기가 있습니다. 코드를 사용할 수 없습니다. 표시기는 기본 차트 창의 가격 수준을 반영합니다. 내 Expert Advisor에 이 수준을 사용하고 싶지만 iCustom() 함수를 사용하여 표시기를 호출하는 것은 불가능합니다. 표시된 수준은 그래픽 개체입니다. 예를 들어 개체 이름과 시간을 통해 다른 방법으로 데이터를 읽을 수 있습니까? 모든 레벨의 이름은 알려져 있으며(지표 설정에서 사용 가능) 개체는 일주일에 한 번 업데이트됩니다.

즉시 나는 말할 것입니다 - 프로그래밍에서 나는 오히려 피상적으로 휴식을 취합니다. 의미있는 답변 감사합니다.

사고 과정이 맞습니다. 그래픽 개체는 이름으로 인식됩니다. 레벨은 OBJ_TREND(추세선) 및 OBJ_HLINE (수평선)의 두 가지(기본) 유형의 그래픽 개체로 설정할 수 있습니다. 내가 이해하는 것처럼 당신은 이러한 객체의 두 가지 속성(가격과 시간)이 필요합니다.

     //---- Уровень для горизонтальной линии
     double ld_Level = ObjectGet (Name, OBJPROP_PRICE1);
     //---- Уровень для трендовой линии на текущем баре
    ld_Level = ObjectGetValueByShift (Name, Bar);
     datetime ldt_Time = ObjectGet (Name, OBJPROP_TIME1);
이 같은.
 
Sancho77 :
테스터는 "공개 가격" 테스트 모드에서 공개 가격만 사용합니까, 아니면 공개, 종가, 고가 및 저가를 사용합니까?

예, 시작 가격만 , 따라서 EA의 작업을 분석할 때 고려하는 것이 특히 중요합니다. 예를 들어, 촛불의 꼬리가 채널을 뚫고 나오면 고문은 이것을 눈치 채지 못할 수도 있지만 이것은 프로그램 논리에 작성되어 원칙적으로 문제를 해결할 수 있습니다.