for ( int i=orders- 1 ;i>= 0 ;i--)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )== false )
{
Print ( "Error in history!" );
break ;
}
if ( OrderSymbol ()!= Symbol () || OrderType ()> OP_SELL ) continue ;
if ( OrderProfit ()> 0 ) break ;
if ( OrderProfit ()< 0 )i++;
}
if (i< 0 )
#property strict 지시문으로 컴파일 - 마지막 줄 'i' - 선언되지 않은 식별자를 꾸짖습니다. 문제는 변수가 주기에서 선언되고 그 안에서만 유효하다는 것입니다. #property strict 지시어가 없으면 오류 없이 컴파일되지만 이것은 나쁩니다. 지시문을 사용해야 합니다.
if( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)==false) 대신 if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))를 작성하는 것이 더 쉽습니다. 이제 더 나아가야 합니다. 이것은 루프에서 나가는 출구입니다. 그리고 다른 주문을 처리해야 합니다. 그러나 이것은 역사에서 중복됩니다. 시장 및 보류 중인 주문 에 오류가 발생합니다. 처리 시점에 주문이 마감되었고 누락된 경우입니다. 일반적으로 if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) 계속합니다. - 계속해서 다음 주문 처리
같은 이유로 if(OrderProfit()>0) break; if(OrderProfit()>0)으로 교체 계속
다음은 오류의 원인입니다. if(OrderProfit()<0) i++ ; - 잃는 숫자가 있으면 지수가 증가합니다. 그리고 루프 헤더 for(int i=orders-1;i>=0; i-- )는 그것을 줄입니다. 동일한 순서의 처리가 반복됩니다 - 프로그램 루프. 아마도 다음과 같아야 합니다.
#property strictdouble ClosProfit()
{
double summa= 0 ;
for ( int i= OrdersHistoryTotal ()- 1 ; i>= 0 ; i--)
{
if (! OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )) continue ;
if ( OrderSymbol ()!= Symbol () || OrderType ()> OP_SELL ) continue ;
if ( OrderProfit ()< 0 ) summa+= OrderProfit ();
}
return (summa);
}
#property strict 지시문으로 컴파일 - 마지막 줄 'i' - 선언되지 않은 식별자를 꾸짖습니다. 문제는 변수가 주기에서 선언되고 그 안에서만 유효하다는 것입니다. #property strict 지시어가 없으면 오류 없이 컴파일되지만 이것은 나쁩니다. 지시문을 사용해야 합니다.
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) 대신 if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))를 작성하는 것이 더 쉽습니다. 이제 더 나아가야 합니다. 이것은 루프에서 나가는 출구입니다. 그리고 다른 주문을 처리해야 합니다. 그러나 이것은 역사에서 중복됩니다. 시장 및 보류 중인 주문 에 오류가 발생합니다. 처리 시점에 주문이 마감되었고 누락된 경우입니다. 일반적으로 if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) 계속합니다. - 다음 주문을 계속 처리
같은 이유로 if(OrderProfit()>0) break; if(OrderProfit()>0)으로 교체 계속
다음은 오류의 원인입니다. if(OrderProfit()<0) i++ ; - 잃는 숫자가 있으면 지수가 증가합니다. 그리고 루프 헤더 for(int i=orders-1;i>=0; i-- )는 그것을 줄입니다. 동일한 순서의 처리가 반복됩니다 - 프로그램 루프. 아마도 다음과 같아야 합니다.
감사합니다. 메타 트레이더는 더 이상 충돌하지 않습니다) 정보
if(OrderProfit()>0) 휴식; if(OrderProfit()>0)으로 교체 계속
주문이 이익으로 마감된 경우 함수가 이 이익을 고려하지 않고 손실 금액과 이익으로 마감된 첫 번째 주문까지만 계산해야 합니다. 저것들.
감사합니다, 메타트레이더는 더 이상 충돌하지 않습니다) 저는 주문이 이익으로 마감된 경우 함수가 이 이익을 고려하지 않고 손실 금액과 이익으로 마감된 첫 번째 주문까지만 고려해야 합니다. . 저것들. 주문이 이익으로 마감되면 카운터를 중지해야 합니다. 제가 올바르게 이해하고 있습니까?
당신의 추론은 거의 정확합니다. 주문 이력에서 주문에 대한 보장은 없습니다. 자신을 위해 - 당신은 할 수 있습니다, 판매용 - 나쁜
{
이중 합=0 ;
정수 주문=OrdersHistoryTotal();
{
for(int i=orders-1;i>=0;i--)
{
if( 주문선택(i,SELECT_BY_POS, MODE_HISTORY )==거짓)
{
Print("기록에 오류가 있습니다!");
부서지다;
}
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL)
계속하다;
//---
if(OrderProfit()>0) 휴식;
summa=OrderProfit()+합계;
}
}
안녕하세요. 기능을 도와주세요. 마감된 주문의 손실을 요약하여 주문 마감 기능과 함께 사용하면 메타 트레이더가 충돌합니다. 이 기능에 어떤 종류의 오류가 있는지 생각합니다.
이미 볼 준비가되어 있고 필요한 경우 스스로 수정하십시오. GetProfitFromDateInCurrency()
안녕하세요. 기능을 도와주세요. 마감된 주문의 손실을 요약해 주세요. 마감된 주문의 기능과 함께 사용하면 메타 트레이더가 충돌 합니다. 이 기능에 어떤 종류의 오류가 있는지 생각합니다.
메타 트레이더 충돌 은 무엇을 의미합니까? 프로그램이 오류와 함께 컴파일됩니다!!!
세 군데에 if 대신 소문자 소문자로 쓴다 큰 대문자로 쓴다면
중괄호 쌍은 분명히 불필요합니다: int orders=OrdersHistoryTotal(); summa=OrderProfit()+summa; - 하지만 그것은 중요하지 않다
뭐, 아직...
안녕하세요. 기능을 도와주세요. 마감된 주문의 손실을 요약하여 주문 마감 기능과 함께 사용하면 메타 트레이더가 충돌합니다. 이 기능에 어떤 종류의 오류가 있는지 생각합니다.
다음과 같이 시도하십시오.
#property strict 지시문으로 컴파일 - 마지막 줄 'i' - 선언되지 않은 식별자를 꾸짖습니다. 문제는 변수가 주기에서 선언되고 그 안에서만 유효하다는 것입니다. #property strict 지시어가 없으면 오류 없이 컴파일되지만 이것은 나쁩니다. 지시문을 사용해야 합니다.
if( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)==false) 대신 if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))를 작성하는 것이 더 쉽습니다. 이제 더 나아가야 합니다. 이것은 루프에서 나가는 출구입니다. 그리고 다른 주문을 처리해야 합니다. 그러나 이것은 역사에서 중복됩니다. 시장 및 보류 중인 주문 에 오류가 발생합니다. 처리 시점에 주문이 마감되었고 누락된 경우입니다. 일반적으로 if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) 계속합니다. - 계속해서 다음 주문 처리
같은 이유로 if(OrderProfit()>0) break; if(OrderProfit()>0)으로 교체 계속
다음은 오류의 원인입니다. if(OrderProfit()<0) i++ ; - 잃는 숫자가 있으면 지수가 증가합니다. 그리고 루프 헤더 for(int i=orders-1;i>=0; i-- )는 그것을 줄입니다. 동일한 순서의 처리가 반복됩니다 - 프로그램 루프. 아마도 다음과 같아야 합니다.
쓰다가 2분 늦었다... 이 부분을 좀 더 자세히 살펴보자.
#property strict 지시문으로 컴파일 - 마지막 줄 'i' - 선언되지 않은 식별자를 꾸짖습니다. 문제는 변수가 주기에서 선언되고 그 안에서만 유효하다는 것입니다. #property strict 지시어가 없으면 오류 없이 컴파일되지만 이것은 나쁩니다. 지시문을 사용해야 합니다.
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) 대신 if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))를 작성하는 것이 더 쉽습니다. 이제 더 나아가야 합니다. 이것은 루프에서 나가는 출구입니다. 그리고 다른 주문을 처리해야 합니다. 그러나 이것은 역사에서 중복됩니다. 시장 및 보류 중인 주문 에 오류가 발생합니다. 처리 시점에 주문이 마감되었고 누락된 경우입니다. 일반적으로 if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) 계속합니다. - 다음 주문을 계속 처리
같은 이유로 if(OrderProfit()>0) break; if(OrderProfit()>0)으로 교체 계속
다음은 오류의 원인입니다. if(OrderProfit()<0) i++ ; - 잃는 숫자가 있으면 지수가 증가합니다. 그리고 루프 헤더 for(int i=orders-1;i>=0; i-- )는 그것을 줄입니다. 동일한 순서의 처리가 반복됩니다 - 프로그램 루프. 아마도 다음과 같아야 합니다.
감사합니다. 메타 트레이더는 더 이상 충돌하지 않습니다) 정보
if(OrderProfit()>0) 휴식; if(OrderProfit()>0)으로 교체 계속
if(OrderProfit()>0) 휴식;
주문이 이익으로 마감되면 카운터를 중지해야 합니다. 제가 제대로 이해하고 있습니까?
감사합니다, 메타트레이더는 더 이상 충돌하지 않습니다) 저는 주문이 이익으로 마감된 경우 함수가 이 이익을 고려하지 않고 손실 금액과 이익으로 마감된 첫 번째 주문까지만 고려해야 합니다. . 저것들.
주문이 이익으로 마감되면 카운터를 중지해야 합니다. 제가 올바르게 이해하고 있습니까?
당신의 추론은 거의 정확합니다. 주문 이력에서 주문에 대한 보장은 없습니다. 자신을 위해 - 당신은 할 수 있습니다, 판매용 - 나쁜
소스가 있는 경우 - DROW_NONE - 도면 없음
도움이 되지 않았습니다. 여전히 모서리에 숫자가 표시됩니다.
목록에서 순서대로. 그러나 이 목록의 주문에 대한 보장은 없습니다.