프로그래밍을 공부한 적이 없습니다. 하지만 나는 고문을 쓰고 싶다 - 페이지 8

 

그럼 동료 프로그래머들은?
나는 주제의 저자이며 계속 조언을 구합니다.


헤더에서 구조를 선언했음을 의미합니다.

그리고 여기 가장 흥미로운 것이 무엇입니까?
onTIK는 미결 주문이 없는 경우 조건을 정의했습니다.
그 다음에:
빠른 매쉬가 느린 매쉬보다 크면,
그런 다음: 주문을 엽니다.



문제. 매 틱마다 주문이 열리는 이유는 무엇입니까?

 
Sergey Lobzankin :

그럼 동료 프로그래머들은?
나는 주제의 저자이며 계속 조언을 구합니다.


헤더에서 구조를 선언했음을 의미합니다.

그리고 여기 가장 흥미로운 것이 무엇입니까?
onTIK는 미결 주문이 없는 경우 조건을 정의했습니다.
그 다음에:
빠른 매쉬가 느린 매쉬보다 큰 경우,
그런 다음: 주문을 엽니다.



문제. 매 틱마다 주문이 열리는 이유는 무엇입니까?

이는 각 틱 에서 조건이 충족됨을 의미합니다.

조건이 MA 교차를 포함해야 하는 경우 첫 번째 막대에서는 < 더 작았고 0에서는 > 더 많이 되었습니다. 그리고 0> 더 및 첫 번째> 더 많은 조건에서.

 

https://code.org/

https://scratch.mit.edu/

MQL에서 프로그래밍을 배우는 것(실제로 이것은 일종의 사고 방식이지 일종의 언어가 아님)은 자신과 환경에 완전히 번거로운 일입니다.

링크를 통해 이동하십시오. 학교 수준(일부 초등학교에서도)에서는 모든 것이 간단하지만 알고리즘 및 녹음에 대한 소개는 최소한입니다. 그렇지 않으면 재채기를 할 때마다 포럼에 연락하여 답변을 기대하게 되며 이는 시간 낭비이며 시간은 곧 돈입니다.

추신 / 예, 모든 사람에게 자신을 익히라고 조언합니다. 내부의 스크래치는 일반적으로 걸작입니다. 현대 프로그래밍의 할아버지

Code.org: Любой может научиться
Code.org: Любой может научиться
  • code.org
Каждый студент в каждой школе заслуживает возможность изучения компьютерных наук.
 
Sergey Lobzankin :

그럼 동료 프로그래머들은?
나는 주제의 저자이며 계속 조언을 구합니다.


헤더에서 구조를 선언했음을 의미합니다.

그리고 여기 가장 흥미로운 것이 무엇입니까?
onTIK는 미결 주문이 없는 경우 조건을 정의했습니다.
그 다음에:
빠른 매쉬가 느린 매쉬보다 큰 경우,
그런 다음: 주문을 엽니다.



문제. 매 틱마다 주문이 열리는 이유는 무엇입니까?

글쎄, 쇼, 주제의 동지 작가?

그들은 한 달 전에 당신에게 말했지만 당신은주의를 기울이지 않았습니다.

코드를 삽입하는 것은 끔찍한 공포이므로 발행할 것입니다.)


거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

프로그래밍을 공부한 적이 없습니다. 하지만 나는 고문을 쓰고 싶다

콘스탄틴 니키틴 , 2018.04.10 21:18

글쎄, 당신은 자연 이상의 아무것도 없습니다. 그래서 최선의 선택은 무엇입니까? 여기에 게시하십시오.

누가 좋은지 알려주세요.


그리고 여전히 코드를 그림으로 붙여넣습니다.

 
안녕하세요, 나는이 문제에 부딪쳤습니다. EA는 상황을 분석하고 추가 계산을 위해 0과 첫 번째 막대에 대한 이동 평균 데이터가 필요합니다.
OnCalculate 함수는 기본적으로 칠면조를 작성하도록 설계되었습니다. 그리고 Expert Advisor에서 이 기능을 따로 빼놨는데 OnTick에서 접근하는 방법을 모르겠네요
 
Sergey Lobzankin :
안녕하세요, 나는이 문제에 부딪쳤습니다. EA는 상황을 분석하고 추가 계산을 위해 0과 첫 번째 막대에 대한 이동 평균 데이터가 필요합니다.
OnCalculate 함수는 기본적으로 칠면조를 작성하도록 설계되었습니다. 그리고 Expert Advisor에서 이 기능을 따로 빼놨는데 OnTick에서 접근하는 방법을 모르겠네요

OnCalculate를 지표에서 Expert Advisor로 옮기려고 할 필요조차 없습니다! EA의 표시기에 액세스하고(표시기의 손을 사용하여) 데이터를 가져오기만 하면 됩니다.

iMA 코드 iStdDev 에서 iMA 및 iStdDev로 작업하는 예 - OnTick에서 발췌한 코드, iMA 표시기에서 데이터 가져오기

   double ma_fast[],ma_normal[],stddev[];
   MqlRates rates[];
   ArraySetAsSeries (ma_fast, true );
   ArraySetAsSeries (ma_normal, true );
   ArraySetAsSeries (stddev, true );
   ArraySetAsSeries (rates, true );
   int buffer= 0 ,start_pos= 0 ,count= 3 ;
   if (!iGetArray(handle_iMA_Fast,buffer,start_pos,count,ma_fast) || 
      !iGetArray(handle_iMA_Normal,buffer,start_pos,count,ma_normal) || 
      !iGetArray(handle_iStdDev,buffer,start_pos,count,stddev) || 
       CopyRates (m_symbol.Name(), Period (),start_pos,count,rates)!=count)
     {
      PrevBars= 0 ;
       return ;
     }
//---
   if (ma_fast[ 0 ]>ma_normal[ 0 ])
       if (rates[ 1 ].close>rates[ 1 ].open)
         if (rates[ 1 ].close>ma_normal[ 0 ])
             if (stddev[ 0 ]>stddev[ 1 ])
               m_need_open_buy= true ;
   if (ma_fast[ 0 ]<ma_normal[ 0 ])
       if (rates[ 1 ].close<rates[ 1 ].open)
         if (rates[ 1 ].close<ma_normal[ 0 ])
             if (stddev[ 0 ]>stddev[ 1 ])
               m_need_open_sell= true ;
 
Vladimir Karputov :

OnCalculate를 지표에서 Expert Advisor로 옮기려고 할 필요조차 없습니다! EA의 표시기에 액세스하고(표시기의 손을 사용하여) 데이터를 가져오기만 하면 됩니다.

iMA 코드 iStdDev 에서 iMA 및 iStdDev로 작업하는 예 - OnTick에서 발췌한 코드, iMA 표시기에서 데이터 가져오기

나는 당신이 완전히 옳았다고 생각합니다.
이제 ... Array ...

 

그리고 여기 더...
전문가 헤더에 바로 핸들이 있습니다.

 extern int     zazor      = 0 ;
extern double Lots       = 0.1 ;
extern int     TrailingStop = 15 ;
extern int     TrailingStep = 2 ;
extern int     Magic      = 123 ;
extern int     Slippage   = 5 ;
int Digits ;

int timeprev= 0 ;

int     ticket;
double price,TP,SL,lastlot;
string ;

int ima1_handle          = iMA ( Symbol (), 0 , 14 , 0 , MODE_EMA , PRICE_CLOSE );               //хендл
int ima2_handle          = iMA ( Symbol (), 0 , 64 , 0 , MODE_EMA , PRICE_CLOSE );               //хендл
int Stoch_handle         = iStochastic ( Symbol (), 0 , 20 , 15 , 15 , MODE_EMA , STO_CLOSECLOSE ); //хендл
int ATR_handle           = iATR         ( Symbol (), 0 , 21 );                               //хендл
double ima1_massiv [ 2 ];                                                                //статический массив для быстрой машки 

포럼에서 어떻게 합니까? ... 모든 것이 다릅니다. onInit의 누군가, OnTik의 누군가,
OnTik의 내 시나리오에서 데이터를 배열에 복사하고 동일한 수의 복사된 요소를 가져옵니다.

 void OnTick ()
  { 
     int ima_count1 = CopyBuffer (ima1_handle, 0 , 1 , 2 ,ima1_massiv);     //скопировал данные из 2х буферов быстрой машки
     string str_ima1 = IntegerToString (ima_count1);                 //отладочная
      printf ( "мой первый хендл = "   + str_ima1);                      //отладочная
   }
PS 그건 그렇고 테스터는 Expert Advisor의 헤더에서 핸들을 얻은 모든 지표를보고 시각화 차트에 모든 것을 그렸습니다.
 

다음은 지표 데이터에 대한 액세스를 구현하는 방법을 명확하게 설명하는 기사입니다.
https://www.mql5.com/en/articles/43

하지만 여러분, 데이터는 배열에 복사됩니다. 저는 논쟁하지 않지만 특정 숫자를 가져와야 합니다. 즉, 현재 막대의 마지막 눈금에 있는 눈금이 1.32456이면 이 숫자를 가져와야 합니다. 로그에 (숫자가 실제로 수신되었는지 확인하려면) 이 특정 정보를 이중 유형 으로 가져와야 합니다.

두 개의 다른 틱 사이의 int 포인트 수를 계산하기 위해. 이 값을 얻는 방법?


Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • www.mql5.com
В MQL5 существует несколько вариантов вызова индикаторов, и осуществляются они в основном при помощи функций IndicatorCreate() и iCustom(). Причем эти функции лишь возвращают хендл индикатора, и дальнейшая работа с индикаторами ведется именно через него. Так что же такое хендл? Как работать с функциями IndicatorCreate() и iCustom()? И как...
 
Sergey Lobzankin :

다음은 지표 데이터에 대한 액세스를 구현하는 방법을 명확하게 설명하는 기사입니다.
https://www.mql5.com/en/articles/43

하지만 여러분, 데이터는 배열에 복사됩니다. 저는 논쟁하지 않지만 특정 숫자를 가져와야 합니다. 즉, 현재 막대의 마지막 눈금에 있는 눈금이 1.32456이면 이 숫자를 가져와야 합니다. 로그에 (숫자가 실제로 수신되었는지 확인하려면) 이 특정 정보를 이중 유형 으로 가져와야 합니다.

두 개의 다른 틱 사이의 int 포인트 수를 계산하기 위해. 이 값을 얻는 방법?


당신은 당신이 말한 것을보고 읽습니까? 나는 게시물 에서 예를 들었습니다. 두 개의 iMA에서 데이터를 수신하고 있습니다 .

   double ma_fast[],ma_normal[],stddev[];
   MqlRates rates[];
   ArraySetAsSeries (ma_fast, true );
   ArraySetAsSeries (ma_normal, true );
   ArraySetAsSeries (stddev, true );
   ArraySetAsSeries (rates, true );
   int buffer= 0 ,start_pos= 0 ,count= 3 ;
   if (!iGetArray(handle_iMA_Fast,buffer,start_pos,count,ma_fast) || 
      !iGetArray(handle_iMA_Normal,buffer,start_pos,count,ma_normal) || 
      !iGetArray(handle_iStdDev,buffer,start_pos,count,stddev) || 
       CopyRates (m_symbol.Name(), Period (),start_pos,count,rates)!=count)
     {
      PrevBars= 0 ;
       return ;
     }
//---
   if (ma_fast[ 0 ]>ma_normal[ 0 ])
       if (rates[ 1 ].close>rates[ 1 ].open)
         if (rates[ 1 ].close>ma_normal[ 0 ])
             if (stddev[ 0 ]>stddev[ 1 ])
               m_need_open_buy= true ;
   if (ma_fast[ 0 ]<ma_normal[ 0 ])
       if (rates[ 1 ].close<rates[ 1 ].open)
         if (rates[ 1 ].close<ma_normal[ 0 ])
             if (stddev[ 0 ]>stddev[ 1 ])
               m_need_open_sell= true ;

"빠름"과 "보통"의 두 가지 iMA 표시기가 있습니다. 이 두 표시기의 데이터를 각각 ma_fastma_normal 배열 로 가져옵니다. # start_pos 바에서 count 만큼 요청합니다.

그런 다음 수신된 데이터로 전환합니다 (이 예에서는 막대 #0의 데이터로 전환).