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

 
Code :


좋아요, 다르게 보도록 하겠습니다.

vteor12는 (dVolume+vback1)/k1(인자 1)로 쓸 수 있습니다.

vrealUP12는 (dVolume+vback1)/k2(인자 2)로 쓸 수 있습니다.

이미 지표의 이데올로기를 설명하려고 하였듯이 이론적인 수준과 실제 수준을 비교하는 것으로 구성되어 있습니다. 이러한 수준을 얻기 위해 동일한 값(dVolume + vback1)(즉, 나누기)을 특정 이론 값(k1) 및 실제 값(k2)과 비교합니다. 우리가 스페이드라고 부르는 경우 나는 단지 k1을 구성하고 있음을 이해합니다. 또는 당신이 원한다면, 나는 가정합니다. 이제 무언가와 비교해야합니다. 이 문제에서 차트 자체보다 더 객관적이고 진실한 것은 없습니다. 그러므로 나는 여는 것과 닫는 것의 차이를 주어진 시간의 최종 결과로 인식한다. 그리고 여기에는 동일한 비트 깊이를 가져오는 단 하나의 작업이 있습니다. 이것이 1000을 곱한 이유입니다.

계산기를 사용하여 인접한 양초에 대한 몇 가지 다른 옵션을 계산해 보세요. 이 매우 간단한 공식을 사용하여 다양한 결과에 놀랄 수 있습니다.

그리고 학교 논리의 관점에서 보면 당신이 옳습니다. 학교에서 허용되지 않는 Volume + Volume/Price를 추가합니다. :))

합격... :)))

처음에 표시기를 표시하는 데 문제가 있었습니까? 그녀를 처리 했습니까?

 
MaxZ :

합격... :)))

처음에 표시기를 표시하는 데 문제가 있었습니까? 그녀를 처리 했습니까?


네, 그건 그렇고, 제가 스스로 알아냈습니다. 히스토그램이 아니라 선이 그려져 있다는 점은 고려하지 않았습니다. 선은 2점이 필요합니다. 코드는 모든 옵션을 설명하지 않고 연속적으로 2개의 성장하는 양초만 설명하기 때문에 두 번째 성장하는 양초 이후에 하향 양초가 나타나면 칠면조는 아무 것도 그리지 않았습니다. 그리고 그는 옳은 일을 했습니다. 그걸 알아냈을 때 히스토그램으로 변경했는데 거기에 모든 것이 그려져 있습니다.

그건 그렇고, 당신은 덧셈과 뺄셈의 규칙에 대한 내 추론을 마음에 들지 않고 실험이라고 생각하십시오. :)))

코드를 계속 진행하는 데 도움을 주시면 대단히 감사하겠습니다. 이것이 바로 시작이었습니다. 두 개의 양초를 연속으로 키운 후 같은 원리로 3, 4 등을 계산하고 싶습니다. 성장하는 촛불. 분명히 여기에서 촛불을 찾아주기를 통해 필요합니다. 맞습니까? 그리고 이것은 여전히 나에게 달려 있지 않습니다. 당신은 공유되는 것에서 주기에 가지 않습니다. :)))

 

연기

VladimirR 2011년 7월 29일 23:02 편집 | 삭제

안녕하세요. 마침내, 나는 나의 첫 번째 Expert Advisor를 썼습니다! 나는 그것이 어떻게 작동하는지 잘 이해하지 못합니다. Expert Advisor는 특정 조건이 충족될 때 2개의 보류 주문을 넣습니다. 이 경우 두 주문에 대한 손절매는 보류 중인 매도(매수) 주문에 대해 높음[1](낮음[1])이고 이익실현은 항상 손절매 포인트와 동일합니다. 게다가 전략 테스터에서 이익이 항상 스탑 포인트와 같지 않다는 것을 알게 되었는데 어떻게 나오는지 알려주세요. 다음은 스탑 오더가 계산되는 코드입니다(프로그램에서 스탑이 변경되지 않는 다른 위치는 없습니다)

 //-2-анализ на установку buystop---------------------------------------------------------------------------------+
   if (Close[ 1 ]>=MA_17 && MA_3<=MA_17)
   {
    deposit_order=true;
    type_order = 4 ;
    open_price =High[ 1 ];
    stop_loss  =Low[ 1 ];
    take_profit= NormalizeDouble ( MathAbs ( 2 *open_price-stop_loss), Digits );
     if (Lot== 0 ) Lot= MarketInfo (symb,MODE_MINLOT);
   }
 //-3-анализ на установку sellstop-------------------------------------------------------------------------------+  
   if (Close[ 1 ]<=MA_17 && MA_3>=MA_17)
    {
     deposit_order=true;
     type_order   = 5 ;
     open_price   =Low[ 1 ];
     stop_loss    =High[ 1 ];
     take_profit  = NormalizeDouble ( MathAbs ( 2 *open_price-stop_loss), Digits );
     if (Lot== 0 )Lot= MarketInfo (symb,MODE_MINLOT);
    }

 
nadya :
좋은 오후에요! 말해 주세요 . 함수 내부의 여러 전역 변수에 값을 할당할 수 있습니까? 이 경우 이러한 변수를 어디에 선언해야 합니까?

가능합니다 .

전역 수준에서 변수를 선언하십시오 - start() 함수 이전에. EA 함수 내에서 원하는 대로 값을 변경합니다. 함수에서 반환된 후 이러한 변수는 다시 어딘가에서 변경할 때까지 함수 내에서 할당한 값을 갖습니다.

 
nadya :
좋은 오후에요! 말해 주세요. 함수 내부의 여러 전역 변수에 값을 할당할 수 있습니까? 이 경우 이러한 변수를 어디에 선언해야 합니까?

예시. 함수 myfunction 내에서 두 개의 전역 변수 에 값을 할당합니다. 따라서 3, 4 및 n번째 변수에 값을 할당할 수 있습니다.

 int global1 = 1 ;
int global2 = 2 ;

void myfunction( int g1, int g2)
{
   global1 = g1;
   global2 = g2;
}

int start()
{
   // До выполнения функции:     global1=1, global2=2   <---  то что объявили в начале кода
   
   myfunction( 3 , 4 );
   
   // После выполнения функции:  global1=3, global2=4   <---  то что присвоили в функции
}

근데 질문에 뭔가 문제가 있는거 같은데...

 
Code :


네, 그건 그렇고, 제가 스스로 알아냈습니다. 히스토그램이 아니라 선이 그려져 있다는 점은 고려하지 않았습니다. 선은 2점이 필요합니다. 코드는 모든 옵션을 설명하지 않고 연속적으로 2개의 성장하는 양초만 설명하기 때문에 두 번째 성장하는 양초 이후에 하향 양초가 나타나면 칠면조는 아무 것도 그리지 않았습니다. 그리고 그는 옳은 일을 했습니다. 그걸 알아냈을 때 히스토그램으로 변경했는데 거기에 모든 것이 그려져 있습니다.

그건 그렇고, 당신은 덧셈과 뺄셈의 규칙에 대한 내 추론을 마음에 들지 않고 실험이라고 생각하십시오. :)))

그리고 코드를 계속 진행하는 데 도움을 주시면 대단히 감사하겠습니다. 이것이 바로 시작이었습니다. 두 개의 양초를 연속으로 키운 후 같은 원리로 3, 4 등을 계산하고 싶습니다. 성장하는 촛불. 분명히 여기에서 촛불을 찾아주기를 통해 필요합니다. 맞습니까? 그리고 지금까지 나는 그것을 할 수 없습니다. 당신은 공유되는 것에서 주기에 가지 않습니다. :)))

네. 그러나 이 문제를 해결하려면 "for" 카운터가 있는 루프보다 "while" 사후 전제 조건이 있는 루프를 사용하는 것이 가장 좋습니다. 얼마나 많은 강세 또는 약세 양초를 연속으로 만날지 알 수 없기 때문입니다.

그 일이 당신에게 너무 어렵게 느껴진다면 더 쉬운 일부터 시작하십시오. 예를 들어 단계 s를 사용하여 a에서 b까지의 숫자를 표시합니다. 또는 주기를 사용하여 숫자 n의 계승을 찾습니다.

그리고 자료를 통합하려면 두 가지 유형의 루프("for" 및 "while")를 사용하여 이러한 문제를 해결하십시오. 그런 다음 지표를 구체화할 수 있습니다.

 

MaxZ 언어에는 사후 루프가 없습니다.

다른 사람들을 돕고자 하는 당신의 열망은 칭찬할 만하지만, 그러기 위해서는 여전히 당신 자신이 언어를 더 잘 알아야 합니다.

 
Mathemat :
언어에는 사후 루프가 없습니다.

루프를 다음과 같이 구성하면 사후 조건이 있는 것으로 나타납니다.

 int i = 0 ;
while ( True )
{
   i++;
   if (i == 10 ) break ;
}

그러나 나는 당신의 수정안을 받아들입니다. 고맙습니다. MQL4 언어에는 "for"(카운터 포함) 및 "while"(사전 조건 포함)의 두 가지 유형의 루프가 있기 때문입니다. 세 번째 유형(사후 조건 포함)은 의도적으로만 구성할 수 있습니다.


수학 :

다른 사람들을 돕고자 하는 당신의 열망은 칭찬할 만하지만, 그러기 위해서는 여전히 당신 자신이 언어를 더 잘 알아야 합니다.

내가 모르는 것은, 나는 거기에 가지 않습니다 ...

그리고 다른 모든 실수는 부주의로 인해 발생했습니다. 최근에 정신이 없었어요... 그리고 사람들을 돕고 싶어요.

 

MaxZ : Единственная проблема состоит в том, что если советник с данным кодом запустить в тестере, а переменной PERIOD присвоить значение PERIOD_M1, то обе функции iBarShift возвращают -1, т.е. функции не удалось найти в истории бар на ТФ M1 с таким временем... Почему так происходит, не знаю.

대부분의 경우 이 기능은 테스터에서 모델링되지 않았습니다(확인하지 않음). 또한, exact(함수의 네 번째 매개변수)는 기본적으로 false로 설정됩니다.
 
Mathemat :
대부분의 경우 이 기능은 테스터에서 모델링되지 않았습니다(확인하지 않음). 또한, exact(함수의 네 번째 매개변수)는 기본적으로 false로 설정됩니다.
나는 이미 그것을 알아 냈습니다 ... 문제는 이야기에있었습니다. 테스트 기간 동안 M1 막대의 이력이 없었습니다.