마감된 주문을 시리즈로 나누기 위한 조건을 추가해야 합니다.
알고리즘이나 나눗셈의 원리를 말하라
시리즈의 각 닫힌 이익을 새 것으로 만들고 이전 이익을 더하지 않는 방법(5, 5, 5) ?? .....
산술 합산 대신 원하는대로 공백이나 세미콜론과 공백을 통해 문자열에 추가해야합니다
좋은 생각
아니면 배열로
마감된 주문의 이익은 올바르게 계산되지만 마감된 후에는 이전 주문에 값을 추가합니다(5; 5+5=10; 10+5=15).
시리즈의 각 닫힌 이익을 새 것으로 만들고 이전 이익을 더하지 않는 방법(5, 5, 5) ??
일련의 마감된 주문에는 매수 및 매도 주문이 있거나 매수 및 매도만 주문이 있을 수 있습니다.
// START //
if (LastProfitCL(- 1 )< 0 ) ProfitColor=Red;
if (LastProfitCL(- 1 )> 0 ) ProfitColor=LimeGreen;
if (LastProfitCL(- 1 )== 0 )ProfitColor=DarkGray;
ObjectCreate ( "Last Profit" , OBJ_LABEL , 0 , 0 , 0 );
ObjectSet ( "Last Profit" , OBJPROP_CORNER , 1 );
ObjectSet ( "Last Profit" , OBJPROP_XDISTANCE , 5 );
ObjectSet ( "Last Profit" , OBJPROP_YDISTANCE , 15 );
ObjectSetText ( "Last Profit" , StringConcatenate ( "Last Profit: " , DoubleToStr (LastProfitCL(- 1 ), 2 )), 10 , "Arial" ,ProfitColor);
// END START //
//+----------------------------------------------------------------------------+
//| Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL( int op=- 1 ){ //"op" позиция (-1 любая позиция)
double LastProfit= 0 ;
for (i= OrdersHistoryTotal ()- 1 ;i>= 0 ;i--)
if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY ) && ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==magic) {
if ( OrderSymbol ()!= Symbol ()) continue ;
if ( OrderMagicNumber ()!= magic) continue ;
if ( OrderType ()!= op) continue ;
if (op< 0 || OrderType ()==op) {LastProfit+= OrderProfit ()+ OrderCommission ()+ OrderSwap ();}
}
return (LastProfit);
}
모든 것이 복잡합니다. 어쩌면 더 쉬운 것이 있습니까?
그리고 예를 들 수 있습니다. 그렇지 않으면 두뇌가 끓고 있습니까?
모든 것이 복잡합니다. 어쩌면 더 쉬운 것이 있습니까?
아니, 더 쉽지 않을 것입니다. LastProfitCL 함수가 적용된 이전 시간에 계산된 주문을 포함하여 항상 모든 주문을 계산합니다. 그리고 주문이 많아지면서 수익도 증가합니다.
새로운 주문이 소진되었을 때 사이클이 중단될 조건을 마련할 필요가 있습니다.
새로운 주문이 소진되었을 때 사이클이 중단될 조건을 마련할 필요가 있습니다.
이것이 올바른 사고 방식입니다))
이것이 올바른 사고 방식입니다))
잘?
조건은 어디에 있습니까?
잘?
조건은 어디에 있습니까?
그런 것 :
if (op< 0 || OrderType ()==op) {lastprof+= OrderProfit ()+ OrderCommission ()+ OrderSwap (); cnt++}
그리고 당신은 어떻게 든 과거의 것에서 cnt의 새로운 것을 빼야합니다.
cnt 1,2,3 과거
cnt 4,5,6 신규
그런 것 :
if (op< 0 || OrderType ()==op) {lastprof+= OrderProfit ()+ OrderCommission ()+ OrderSwap (); cnt++}
그리고 과거에서 cnt new를 어떻게든 빼야 합니다.
cnt 1,2,3 과거
cnt 4,5,6 신규
아니요, 나는 당신이 이미 쓴 것에 대해 말하는 것이 아닙니다.
단어로 알려주십시오-관심있는 마감 주문에 대한 이익 계산
예를 들어:
- 하루
- 수익성이 없는
- 마지막 주문
아니면 어떻게?
시리즈 설명
마감된 주문의 이익은 올바르게 계산되지만 마감된 후에는 이전 주문에 값을 추가합니다(5; 5+5=10; 10+5=15).
시리즈의 각 닫힌 이익을 새 것으로 만들고 이전 이익을 더하지 않는 방법(5, 5, 5) ??
일련의 마감된 주문에는 매수 및 매도 주문이 있거나 매수 및 매도만 주문이 있을 수 있습니다.
// START //
if (LastProfitCL(- 1 )< 0 ) ProfitColor=Red;
if (LastProfitCL(- 1 )> 0 ) ProfitColor=LimeGreen;
if (LastProfitCL(- 1 )== 0 )ProfitColor=DarkGray;
ObjectCreate ( "Last Profit" , OBJ_LABEL , 0 , 0 , 0 );
ObjectSet ( "Last Profit" , OBJPROP_CORNER , 1 );
ObjectSet ( "Last Profit" , OBJPROP_XDISTANCE , 5 );
ObjectSet ( "Last Profit" , OBJPROP_YDISTANCE , 15 );
ObjectSetText ( "Last Profit" , StringConcatenate ( "Last Profit: " , DoubleToStr (LastProfitCL(- 1 ), 2 )), 10 , "Arial" ,ProfitColor);
// END START //
//+----------------------------------------------------------------------------+
//| Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL( int op=- 1 ){ //"op" позиция (-1 любая позиция)
double LastProfit= 0 ;
for (i= OrdersHistoryTotal ()- 1 ;i>= 0 ;i--)
if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY ) && ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==magic) {
if ( OrderType ()!= op || OrderSymbol ()!= Symbol () || OrderMagicNumber ()!= magic) continue ;
if (op< 0 || OrderType ()==op) {LastProfit+= OrderProfit ()+ OrderCommission ()+ OrderSwap ();}
}
return (LastProfit);
}