granit77 : 스위치를 기성품 어레이로 교체할 예정인데, 해변 시간에 미리 정의된 값을 할당하는 이유는 무엇입니까?
감사합니다 더 구체적으로 말씀해주실 수 있나요? 결국 여기에 미리 정의된 값은 기간이 있지만 지표에 따라 다음 코드가 다를 수 있습니다... 코드를 조금 더 배치하는 것이 아마도 더 쉬울 것입니다... :) 일반적으로 오늘은 매우 어렵다고 생각합니다. - 밤에 잠도 못자고 아직 멀었어요...
int AnaliseFunc ( string sy, int tf)
{
CurAsk =MarketInfo(Symbol(),MODE_ASK);
CurBid =MarketInfo(Symbol(),MODE_BID);
OpnPrice =iOpen(NULL,PERIOD_M5, 0 );
OpnPrice1=iOpen(NULL,PERIOD_M5, 1 );
ClsPrice1=iClose(NULL,PERIOD_M5, 1 );
if (sy== "" || sy== "0" ) sy=Symbol();
double
BB_1 =iCustom(sy,tf, "BB_MA" , 13 , 1 , 1 , 1 ),
BB_2 =iCustom(sy,tf, "BB_MA" , 13 , 1 , 1 , 2 ),
BB_3 =iCustom(sy,tf, "BB_MA" , 13 , 1 , 1 , 3 ),
AO1 =iAO(sy,tf, 1 ),
AO2 =iAO(sy,tf, 2 ),
AO3 =iAO(sy,tf, 3 ),
AC1 =NormalizeDouble(iAC(sy,tf, 1 ), 8 )* 1000 ,
AC2 =NormalizeDouble(iAC(sy,tf, 2 ), 8 )* 1000 ,
AC3 =NormalizeDouble(iAC(sy,tf, 3 ), 8 )* 1000 ,
AC4 =NormalizeDouble(iAC(sy,tf, 4 ), 8 )* 1000 ,
AC5 =NormalizeDouble(iAC(sy,tf, 5 ), 8 )* 1000 ,
SpMan1=iCustom(sy,tf, "SpearmanRankCorr" , 14 , 1000 , 30 , true , 0 , 1 ),
SpMan2=iCustom(sy,tf, "SpearmanRankCorr" , 14 , 1000 , 30 , true , 0 , 2 ),
DeM_1 =iDeMarker(sy,tf, 14 , 1 ),
DeM_2 =iDeMarker(sy,tf, 14 , 2 ),
Mom_1 =iMomentum(sy,tf, 14 ,PRICE_CLOSE, 1 ),
Mom_2 =iMomentum(sy,tf, 14 ,PRICE_CLOSE, 2 ),
Mom_3 =iMomentum(sy,tf, 14 ,PRICE_CLOSE, 3 );
//---------------- Проверка на разворот BB_MA ------------------------------------------------------- if (BB_1>BB_2 && BB_2<=BB_3 && BB_1< 0 ) // Найден разворот BB вверх
{
switch (tf)
{
case1 : TrBBTurnUP_M1 = true ; TrBBTurnDN_M1= false ; // Флаг разворота вверх на М1case5 : TrBBTurnUP_M5 = true ; TrBBTurnDN_M5= false ; // Флаг разворота вверх на М5case15 : TrBBTurnUP_M15= true ; TrBBTurnDN_M15= false ; // Флаг разворота вверх на М15 case30 : TrBBTurnUP_M30= true ; TrBBTurnDN_M30= false ; // Флаг разворота вверх на М30 case60 : TrBBTurnUP_H1 = true ; TrBBTurnDN_H1= false ; // Флаг разворота вверх на H1case240 : TrBBTurnUP_H4 = true ; TrBBTurnDN_H4= false ; // Флаг разворота вверх на H4case1440 : TrBBTurnUP_D1 = true ; TrBBTurnDN_D1= false ; // Флаг разворота вверх на D1case10080 : TrBBTurnUP_W1 = true ; TrBBTurnDN_W1= false ; // Флаг разворота вверх на W1case43200 : TrBBTurnUP_MN = true ; TrBBTurnDN_MN= false ; // Флаг разворота вверх на MN
}
}
if (BB_1<BB_2 && BB_2>=BB_3 && BB_1> 0 ) // Найден разворот BB вниз
{
switch (tf)
{
case1 : TrBBTurnUP_M1 = false ; TrBBTurnDN_M1= true ; // Флаг разворота вниз на М1case5 : TrBBTurnUP_M5 = false ; TrBBTurnDN_M5= true ; // Флаг разворота вниз на М5case15 : TrBBTurnUP_M15= false ; TrBBTurnDN_M15= true ; // Флаг разворота вниз на М15 case30 : TrBBTurnUP_M30= false ; TrBBTurnDN_M30= true ; // Флаг разворота вниз на М30 case60 : TrBBTurnUP_H1 = false ; TrBBTurnDN_H1= true ; // Флаг разворота вниз на H1case240 : TrBBTurnUP_H4 = false ; TrBBTurnDN_H4= true ; // Флаг разворота вниз на H4case1440 : TrBBTurnUP_D1 = false ; TrBBTurnDN_D1= true ; // Флаг разворота вниз на D1case10080 : TrBBTurnUP_W1 = false ; TrBBTurnDN_W1= true ; // Флаг разворота вниз на W1case43200 : TrBBTurnUP_MN = false ; TrBBTurnDN_MN= true ; // Флаг разворота вниз на MN
}
}
//---------------------- Проверка на разворот Momentum -----------------------------------------------if (Mom_1>Mom_2 && Mom_2<=Mom_3 && Mom_1< 100.0 )
{
switch (tf)
{
case1 : TrMomTurnUP_M1 = true ; TrMomTurnDN_M1= false ; // Флаг разворота вверх на М1case5 : TrMomTurnUP_M5 = true ; TrMomTurnDN_M5= false ; // Флаг разворота вверх на М5case15 : TrMomTurnUP_M15= true ; TrMomTurnDN_M15= false ; // Флаг разворота вверх на М15 case30 : TrMomTurnUP_M30= true ; TrMomTurnDN_M30= false ; // Флаг разворота вверх на М30 case60 : TrMomTurnUP_H1 = true ; TrMomTurnDN_H1= false ; // Флаг разворота вверх на H1case240 : TrMomTurnUP_H4 = true ; TrMomTurnDN_H4= false ; // Флаг разворота вверх на H4case1440 : TrMomTurnUP_D1 = true ; TrMomTurnDN_D1= false ; // Флаг разворота вверх на D1case10080 : TrMomTurnUP_W1 = true ; TrMomTurnDN_W1= false ; // Флаг разворота вверх на W1case43200 : TrMomTurnUP_MN = true ; TrMomTurnDN_MN= false ; // Флаг разворота вверх на MN
}
}
if (Mom_1<Mom_2 && Mom_2>=Mom_3 && Mom_1> 100.0 )
{
switch (tf)
{
case1 : TrMomTurnUP_M1 = false ; TrMomTurnDN_M1= true ; // Флаг разворота вверх на М1case5 : TrMomTurnUP_M5 = false ; TrMomTurnDN_M5= true ; // Флаг разворота вверх на М5case15 : TrMomTurnUP_M15= false ; TrMomTurnDN_M15= true ; // Флаг разворота вверх на М15 case30 : TrMomTurnUP_M30= false ; TrMomTurnDN_M30= true ; // Флаг разворота вверх на М30 case60 : TrMomTurnUP_H1 = false ; TrMomTurnDN_H1= true ; // Флаг разворота вверх на H1case240 : TrMomTurnUP_H4 = false ; TrMomTurnDN_H4= true ; // Флаг разворота вверх на H4case1440 : TrMomTurnUP_D1 = false ; TrMomTurnDN_D1= true ; // Флаг разворота вверх на D1case10080 : TrMomTurnUP_W1 = false ; TrMomTurnDN_W1= true ; // Флаг разворота вверх на W1case43200 : TrMomTurnUP_MN = false ; TrMomTurnDN_MN= true ; // Флаг разворота вверх на MN
}
}
//---------------------- Проверка DeMarker на перепроданность/перекупленность ---------
알다시피, 절대적으로 동일한 코드가 계속 반복되지만 다른 지표의 거래 기준에 대한 검사는 이미 수행되고 있습니다... 모든 칠면조에 대한 모든 검사를 벼락치기로 채우려는 욕망이 있을 뿐입니다. 하나의 분석 블록에서 Expert Advisor에서 사용되어 틱당 한 번씩 값을 계산하고 변수에 입력한 다음 변수 자체의 값을 사용하여 거래 결정을 내립니다. 다음은 미리 정의된 값 배열을 사용하여 구성하는 방법입니다. 알아낼 수 없습니다...
감사합니다 더 구체적으로 말씀해주실 수 있나요? 결국 여기에 미리 정의된 값은 타임프레임이지만, 지표에 따라 뒤따르는 코드는 다르겠지만... 코드를 조금 더 배치하는 것이 아마도 더 쉬울 것입니다... :) 일반적으로, 오늘은 매우 어렵다고 생각합니다. - 나는 밤에 잠을 잘 수 없었고 여전히 림보에 있습니다 ...
알다시피, 절대적으로 동일한 코드가 계속 반복되지만 다른 지표의 거래 기준에 대한 검사는 이미 수행되고 있습니다... 모든 칠면조에 대한 모든 검사를 벼락치기로 채우려는 욕망이 있을 뿐입니다. 하나의 분석 블록에서 Expert Advisor에서 사용되어 틱당 한 번씩 값을 계산하고 변수에 입력한 다음 변수 자체의 값을 사용하여 거래 결정을 내립니다. 다음은 미리 정의된 값 배열을 사용하여 구성하는 방법입니다. 알아낼 수 없습니다...
아마도 계산의 우선 순위를 선택해야 할 수도 있습니다. 당신이 가지고있는 것처럼
(BB_1<0 )이 첫 번째 필수 조건으로 오면 나머지 BB_를 계산할 필요가 없습니다. 음, 두 번째 if에서 BB_의 필요한 계산을 수행하고 첫 번째 조건이 충족되면 복합으로 간주합니다. if가 실행되었고 if ... else는 매우 효율적으로 구성됩니다.
(BB_1<0 )이 첫 번째 필수 조건으로 오면 나머지 BB_를 계산할 필요가 없습니다. 음, 두 번째 if에서 BB_의 필요한 계산을 수행하고 첫 번째 조건이 충족되면 복합으로 간주합니다. if가 실행되었고 if ... else는 매우 효율적으로 구성됩니다.
코드가 줄 수가 많아지고 가독성이 떨어지겠지만 성능은 향상될 것이라는 데 동의합니다.
Igor에게 감사합니다. 무슨 일이 일어나는지 지켜보겠습니다. 나는 조금 다른 것을 의미합니다... 나는 1991-94년 사이에 국가의 컴퓨터화가 시작되던 때를 기억합니다. 정확히 기억은 나지 않습니다... 저는 ZX Spectrum용 어셈블러로 프로그래밍하고 있었습니다... 엄청나게 느리고 64Kb의 메모리가 제한되어 있습니다... 그래서 프로세서가 이 영역에 16386Kb의 빠른 출력을 위해 화면 메모리 영역과 함께 작업하라는 명령이 있었습니다. 문서화된 프로세서 명령은 대규모 데이터 배열 작업 중 가장 빨랐습니다. 그리고 당신은 그것으로 아무 것도 할 수없는 것처럼 보이지만 아니 ... 그들은 출력 속도를 4 배 높일 수있는 방법을 찾았습니다. 스택 작업을 위한 명령이 있었기 때문에 훨씬 빠르게 실행되었습니다. 그들은 이것을 했습니다: 그들은 스크린 1 직후에 사용되지 않은 메모리 영역으로 스택을 옮기고 이 영역을 그래프로 채웠습니다. 그런 다음 이미 스택을 화면으로 옮기고 스택을 채우라는 명령으로 메모리에 준비된 화면을 화면 영역으로 빠르게 던졌습니다. ...
여기가 제가 비표준 작업 방식에 관심이 있는 곳입니다... 글쎄요, 어떤 명령이 몇 주기로 실행되는지 확인하고 유사한 것을 구성하는 것과 같습니다... 논리적 비교 명령을 대체할 수 있는 것은 아마도 빼기 거기 또는 같은 맥락의 다른 것 ....
이것은 내가 비표준 작업 방법에 관심이 있는 곳입니다 ... 글쎄, 그것은 몇 사이클 동안 어떤 명령이 실행되는지 확인하고 비슷한 것을 구성하는 것과 같습니다 ... 논리적 비교 명령을 대체 할 수있는 것은 무엇입니까, 거기에서 빼기, 또는 같은 정신으로 다른 무엇 ....
나는 당신이 mql에서 그러한 정보를 찾지 못할 것이라고 생각합니다. 작업 원칙에 따르면 C 구문을 사용하는 Java처럼 보입니다. 어떤 경우인지 테스트하려고 시도합니다. 아니면 더 빠른지, 터보파스칼에서 기억합니다.
당신을 방문하는 방법? 질문이 많아서 상담하고 싶습니다.
스위치를 기성품 어레이로 교체할 예정인데, 해변 시간에 미리 정의된 값을 할당하는 이유는 무엇입니까?
감사합니다 더 구체적으로 말씀해주실 수 있나요? 결국 여기에 미리 정의된 값은 기간이 있지만 지표에 따라 다음 코드가 다를 수 있습니다... 코드를 조금 더 배치하는 것이 아마도 더 쉬울 것입니다... :) 일반적으로 오늘은 매우 어렵다고 생각합니다. - 밤에 잠도 못자고 아직 멀었어요...
알다시피, 절대적으로 동일한 코드가 계속 반복되지만 다른 지표의 거래 기준에 대한 검사는 이미 수행되고 있습니다... 모든 칠면조에 대한 모든 검사를 벼락치기로 채우려는 욕망이 있을 뿐입니다. 하나의 분석 블록에서 Expert Advisor에서 사용되어 틱당 한 번씩 값을 계산하고 변수에 입력한 다음 변수 자체의 값을 사용하여 거래 결정을 내립니다. 다음은 미리 정의된 값 배열을 사용하여 구성하는 방법입니다. 알아낼 수 없습니다...감사합니다 더 구체적으로 말씀해주실 수 있나요? 결국 여기에 미리 정의된 값은 타임프레임이지만, 지표에 따라 뒤따르는 코드는 다르겠지만... 코드를 조금 더 배치하는 것이 아마도 더 쉬울 것입니다... :) 일반적으로, 오늘은 매우 어렵다고 생각합니다. - 나는 밤에 잠을 잘 수 없었고 여전히 림보에 있습니다 ...
알다시피, 절대적으로 동일한 코드가 계속 반복되지만 다른 지표의 거래 기준에 대한 검사는 이미 수행되고 있습니다... 모든 칠면조에 대한 모든 검사를 벼락치기로 채우려는 욕망이 있을 뿐입니다. 하나의 분석 블록에서 Expert Advisor에서 사용되어 틱당 한 번씩 값을 계산하고 변수에 입력한 다음 변수 자체의 값을 사용하여 거래 결정을 내립니다. 다음은 미리 정의된 값 배열을 사용하여 구성하는 방법입니다. 알아낼 수 없습니다...아마도 계산의 우선 순위를 선택해야 할 수도 있습니다. 당신이 가지고있는 것처럼
(BB_1<0 )이 첫 번째 필수 조건으로 오면 나머지 BB_를 계산할 필요가 없습니다. 음, 두 번째 if에서 BB_의 필요한 계산을 수행하고 첫 번째 조건이 충족되면 복합으로 간주합니다. if가 실행되었고 if ... else는 매우 효율적으로 구성됩니다.
코드가 줄 수가 많아지고 가독성이 떨어지겠지만 성능은 향상될 것이라는 데 동의합니다.
아마도 계산의 우선 순위를 선택해야 할 수도 있습니다. 당신이 가지고있는 것처럼
(BB_1<0 )이 첫 번째 필수 조건으로 오면 나머지 BB_를 계산할 필요가 없습니다. 음, 두 번째 if에서 BB_의 필요한 계산을 수행하고 첫 번째 조건이 충족되면 복합으로 간주합니다. if가 실행되었고 if ... else는 매우 효율적으로 구성됩니다.
코드가 줄 수가 많아지고 가독성이 떨어지겠지만 성능은 향상될 것이라는 데 동의합니다.
Igor에게 감사합니다. 무슨 일이 일어나는지 지켜보겠습니다. 나는 조금 다른 것을 의미합니다... 나는 1991-94년 사이에 국가의 컴퓨터화가 시작되던 때를 기억합니다. 정확히 기억은 나지 않습니다... 저는 ZX Spectrum용 어셈블러로 프로그래밍하고 있었습니다... 엄청나게 느리고 64Kb의 메모리가 제한되어 있습니다... 그래서 프로세서가 이 영역에 16386Kb의 빠른 출력을 위해 화면 메모리 영역과 함께 작업하라는 명령이 있었습니다. 문서화된 프로세서 명령은 대규모 데이터 배열 작업 중 가장 빨랐습니다. 그리고 당신은 그것으로 아무 것도 할 수없는 것처럼 보이지만 아니 ... 그들은 출력 속도를 4 배 높일 수있는 방법을 찾았습니다. 스택 작업을 위한 명령이 있었기 때문에 훨씬 빠르게 실행되었습니다. 그들은 이것을 했습니다: 그들은 스크린 1 직후에 사용되지 않은 메모리 영역으로 스택을 옮기고 이 영역을 그래프로 채웠습니다. 그런 다음 이미 스택을 화면으로 옮기고 스택을 채우라는 명령으로 메모리에 준비된 화면을 화면 영역으로 빠르게 던졌습니다. ...
여기가 제가 비표준 작업 방식에 관심이 있는 곳입니다... 글쎄요, 어떤 명령이 몇 주기로 실행되는지 확인하고 유사한 것을 구성하는 것과 같습니다... 논리적 비교 명령을 대체할 수 있는 것은 아마도 빼기 거기 또는 같은 맥락의 다른 것 ....
이것은 내가 비표준 작업 방법에 관심이 있는 곳입니다 ... 글쎄, 그것은 몇 사이클 동안 어떤 명령이 실행되는지 확인하고 비슷한 것을 구성하는 것과 같습니다 ... 논리적 비교 명령을 대체 할 수있는 것은 무엇입니까, 거기에서 빼기, 또는 같은 정신으로 다른 무엇 ....
나는 당신이 mql에서 그러한 정보를 찾지 못할 것이라고 생각합니다. 작업 원칙에 따르면 C 구문을 사용하는 Java처럼 보입니다. 어떤 경우인지 테스트하려고 시도합니다. 아니면 더 빠른지, 터보파스칼에서 기억합니다.
스크립트에서 어드바이저에게 종료 명령을 보낼 수 있습니까?
할 수 있다. 예를 들어, 전역 변수 를 특정 상태로 설정하는 스크립트를 사용하여 어드바이저를 관리합니다. 이 변수의 상태
Expert Advisor에서 분석하고 필요한 명령을 실행합니다.