포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 1063

 
mould :
이 모드를 활성화하는 방법?

왼쪽 하단의 테스터 창에서 확인란을 선택해야 합니다.

 

안녕하세요 친애하는 고수님들.

내가 올바른 길을 가고 있는지 말해줘?

목적: MA로부터의 거리에 따라 가변 로트 크기를 도입합니다.

입력 매개변수에서:

외부 이중 Lot1 = 0.01; // 첫 번째 로트 옵션
외부 이중 Lot2 = 0.03; // 두 번째 로트 옵션
extern int 거리 = 20; // SlowMA로부터의 거리

Ma는 전문가의 몸에서 확인되었습니다.

이중 SlowMA = iMA(NULL,60, periodSlowMA ,0,MODE_EMA,PRICE_MEDIAN,0);

다음으로 조건이 필요합니다. 실제 가격(방향에 따라 Bid 또는 Ask)이 Distant 크기까지인 경우 첫 번째 로트 크기를 사용하고 더 크면 두 번째 로트 크기를 사용합니다.

가장 먼저 떠오른 것:

if (Ask-SlowMA<거리) 로트 == 로트1;
if (SlowMA-Bid<Distan) Lot == Lot1;
if (Ask-SlowMA>Distan) Lot == Lot2;
if (SlowMA-Bid>Distan) Lot == Lot2;

하지만 작동하지 않습니다. 오류는 로트와 관련이 있거나 일반 논리에 있습니다.

미리 감사드립니다.

 
delf699 :

안녕하세요 친애하는 고수님들.

내가 올바른 길을 가고 있는지 말해줘?

목적: MA로부터의 거리에 따라 가변 로트 크기를 도입합니다.

입력 매개변수에서:

외부 이중 Lot1 = 0.01; // 첫 번째 로트 옵션
외부 이중 Lot2 = 0.03; // 두 번째 로트 옵션
extern int 거리 = 20; // SlowMA로부터의 거리

Ma는 전문가의 몸에서 확인되었습니다.

이중 SlowMA = iMA(NULL,60,periodSlowMA,0,MODE_EMA,PRICE_MEDIAN,0);

다음으로 조건이 필요합니다. 실제 가격(방향에 따라 Bid 또는 Ask)이 Distant 크기까지인 경우 첫 번째 로트 크기를 사용하고 더 크면 두 번째 로트 크기를 사용합니다.

가장 먼저 떠오른 것:

if (Ask-SlowMA<거리) 로트 == 로트1;
if (SlowMA-Bid<Distan) Lot == Lot1;
if (Ask-SlowMA>Distan) Lot == Lot2;
if (SlowMA-Bid>Distan) Lot == Lot2;

하지만 작동하지 않습니다. 오류는 로트와 관련이 있거나 일반 논리에 있습니다.

미리 감사드립니다.

Ask-SlowMA가 Distan보다 클 수 있을 때 Ask, Bid 및 SlowMA는 무엇을 의미합니까?
 

Bid 및 Ask는 마지막으로 알려진 구매 및 판매 가격, 즉 현재 가격입니다.

SlowMA는 내 이름이 Ma입니다.

(이중 SlowMA = iMA(NULL,60,periodSlowMA,0,MODE_EMA,PRICE_MEDIAN,0);)

스윙(SlowMA)에서 현재 가격(Bid 또는 Ask)의 편차는 Distans보다 크거나 작을 수 있습니다. 이에 따라 첫 번째 또는 두 번째 로트 크기를 설정해야 합니다.

나는 보증금이나 미결 주문 수에서 로트를 변경하는 옵션을 찾았지만 그러한 선형 지표에서 어떤 식 으로든 무언가를 찾았습니다.

절대값을 반환하는 또 다른 함수가 필요하다는 말이 있습니다. 즉, 음수에 적용하면 결과적으로 양수를 얻습니다.

 
delf699 :

Bid 및 Ask는 마지막으로 알려진 구매 및 판매 가격, 즉 현재 가격입니다.

SlowMA는 내 이름이 Ma입니다.

(이중 SlowMA = iMA(NULL,60,periodSlowMA,0,MODE_EMA,PRICE_MEDIAN,0);)

스윙(SlowMA)에서 현재 가격(Bid 또는 Ask)의 편차는 Distans보다 크거나 작을 수 있습니다. 이에 따라 첫 번째 또는 두 번째 로트 크기를 설정해야 합니다.

나는 보증금이나 미결 주문 수에서 로트를 변경하는 옵션을 찾았지만 그러한 선형 지표에서 어떤 식 으로든 무언가를 찾았습니다.

절대값을 반환하는 또 다른 함수가 필요하다는 말이 있습니다. 즉, 음수에 적용하면 결과적으로 양수를 얻습니다.


Bid와 MA 값의 차이의 절대값은 조금 나중에 필요할 수도 있지만 지금은 힌트를 이해하지 못했기 때문에 함께 계산합니다.

입찰가 = 1.12730;

MA = 1.12530;

거리 = 20;

문제:

언제 1.1273 - 1.1253이 20보다 클까요???

어떤 이유로 내 계산기는 총 0.002를 표시합니다. 하지만 20분 거리가 너무 멀다...

 

감사합니다. 그리고 다음과 같이 가능합니다.

dist=거리* 포인트 ;

if (Ask-SlowMA<dist) Lot == Lot1;
if (SlowMA-Bid<dist) Lot == Lot1;
if (Ask-SlowMA>dist) Lot == Lot2;
if (SlowMA-Bid>dist) Lot == Lot2;

그리고 올바르게 구현하는 방법은 모두 동일합니까?

 
delf699 :

감사합니다. 그리고 다음과 같이 가능합니다.

dist=거리* 포인트 ;

if (Ask-SlowMA<dist) Lot == Lot1;
if (SlowMA-Bid<dist) Lot == Lot1;
if (Ask-SlowMA>dist) Lot == Lot2;
if (SlowMA-Bid>dist) Lot == Lot2;

그리고 올바르게 구현하는 방법은 모두 동일합니까?

이제 MathAbs ()를 적용하여 무엇에서 무엇을 빼야 하는지 불필요한 추적으로 머리를 괴롭히지 않도록 할 수 있습니다. 그리고 또 다른 흥미로운 조건 연산자

Lot = MathAbs (Ask-SlowMA) < dist ? Lot1 : Lot2;


즉, Ask-SlowMA가 dist보다 작으면 변수 Lot에 변수 Lot1의 값이 할당되고, 그렇지 않으면 Lot2 값이 할당됩니다.

그리고 한 가지 더 권장합니다. Point 변수 를 잊어버리세요. _Point 또는 Point() 함수 사용

 
감사합니다. 좋은 솔루션입니다.
 
동지들, 나는 이미 눈을 떴다. 괄호가 빠진 곳을 찾을 수 없다. '(' - unbalanced left parenthesis test.mq4 31 8 (TrendDetection()이 호출된 줄에서 시작)과 같은 오류가 발생합니다.

아직 배우는 동안 도와주세요...


#define BULL 1;
#define BEAR 2;

//------------------------------------------------ --------------------
외부 정수 SL = 200;
외부 정수 TP = 200;
extern 이중 랏 = 0.01;
외부 이중 SarStep = 0.02;
외부 이중 SarMaximum = 0.2;
extern int 미끄러짐 = 5;
extern int 매직 = 1;
외부 정수 MaxOrder = 1;
string OrderComments = "트레이더 1.0";
정수 Cnt=0;
날짜 시간 이전 막대;

정수 시작()
{
Cnt=주문 총계();
{
if (Cnt<MaxOrder)
{
if(NewBar() == 참)
{
if(TrendDetection() == 황소){
OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),slippage,NormalizeDouble(Ask,Digits)-(SL*Point),NormalizeDouble(Ask,Digits)+(TP*Point),OrderComments,Magic,0 , CLR_NONE );}
if(TrendDetection() == 곰){
OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),slippage,NormalizeDouble(Bid,Digits)+(SL*Point),NormalizeDouble(Bid,Digits)-(TP*Point),OrderComments,Magic,0 ,CLR_NONE);}
}
}
또 다른
{반환(0);}
}
리턴(0);
}

int TrendDetection()
{
이중 Sar = iSAR(NULL,0,SarStep,SarMaximum,1);
if(닫기[1] > Sar) {return(BULL);}
if(닫기[1] < Sar) {반환(BEAR);}
반환(0);}
bool NewBar()
{
if(이전막대<시간[0])
{
이전바 = 시간[0];
반환(참);
}
또 다른
{
반환(거짓);
}
반환(거짓);
}
 
AlexeyVik :

이제 MathAbs ()를 적용하여 무엇에서 무엇을 빼야 하는지 불필요한 추적으로 머리를 괴롭히지 않도록 할 수 있습니다. 그리고 또 다른 흥미로운 조건 연산자


즉, Ask-SlowMA가 dist보다 작으면 변수 Lot에 변수 Lot1의 값이 할당되고, 그렇지 않으면 Lot2 값이 할당됩니다.

그리고 한 가지 더 권장 사항: Point 변수는 잊어버리세요. _Point 또는 Point() 함수 사용

Point 는 어떻습니까? 모든 것이 제대로 작동하는 것 같습니까?