코딩 도움말..경보 대신 필터링할 지표를 얻으려면 어떻게 해야 합니까? - 페이지 5

 

주문이 현재 입찰/매도에 너무 가깝게 배치되고 있습니다. 주문은 현재 가격에서 일정 거리 떨어져 있어야 합니다. stop_level 매개변수와 함께 Marketinfo 기능 을 사용하여 해당 정보를 추출하고 주문이 요청/입찰에서 멀리 떨어져 있는지 확인하십시오.

도움이 되었기를 바랍니다.

 
Maji:
주문이 현재 입찰/매도에 너무 가깝게 배치되고 있습니다. 주문은 현재 가격에서 일정 거리 떨어져 있어야 합니다. stop_level 매개변수와 함께 Marketinfo 기능을 사용하여 해당 정보를 추출하고 주문이 요청/입찰에서 멀리 떨어져 있는지 확인하십시오. 도움이 되었기를 바랍니다.

음....

미안하지만 거기서 날 잃었어..

'현재' 수준에서 주문할 수 없나요? 지금까지 내가 한 일의 대부분은 기간이 끝날 때 주문을 실행하는 것이었습니다. 이것이 가능합니까?

stop_level 매개변수와 marketinfo 함수가 무엇인지 먼저 배워야 합니다.

방향을 주셔서 감사합니다

여기서 가치가 있는 것은 무엇이든 내가 트렌드 밴드 표시기에 수행한 업데이트입니다. 꽤 재미있었습니다.

좋아 여기있다 ...

MarketInfo() 함수와 함께 사용되는 시장 정보 식별자입니다.

다음 값 중 하나일 수 있습니다.

MODE_STOPLEVEL 14 정지 레벨(포인트).

그래서 나는 그것이 ...

시장 정보(14)

어디에 넣어요?

아니면 그게...

시장 정보(NULL,MODE_STOPLEVEL);

또는...

이중 입찰 =MarketInfo(NULL,MODE_BID);

이중 요청 =MarketInfo(NULL,MODE_ASK);

더블 포인트 =MarketInfo(NULL,MODE_POINT);

나는 이것을 사용하는 방법을 정말로 이해하지 못하는 것 같습니다 ... 저에게 예를 보여 주시겠습니까?

여기 내가 이 경우에 작업하고 있는 것이 있습니다. 이 EA가 이전에는 주문하는 데 문제가 없었고 지금은 문제가 없는 이유가 궁금합니다. 필터를 추가하기 전에 작동했습니까???

//----------channel filter

double upLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 0, 0);

double LowLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 2, 0);

// ENTRY

if(total < 2 || isNewSumbol(Symbol())) //I have modified the if condition too: it was total<1 (orBanAway aka cucurucu)

{

double HedgeLots = (HedgePercent/100)*Lots; //calculates the Lots for the hedged position

if(isCrossed == 1 && Ask < upLevel)

{

if(UseStopLoss)

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);

else

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());

}

else Print("Error opening BUY order : ",GetLastError());

//###################################################################### the added code starts here

if(UseStopLoss)

ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);

else

ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,0,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Error opening SELL order : ",GetLastError());

//###################################################################### ends here

return(0);

}

if(isCrossed == 2 && Ask > LowLevel)

{

if(UseStopLoss)

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);

else

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Error opening SELL order : ",GetLastError());

//###################################################################### the added code starts here

if(UseStopLoss)

ticket=OrderSend(Symbol(),OP_BUY,HedgeLots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);

else

ticket=OrderSend(Symbol(),OP_BUY,HedgeLots,Ask,3,0,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());

}

else Print("Error opening BUY order : ",GetLastError());

//###################################################################### ends here

return(0);

}

return(0);

}

return(0);

}

return(0);

}

}

//+------------------------------------------------------------------+
파일:
 

MarketInfo(NULL,MODE_STOPLEVEL)를 사용하여 정지 주문 이 현재 가격에서 얼마나 떨어져 있어야 하는지 결정해야 합니다. 핍으로 값을 반환한다는 것을 기억하십시오.

그러나 다음과 같이 사용하여 포인트로 변환할 수 있습니다.

이중 MinDist = NormalizeDouble(MarketInfo(NULL,MODE_STOPLEVEL)*포인트, 자릿수);

이제 스탑 오더가 현재 시장 가격에서 그렇게 멀리 떨어져 있는지 확인하십시오. 그건 그렇고, NormalizeDouble 및 Digits를 사용하여 pip 값을 소수점 이하 적절한 자리(4 또는 2)로 변환합니다. 그것은 MT4에서 아주 좋은 것입니다.

도움이 되었기를 바랍니다.

마지

 
Maji:
MarketInfo(NULL,MODE_STOPLEVEL)를 사용하여 정지 주문이 현재 가격에서 얼마나 떨어져 있어야 하는지 결정해야 합니다. 핍으로 값을 반환한다는 것을 기억하십시오.

그러나 다음과 같이 사용하여 포인트로 변환할 수 있습니다.

이중 MinDist = NormalizeDouble(MarketInfo(NULL,MODE_STOPLEVEL)*포인트, 자릿수);

이제 스탑 오더가 현재 시장 가격에서 그렇게 멀리 떨어져 있는지 확인하십시오. 그건 그렇고, NormalizeDouble 및 Digits를 사용하여 pip 값을 소수점 이하 적절한 자리(4 또는 2)로 변환합니다. 그것은 MT4에서 아주 좋은 것입니다.

도움이 되었기를 바랍니다.

마지

내가 이해할 수 없는 것은 지표를 필터로 추가하는 것이 주문을 하거나 중지하는 방식을 엉망으로 만든 이유입니다. 내가 말할 수있는 한 그 어떤 것도 변경하지 않았으므로 라인 위의 거래를 허용하지 않는 것이 정지 주문 을 배치하는 방식을 변경하는 이유는 무엇입니까?

 

괜찮으시다면 현재 코드를 이메일로 보내주세요. 주말에 한번 보려고 합니다. 고칠 것이라고 장담할 수는 없지만 정직하게 살펴보고 노력하겠습니다.

 

여기 당신이 먼저 봐야 할 문제가 있습니다

if(isCrossed == 1 && Ask < upLevel-longrange)[/PHP]

Ask and upLevel are in "price" (like 115.56 or 1.2678) while longrange is in pips (like 4,5,6) and u cannot mixed them. U have to normalize the pips to "price" and this is done by muliplying the pips with Points

the corrected code is like that

[PHP]if(isCrossed == 1 && Ask < upLevel-longrange*Point)
 

일단 쉬운 솔루션입니다 ...

오직...

... 문제는 내가 그 게시물을 만든 이후로 변경했다는 것입니다. ..대역폭을 넓히거나 좁게 하는 매개변수로 인디케이터를 수정하고, 선에 근접한 경계를 이루는 EA 부분을 빼냈습니다. 나는 무역 밴드 자체를 좁거나 넓게 만들 수 있다면 그렇게 복잡하지 않고 동일한 기능 을 제공하고 나를 정신적으로 추적하기가 더 쉬울 것이라고 생각했습니다 .... 그래서 ...

현재 이렇습니다...

//----------channel filter

double upLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 0, 0);

double LowLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 2, 0);

// ENTRY

if(total < 2 || isNewSumbol(Symbol())) //I have modified the if condition too: it was total<1 (orBanAway aka cucurucu)

{

double HedgeLots = (HedgePercent/100)*Lots; //calculates the Lots for the hedged position

if(isCrossed == 1 && Ask < upLevel)

{

if(UseStopLoss)

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);

else

Ask와 Uplevel 둘 다 가격이 비슷하지 않습니까? 이것은 여전히 오류를 생성하는 코드입니다. 더 진행해야 합니다..

 

지금까지 나는 어떤 문제도 보지 못했다(코드 지향)

그러나 논리적으로 이것을 보라.

if(isCrossed == 1 && 묻기 < upLevel)

당신은 그들이 가까이 있는지 확인 하지 않고 가격이 라인보다 낮은 지 확인합니다.

 

있는줄 알았어!!!

나는 당신이 얻고자 하는 것을 정확히 테스트했고, 내 이전 포스트는 잘못된 EA를 넣었습니다.

이 EA는 최대 4개의 TF를 확인 하여 모두 동시에 우위를 점하고 있는지 확인할 수 있습니다. 원하는 경우 하나만 선택할 수 있습니다.

지표에서 논리를 가져오는 방법과 여러 TF를 함께 결합하는 방법을 예로 사용할 수 있습니다.

문안 인사

엘리

파일:
tbs.mq4  7 kb
 
elihayun:
있는줄 알았어!!!

나는 당신이 얻고자 하는 것을 정확히 테스트했고, 내 이전 포스트는 잘못된 EA를 넣었습니다.

이 EA는 최대 4개의 TF를 확인하여 모두 동시에 우위를 점하고 있는지 확인할 수 있습니다. 원하는 경우 하나만 선택할 수 있습니다.

지표에서 논리를 가져오는 방법과 여러 TF를 함께 결합하는 방법을 예로 사용할 수 있습니다.

문안 인사

엘리

이것은 흥미롭다 나는 아직 멀티 TF 지표를 제대로 공개하지 않았지만 그만한 가치가 있다고 생각합니다.

사유: