초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 589

 
admoon :



표시기를 단계별로 확인할 때 {} 뒤에 있고 W가 없는 서브루틴에서 작업 바운스를 찾았습니다. 문제의 본질을 명확히 하기 위해 단순화된 코드를 제공합니다.

//--- 입력 매개변수

입력 정수 w=10;

//---

{

정수 나;

//---

정수=0;

for(i=0;i<=w;i++)if(w==10){co++; 경고(공동);}

//--- 다음 호출을 위해 prev_calculated의 반환 값

반환(요금 합계);

}

결과(arlets):

2016.05.30 00:45:14.064 1 (EURUSD,H1) 11

2016.05.30 01:10:35.972 1 (EURUSD,H1) 10

........... 등. 1까지.

2016.05.30 00:45:14.064 1 (EURUSD,H1) 1

규칙: 괄호 안의 표현식이 참이면 statement1이 실행됩니다.

코드에서 statement1은 항상 실행됩니다.

내 생각에 if()는 괄호 안의 조건이 참일 때 한 번만 작동해야 합니다. 그리고 실제로는 조건을 확인할 때마다 동작하며, {}의 모든 표현식은 각 단계와 츄 머신 시간에서 실행됩니다.

질문: 주기 동안 CO 변수가 0에서 11로 증가한 이유는 무엇입니까? 경고가 모든 단계에서 실행되는 이유는 무엇입니까?

글쎄, 당신은 당신에게 무언가를 얼마나 반복 할 수 있습니까?

봐: w는 10이고,
w가 10인지 확인합니다. "if(w==10){co++; Alert (co);}" 이 표현식이 사실이라고 생각하십니까?
그러면 왜 질문이 있습니까?

 
admoon :



표시기를 단계별로 확인할 때 {} 뒤에 있고 W가 없는 서브루틴에서 작업 바운스를 찾았습니다. 문제의 본질을 명확히 하기 위해 단순화된 코드를 제공합니다.

//--- 입력 매개변수

입력 정수 w=10;

//---

{

정수 나;

//---

정수 co=0;

for(i=0;i<=w;i++)if(w==10){co++; 경고(공동);}

//--- 다음 호출을 위해 prev_calculated의 반환 값

반환(요금 합계);

}

결과(arlets):

2016.05.30 00:45:14.064 1 (EURUSD,H1) 11

2016.05.30 01:10:35.972 1 (EURUSD,H1) 10

........... 등. 1까지.

2016.05.30 00:45:14.064 1 (EURUSD,H1) 1

규칙: 괄호 안의 표현식이 참이면 statement1이 실행됩니다.

코드에서: statement1은 항상 실행됩니다.

내 생각에 if()는 괄호 안의 조건이 참일 때 한 번만 작동해야 합니다. 그리고 실제로는 조건을 확인할 때마다 동작하며, {}의 모든 표현식은 각 단계와 츄 머신 시간에서 실행됩니다.

질문: 주기 동안 CO 변수가 0에서 11로 증가한 이유는 무엇입니까? 경고가 모든 단계에서 실행되는 이유는 무엇입니까?

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

오류, 버그, 질문

안드레이 바리노프 , 2016.05.30 10:38

분명히 코드에 오타가 있고 다음과 같이 작성하고 싶었습니다.

 int i;
//---
   int co= 0 ;
   for (i= 0 ;i<=w;i++)
     {
       if (i== 10 )
        {
         co++; 
         Alert (co);
        }
     }
//--- return value of prev_calculated for next call
   return (rates_total);

 
안녕하세요 주님! 나는 고문을 작성하는 데 작은 문제가있었습니다 ((어드바이저는 대부분의 경우 모든 것이 정상이지만 때로는 현재 가격에 매우 근접한 주문을 열어야하므로 가능한 한 닫히기 위해 보류중인 주문을 작성하는 방법은 무엇입니까?
 
barudkinarseniy :
안녕하세요 주님! 나는 고문을 작성하는 데 작은 문제가있었습니다 ((어드바이저는 대부분의 경우 모든 것이 정상이지만 때로는 현재 가격에 매우 근접한 주문을 열어야하므로 가능한 한 닫히기 위해 보류중인 주문을 작성하는 방법은 무엇입니까?
눈치 챈 것 같다) 관심 있는 사람 있으면 이렇게 나왔다
 double ilow = iLow ( Symbol (),TimeFrames_3, 1 );
 double ihigh = iHigh ( Symbol (),TimeFrames_3, 1 );
 
 double OpenPriceBuy = NormalizeDouble ( MathMax (ihigh, Ask + Point * SymbolInfoInteger ( Symbol (), SYMBOL_TRADE_STOPS_LEVEL )), Digits );
 double OpenPriceSell = NormalizeDouble ( MathMin (ilow, Bid - Point * SymbolInfoInteger ( Symbol (), SYMBOL_TRADE_STOPS_LEVEL )), Digits );
 
 int StepST = ( int ) MathMax (OpenPriceBuy - OpenPriceSell, SymbolInfoInteger ( Symbol (), SYMBOL_TRADE_STOPS_LEVEL ));
 double lots = LotsByRisk(StepST);
 
Artyom Trishkin :

글쎄, 당신은 당신에게 무언가를 얼마나 반복 할 수 있습니까?

봐: w는 10이고,
w가 10인지 확인합니다. "if(w==10){co++; Alert(co);}" 이 표현식이 사실이라고 생각하십니까?
그러면 왜 질문이 있습니까?

어리석은 질문에 대해 사과하고 인내와 이해에 감사드립니다. 프로브의 기계적 전달을 요약하면 if(w==10){ Alert (I,"/",F); 단계에서 오류를 찾는 프로그램에서. 자신의 원인에 대한 이해 부족의 벽에 부딪힐 때 발생하지만, 잠시 문제에서 한 발짝 물러나면 말그대로 문제가 저절로 해결된다. 그리고 "바운스"로 인식되었던 것은 실제로 프로그램의 다른 부분에서 설명되지 않은 요청으로 밝혀졌습니다. 감사합니다, 블라디미르.

 

안녕하세요, 수학을 도와주세요.

첫 번째 위치의 제비를 알고 있고 각 새 위치의 제비가 산술 진행으로 증가한다는 사실이 있는 경우 다섯 번째 위치의 제비가 무엇인지 알아내는 방법.

두 번째 옵션인 로트는 기하급수적 으로 증가합니다.

 
mila.com :

안녕하세요, 수학을 도와주세요.

첫 번째 위치의 제비를 알고 있고 각 새 위치의 제비가 산술 진행으로 증가한다는 사실이 있는 경우 다섯 번째 위치의 제비가 무엇인지 알아내는 방법.

두 번째 옵션인 로트는 기하급수적으로 증가합니다.

구글에서 금지? 공감합니다 왜이렇게 잔인하세요? ))

산술 진행은 공식에 의해 주어집니다

기하학적 진행은 공식에 의해 주어집니다.

 

이론상으로는 첫 번째 옵션의 경우 첫 번째 로트에 5를 곱하면 충분합니다.

두 번째 옵션의 경우: 많은 첫 번째 위치* 계수*5 …그러나

 
mila.com :

이해가 되지 않습니다. 이론상 첫 번째 옵션의 경우 첫 번째 로트에 5를 곱하면 충분합니다.

두 번째 옵션의 경우 첫 번째 위치* 계수*5의 로트 ...하지만

아무것도, 나는 학교에서 수학을 잊었다)) 나는 수학에 관한 책을 팠고, 나는 rif의 정의를 다시 인쇄했다. 진행, 여기에 더 명확하게 기록됩니다.

--------------

두 번째부터 시작하는 일련의 숫자는 차분 산술이라고 하는 상수 d를 추가하여 이전 숫자에서 얻습니다. 음식물.

첫 번째 항이 a1이면 산술 연산입니다. 음식물. 길이 n의 형식은 다음과 같습니다.

a1, a1+d, a1+2*d, ...., a1 + n*d

MQL 코드는 이렇습니다. 간단한 예제를 던졌습니다.

 #define LEN 5 // задали длину последовательности

int start()
{
     int d = 4 ;     // это разность, любое значение
     int a[LEN];   // тут храним ариф. посл.
    a[ 0 ] = 3 ;     // любое стартовое значение, задаете сами
     Print ( 0 , "  " , a[ 0 ]);

     for ( int n = 1 ; n < 4 ; n++)
    {
       a[n] = a[ 0 ] + (n*d);
       Print (n, "  " , a[n]);
    }
}

2016.05 . 31 23 : 08 : 52.433 ChangeTimeFrame EURUSD.e,M1: 3    15
2016.05 . 31 23 : 08 : 52.433 ChangeTimeFrame EURUSD.e,M1: 2    11
2016.05 . 31 23 : 08 : 52.433 ChangeTimeFrame EURUSD.e,M1: 1    7
2016.05 . 31 23 : 08 : 52.433 ChangeTimeFrame EURUSD.e,M1: 0    3
 
Alexey Volchanskiy :

아무것도, 나는 학교에서 수학을 잊어 버렸습니다))

산책을 한 다음 기하학 프로그램의 코드를 보겠습니다. 쓰다
사유: