무효 CLOSE_Single_P(문자열 SYMB, 문자열 TREN, int TICKET, 이중 LOTT) { 이중 중국; bool 검사 = 거짓; ( int cntt=0; cntt<20000; cntt++ ) { 만약 ( 체크 ) { Check_Ini(); 반품; } for ( int vvv = OrdersTotal()-1; vvv >= 0; vvv--) { if ( OrderSelect(vvv, SELECT_BY_POS, MODE_TRADES) ) { 확인 = 거짓; if ( TREN == "LONG" ) PRC = MarketInfo(SYMB,MODE_BID); 또 다른 if ( TREN == "SHORT" ) PRC = MarketInfo(SYMB,MODE_ASK);
확인 = OrderClose(TICKET,LOTT,PRC,Slippage,Yellow); 만약 ( 체크 ) 부서지다; } } } 반품; }
내 문제는: EA는 때때로 거래를 아주 잘 마감하지만 때로는 EA가 지연을 마감하지만 이미 마감되었음에도 불구하고 이를 마감할 티켓을 계속 찾고 있습니다.
여기서 Orderselect가 FALSE인 경우 EA가 코드 라인으로 돌아갈 수 있는 방법: for(int cnt=OrdersTotal(); cnt > 0; cnt-- )
???
여기서 Orderselect가 FALSE인 경우 EA가 코드 라인으로 돌아갈 수 있는 방법: for(int cnt=OrdersTotal(); cnt > 0; cnt-- )
???
코드가 잘못되었습니다. . . .
cnt 는 OrdersTotal() - 1 에서 시작하여 cnt >= 0 까지 감소해야 합니다. . . . 첫 번째 항목은 1이 아닌 0입니다.
이것이 내가 코드를 보도록 요청한 이유입니다. . . 문제를 식별할 수 있을 만큼 충분히 보여주었습니다. . . 아마. ;-)
코드가 잘못되었습니다. . . .
cnt 는 OrdersTotal() - 1 에서 시작하여 cnt >= 0 까지 감소해야 합니다. . . . 첫 번째 항목은 1이 아닌 0입니다.
이것이 내가 코드를 보도록 요청한 이유입니다. . . 문제를 식별할 수 있을 만큼 충분히 보여주었습니다. . . 아마. ;-)
매우 정확합니다. 고마워, 위즈맨!
매우 정확합니다. 고마워, 위즈맨!
그리고 또 다른 아이디어:
조건이 많으면 다음과 같이 작성할 수 있습니다.
If( X>b && B>S && NB<F......)
{
BBB= 5;
}페
여기서 EA는 브래킷 내의 모든 조건을 계산해야 합니다.
그러나 효율성을 찾고 있다면 (4,000 코드 라인 ...) 다음을 선호합니다.
만약 ( X>b )
{
동안 (B>S)
{
동안 (NB<F..)
{
BBB=5;
}
부서지다;
}
부서지다;
}
2개의 변형이 동일한가요?
와이.
crossy, 코드를 작성할 때 SRC 버튼을 사용하십시오. 훨씬 더 읽기 쉽습니다.
그래서 다음과 같이 표시됩니다.
mql4 https://book.mql4.com/operators/assign 의 "if, while 및 for" 루프에 대한 설명이 있습니다.
두 번째 코드에서는 break를 사용하기 때문에 괜찮습니다. 그러나 BBB = 5를 얻는 데는 먼 길입니다. 저는 첫 번째 코드를 선호하며 리소스를 덜 사용합니다.
그리고 또 다른 아이디어:
조건이 많으면 다음과 같이 작성할 수 있습니다.
If( X>b && B>S && NB<F......)
{
BBB= 5;
}페
여기서 EA는 브래킷 내의 모든 조건을 계산해야 합니다.
그러나 효율성을 찾고 있다면 (4,000 코드 라인 ...) 다음을 선호합니다.
더 나은 읽기를 위해 SRC 버튼을 사용하여 코드를 표시하십시오. :)
OrderSelect()가 잘못된 방식으로 코딩되었습니다. 이것과 코드를 비교하십시오. 그런 다음 여전히 문제가 있는지 없는지 답장을 보내주세요. :)
onewithzachy에게 특별한 감사를 전합니다.
ORDERSELECT가 catch되지 않을 수 있다는 것을 몰랐으므로 알 수 없는 오류가 있을 수 있습니다.
4016줄이었던 내 코드는 거의 4500줄이 되었지만 오류는 없었습니다.
친구 여러분, 감사합니다.
와이.
안녕 친구,
여기에서 긴 여정 후에 EA를 잘 사용했지만 다음과 같은 문제가 하나 더 있습니다.
다음 코드 줄이 있습니다.
CLOSE_Single_P(Pair1,"LONG",OrderT,OrderL);
처럼:
Pair1 은 기호,
"LONG" 은 장기 거래의 표시이며,
OrderT 는 주문 티켓 번호,
OrderL 은 주문 로트 크기입니다.
기능은 다음과 같습니다.
무효 CLOSE_Single_P(문자열 SYMB, 문자열 TREN, int TICKET, 이중 LOTT)
{
이중 중국;
bool 검사 = 거짓;
( int cntt=0; cntt<20000; cntt++ )
{
만약 ( 체크 )
{
Check_Ini();
반품;
}
for ( int vvv = OrdersTotal()-1; vvv >= 0; vvv--)
{
if ( OrderSelect(vvv, SELECT_BY_POS, MODE_TRADES) )
{
확인 = 거짓;
if ( TREN == "LONG" )
PRC = MarketInfo(SYMB,MODE_BID);
또 다른
if ( TREN == "SHORT" )
PRC = MarketInfo(SYMB,MODE_ASK);
확인 = OrderClose(TICKET,LOTT,PRC,Slippage,Yellow);
만약 ( 체크 )
부서지다;
}
}
}
반품;
}
내 문제는: EA는 때때로 거래를 아주 잘 마감하지만 때로는 EA가 지연을 마감하지만 이미 마감되었음에도 불구하고 이를 마감할 티켓을 계속 찾고 있습니다.
("알 수 없는 티켓 번호.." 오류가 발생합니다.
제가 논리적 오류가 있는 것 같아요.
친절한 도움을 주셔서 감사합니다.
와이
제발 . . . . . .