UPD: OrderSelect 는 4-ke에서 매우 잘 작동합니다. 한 번 테스트했습니다. 시장 주문의 경우 주문 속성에 액세스하는 시간 .... 정말 초당 수백만 번, 검색하고 싶지 않습니다. 논쟁하고 있었던 것 같습니다. 중재자 Artem과 함께하지만 여기에서 "모든 펠트 펜의 맛이 다릅니다"라고 말했듯이 원하는 경우 유지하십시오.
Janis Ozols : @Igor Makanu , 터미널에서의 주문 정렬에 대한 답변에 감사드립니다. 아마도 구조체의 배열로 저장하고 직접 정렬할 것입니다. 의심은 주로 모든 틱에서 수행되는 그러한 작업이 성능에 눈에 띄게 부정적인 영향을 미칠까 두려워했기 때문입니다.
그렇다면 왜 매 틱마다 정렬할까요? 레코드 수를 변경하거나 목록을 완전히 변경할 때만 충분합니다 ...
UPD: OrderSelect 는 4-ke에서 매우 잘 작동합니다. 한 번 테스트했습니다. 시장 주문의 경우 주문 속성에 액세스하는 시간 .... 정말 초당 수백만 번, 검색하고 싶지 않습니다. 논쟁하고 있었던 것 같습니다. 중재자 Artem과 함께하지만 여기에서 "모든 펠트 펜의 맛이 다릅니다"라고 말했듯이 원하는 경우 유지하십시오.
추가로, 터미널이 충분한 기록을 가지고 있고 렌더링할 것이라는 보장은 없습니다.
위의 예에는 역사에 대한 언급이 없습니다.
따라서 OrderSelect()의 결과가 true이면 보장됩니다.
UPD: OrderSelect 는 4-ke에서 매우 잘 작동합니다. 한 번 테스트했습니다. 시장 주문의 경우 주문 속성에 액세스하는 시간 .... 정말 초당 수백만 번, 검색하고 싶지 않습니다. 논쟁하고 있었던 것 같습니다. 중재자 Artem과 함께하지만 여기에서 "모든 펠트 펜의 맛이 다릅니다"라고 말했듯이 원하는 경우 유지하십시오.
안녕하세요, 각 거래에 대한 드로다운 데이터가 필요합니다.
누군가가 그러한 통계를 수집하고 보고서로 출력하는 스크립트를 만났을까요?
고맙습니다
안녕하세요, 각 거래에 대한 드로다운 데이터가 필요합니다.
누군가 그러한 통계를 수집하고 보고서로 출력하는 스크립트를 만났을까요?
고맙습니다
for(int i=OrdersTotal()-1;i>=0;i--) {
if (!OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue;
double prosad=DBL_MIN;
if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue;
for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) {
double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() );
delta /= MarketInfo(OrderSymbol(),MODE_POINT);
if (delta>prosad) prosad=delta;
}
PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE);
}
"손으로" 작성, 확인되지 않음, 오류가 가득 :-) 필요에 맞게 조정하고 사용하십시오.
for(int i=OrdersTotal()-1;i>=0;i--) {
if (!OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue;
double prosad=DBL_MIN;
if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue;
for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) {
double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() );
delta /= MarketInfo(OrderSymbol(),MODE_POINT);
if (delta>prosad) prosad=delta;
}
PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE);
}
"손으로" 작성, 확인되지 않음, 오류가 가득 :-) 필요에 맞게 조정하고 사용하십시오.
고마워, 나는 그것을 알아 내려고 노력할 것이다!
@Igor Makanu , 터미널에서의 주문 정렬에 대한 답변에 감사드립니다. 아마도 구조체의 배열로 저장하고 직접 정렬할 것입니다. 의심은 주로 모든 틱에서 수행되는 그러한 작업이 성능에 눈에 띄게 부정적인 영향을 미칠까 두려워했기 때문입니다.
그렇다면 왜 매 틱마다 정렬할까요? 레코드 수를 변경하거나 목록을 완전히 변경할 때만 충분합니다 ...
위의 예에는 역사에 대한 언급이 없습니다.
따라서 OrderSelect()의 결과가 true이면 보장됩니다.
UPD: OrderSelect 는 4-ke에서 매우 잘 작동합니다. 한 번 테스트했습니다. 시장 주문의 경우 주문 속성에 액세스하는 시간 .... 정말 초당 수백만 번, 검색하고 싶지 않습니다. 논쟁하고 있었던 것 같습니다. 중재자 Artem과 함께하지만 여기에서 "모든 펠트 펜의 맛이 다릅니다"라고 말했듯이 원하는 경우 유지하십시오.