더 나은 읽기를 위해 SRC 버튼을 사용하여 코드를 표시하십시오. :)
OrderSelect()가 잘못된 방식으로 코딩되었습니다. 코드를 이것과 비교하십시오. 그런 다음 여전히 문제가 있는지 없는지 답장을 보내주세요. :)
for ( int cnt= 0 ; cnt< OrdersTotal (); cnt++) { if ( OrderSelect (cnt,SELECT_BY_POS,MODE_TRADES) == true && OrderSymbol ()==Pair && OrderType ()==OP_BUY) { // code to close } }
안녕 친구,
당신의 도움이 필요합니다.
나는 그 프로세스의 일부가 기능을 사용하여 거래를 마감해야 하는 EA를 만들었습니다. 다음은 관련 kod의 행입니다.
EA가 거래를 마감하지 않는 이유를 좀 도와주실 수 있나요? 감사합니다.
루프가 있고 (보류 중) 주문을 닫거나 삭제하는 경우 카운트다운이 아니라 카운트다운을 해야 합니다. . .
Close_Single_P 함수에 루프가 있는 이유는 무엇입니까? 단일 주문을 마감하도록 설계되지 않았습니까? 함수를 호출할 때 기호, 티켓 번호, 주문 유형 및 위치 크기를 전달합니다. . . 그것이 주문을 마감하는 데 필요한 전부입니다. . . 글쎄, 당신은 닫을 가격이 필요하고 그것을 위해 OrderClosePrice()를 사용할 수 있고 구매 또는 판매인지 걱정할 필요가 없습니다. . . 사실, 그냥 Function을 없애고 function call 대신에 이 줄을 사용하세요. . .
OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), Slippage, Yellow );
. . . 그건 그렇고, 당신은 어디에서 Slippage를 설정합니까? 4/5 Digit Brokers에 대해 보상하고 있습니까?
Order 함수를 사용하면 값을 반환합니다. . . 이 반환 값은 함수가 작동했는지 여부를 알려줍니다. . . 이 반환 값을 사용하는 방법을 배우고 문제가 있다고 알려주면 Print 문을 사용하여 관련 정보를 로그에 보고합니다. . . . 그러면 추측하는 대신 무엇이 잘못되었는지 알게 될 것입니다. . . .
주문을 마감해야 합니까? 이것을 확인했습니까? . .
if ( MarketInfo (Pair,MODE_BID) >= Open_P_BUY + MarketInfo (Pair,MODE_POINT)*factor*TP )
. . . 사실이다 ?
해당 줄이 true 인 경우 실행되는 print 문을 추가하지 않는 이유는 무엇입니까? . . 그러면 있는지 여부를 알 수 있습니다. . .
if ( MarketInfo (Pair,MODE_BID) >= Open_P_BUY + MarketInfo (Pair,MODE_POINT)*factor*TP ) { Print ( "Trying to close Order: " , OrderTicket ()); // <---- tells you that the if returned true if (! OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), Slippage, Yellow ) Print ( "OrderClose failed, error # " , GetLastError ()); // <------- reports the error if the OrderClose failed . . }
더 나은 읽기를 위해 SRC 버튼을 사용하여 코드를 표시하십시오. :)
그러면 GetLastError()의 반환값은 무엇입니까?
코드는 약 4,000줄입니다...
어쨌든 오류 마사지는 받지 않습니다.
루프가 있고 (보류 중) 주문을 닫거나 삭제하는 경우 카운트다운이 아니라 카운트다운을 해야 합니다. . .
Close_Single_P 함수에 루프가 있는 이유는 무엇입니까? 단일 주문을 마감하도록 설계되지 않았습니까? 함수를 호출할 때 기호, 티켓 번호, 주문 유형 및 위치 크기를 전달합니다. . . 그것이 주문을 마감하는 데 필요한 전부입니다. . . 글쎄, 당신은 닫을 가격이 필요하고 그것을 위해 OrderClosePrice()를 사용할 수 있고 구매 또는 판매인지 걱정할 필요가 없습니다. . . 사실, 그냥 Function을 없애고 function call 대신에 이 줄을 사용하세요. . .
. . . 그건 그렇고, 당신은 어디에서 Slippage를 설정합니까? 4/5 Digit Brokers에 대해 보상하고 있습니까?
Order 함수를 사용하면 값을 반환합니다. . . 이 반환 값은 함수가 작동했는지 여부를 알려줍니다. . . 이 반환 값을 사용하는 방법을 배우고 문제가 있다고 알려주면 Print 문을 사용하여 관련 정보를 로그에 보고합니다. . . . 그러면 추측하는 대신 무엇이 잘못되었는지 알게 될 것입니다. . . .
주문을 마감해야 합니까? 이것을 확인했습니까? . .
. . . 사실이다 ?
해당 줄이 true 인 경우 실행되는 print 문을 추가하지 않는 이유는 무엇입니까? . . 그러면 있는지 여부를 알 수 있습니다. . .
Wize 제안에 대해 Raptor에게 감사드립니다. 항상, 당신은 나를 현명하고 명확하게 도와줍니다.
방금 제안한 것을 시도해 보겠습니다.
최고의 소원.
이미 티켓을 선택했는데 같은 티켓을 찾기 위해 두 번째 orderSelect 루프를 거치는 이유는 무엇입니까?
왜 OrderClose 반환 값을 확인하지 않고 오류를 인쇄하여 WHY를 찾지 않습니까?
친구 여러분, 노력해 주셔서 감사합니다.
나는 WHRoeder의 코멘트를 볼 때까지 약간의 변경을 가했지만 아무 것도 도움이 되지 않았습니다.
당신은 천재입니다, 나는 당신이 옳다고 생각합니다.
월요일에 수정된 EA를 사용해 보겠습니다.
좋은 주말 되세요.
친구 여러분, 노력해 주셔서 감사합니다.
나는 WHRoeder의 코멘트를 볼 때까지 약간의 변경을 가했지만 아무 것도 도움이 되지 않았습니다.
당신은 천재입니다, 나는 당신이 옳다고 생각합니다.
월요일에 수정된 EA를 사용해 보겠습니다.
좋은 주말 되세요.
글쎄, 내 친구,
나는 당신의 제안을 모두 수행했지만 EA는 실패했습니다.
더 많은 아이디어가 있습니까?
다시 해보자
#include "..\libraries\stdlib.mq4" // drag and drop from libraries to very top of your code for ( int cnt = OrdersTotal (); cnt >= 0 ; cnt--) // from RaptorUK, count it down to zero { if ( OrderSelect (cnt,SELECT_BY_POS,MODE_TRADES) == true && OrderSymbol () == Pair) // this is how to write OrderSelect() { if ( OrderType ()== OP_BUY) // the code below is to close buy position only { //--- if ( MarketInfo (Pair,MODE_BID) >= Open_P_BUY + MarketInfo (Pair,MODE_POINT) * factor * TP) // from RaptorUK, is this statemement true ? { //CLOSE_Single_P(Pair,"LONG",OrderTicket(),OrderLots()) // From RaptorUK & WHRoeder, you don't have to do OrderSelect() twice Print ( "Trying to close buy position : " , OrderTicket ()); if (! OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), Slippage, Yellow )) // From Raptor UK, are you doing the slippage correctly ? Print ( "failed to close buy position " , ErrorDescription( GetLastError ()) ); } else { Print ( "Not qualify to close buy position " , OrderTicket ()); // from RaptorUK, is this statemement true ?, if not this print will tell you } //--- } /* else { if (OrderType() == OP_SELL) { } } */ } }
아직 Valentino Rossi의 MotoGP Le Mans 두 번째 연단을 읽는 동안 이 글을 올바르게 작성하기를 바랍니다. :)
다시 해보자
아직 Valentino Rossi의 MotoGP Le Mans 두 번째 연단을 읽는 동안 이 글을 올바르게 작성하기를 바랍니다. :)
onewithzachy님, 감사합니다.
먼저 다음과 같은 작은 실수가 있다고 생각합니다.
for(int cnt = OrdersTotal() -1 ; cnt >= 0; cnt--)
녹색과 굵은 수정을 추가해야 합니다.
하지만 다음 줄이 어떻게 도움이 되는지 이해가 되지 않습니까?
#include "..\libraries\stdlib.mq4"
고마워, Y.
안녕 친구,
당신의 도움이 필요합니다.
나는 그 프로세스의 일부가 기능을 사용하여 거래를 마감해야 하는 EA를 만들었습니다. 다음은 관련 kod의 행입니다.
EA가 거래를 마감하지 않는 이유를 좀 도와주실 수 있나요? 감사합니다.
(메인 부분에서 ORDERSELECT 를 사용하는데 함수에서도 ORDERSELECT를 사용할 수 없기 때문에????)
for(int cnt=0; cnt < OrdersTotal(); cnt++)
{
주문 선택(cnt, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol() == 쌍 && OrderType() == OP_BUY )
{
if ( MarketInfo(Pair,MODE_BID) >= Open_P_BUY + MarketInfo(Pair,MODE_POINT)*factor*TP )
{
CLOSE_Single_P(Pair,"LONG", OrderTicket(), OrderLots());
}
}
}
…
…
…
//-----------------------------------------------------------+
무효 CLOSE_Single_P(문자열 SYMB, 문자열 TREN, int TICKET, 이중 LOTT)
{
int 코드, sig;
이중 중국;
if ( TREN == "LONG" )
코드 = 0;//OP_BUY
또 다른
if ( TREN == "SHORT" )
코드 = 1;//OP_SELL
for ( int k=0; k < OrdersTotal(); k++ )
{
주문 선택(k, SELECT_BY_POS, MODE_TRADES);
if( OrderSymbol() == SYMB && OrderType() == 코드 && OrderLots() == LOTT && OrderTicket() == TICKET )
{
경우 ( 주문 유형() == OP_BUY )
PRC = MarketInfo(OrderSymbol(),MODE_BID);
또 다른
경우 ( 주문 유형() == OP_SELL )
PRC = MarketInfo(OrderSymbol(),MODE_ASK);
OrderClose(티켓,LOTT,PRC,Slippage,Yellow);
부서지다;
}
}
반품;
}