더 이상의 논쟁은 무의미하다고 생각합니다. 나는 모든 것을 차근차근 설명했다. 당신이 한 일을 계속하십시오.
예, 어떤 종류의 토론이 있을 수 있습니까? 최대 가격 편차로 주문을 마감해야 합니다. 그래서 우리는 가격에 관심이 있습니다 ... 즉. 최대 또는 최소 개시 가격 과 함께 극단적인 보류를 찾아야 합니다. 동의하지 않으면 논쟁할 수 있습니다. 그렇지 않으면 여전히 옳습니다! 나는 내가 말하는 것을 분명히 이해합니다.
이 경우 그래픽 개체가 완전히 생성되고 구성되는 기능이 있었습니다. 그 안에 생성 기능이 최적화되어 있습니다. 객체가 이미 존재하는 경우 생성되지 않습니다. 직접 확인하십시오. 객체를 생성한 다음 속성을 변경하는 시간을 기록합니다. 두 번째 호출은 훨씬 더 짧을 것입니다. 저것들. 아무것도 다시 생성되지 않습니다.
결과적으로 우리는 개체를 생성할 뿐만 아니라 많은 시간 없이 개체의 속성을 교체하여 개체 를 사용자 정의할 수 있는 범용 기능을 갖게 되었습니다.
아트미디어70 : 나는 당신의 논리를 전혀 이해하지 못합니다... 왜 하지 않습니까: 주문이 시장 포지션으로 전환되었습니다 - 가장 멀리 있는 반대 보류가 제거되었습니다.
그래서 나는 가장 먼 위치를 삭제합니다. 숏포지션이기 때문에 시가가 가장 낮은 포지션 을 의미합니다. 여기에서 함수를 다시 작성했습니다. 여기에서 모든 것이 명확해야 합니다. 인쇄가 제거되고 추가 변수가 제거되었습니다.
결국 변수amountOfCurrPending 은 남은 구매 보류 수를 전송합니다. 저것들. 총계가 처음에 level 의 양이고 amountOfCurrPending 이 현재 보류 중인 수인 경우 현재 보류 중인 수에서 초기 보류 중인 수를 빼면 차이가 나오며 이것이 반바지를 제거하는 데 필요한 금액입니다. 이해했나요?
//+-------------------------------------------------------------------------------------+//| Удаление несработанных отложеннык шортов |//+-------------------------------------------------------------------------------------+void DeletePendingSells( int & amountOfCurrPending)
{
int total = OrdersTotal () - 1 ,
ordersToDelete = level - amountOfCurrPending, // Количество отложек, которые требуется удалить
s_ticket;
amountOfCurrPendingBuys = 0 ; // Количество текущих отложек на покупку
amountOfCurrPendingSells = 0 ; // Количество текущих отложек на продажуPrint ( "DeletePendingSells: level = " , level);
Print ( "ordersToDelete = level - amountOfCurrPending ; " , level, " - " , amountOfCurrPending);
double OOP = 2.0 ;
Print ( "функция сноса отложек DeletePendingSells" );
for ( int i=total; i>= 0 ; i--)
{
if (! OrderSelect (i,SELECT_BY_POS)) continue ;
if (OrderSymbol() != Symbol ()) continue ;
if (OrderMagicNumber() != i_magic) continue ;
if (OrderType() != OP_SELLSTOP) continue ;
while (ordersToDelete > 0 ) // Если есть ордера, которые требуется удалить..
{
if (OOP > OrderOpenPrice())
{
Print ( "OOP > OrderOpenPrice() ; " , OOP, " > " , OrderOpenPrice());
OOP = OrderOpenPrice(); // Ищется ордер, с минимальной ценой открытия
s_ticket = OrderTicket(); // Получаем тикет ордера с минимальной ценой открытияPrint ( "DeletePendingSells: s_ticket = " , s_ticket);
Print ( "DeletePendingSells: OOP = " , OOP);
OrderDelete(s_ticket,Black); // Тут нужно закрыть найденный ордер, и видимо проверить, что он закрыт. И счётчик уменьшить!
ordersToDelete--; // Уменьшаем количество требуемых ордеров для удаления
}
}
}
Print ( "DeletePendingSells: ordersToDelete = " , ordersToDelete);
}
그래서 나는 가장 먼 위치를 삭제합니다. 숏 포지션이기 때문에 시가가 가장 낮은 포지션을 의미합니다. 여기에서 함수를 다시 작성했습니다. 여기에서 모든 것이 명확해야 합니다. 인쇄가 제거되고 추가 변수가 제거되었습니다.
결국 변수amountOfCurrPending 은 남은 구매 보류 수를 전송합니다. 저것들. 총계가 처음에 level 의 양이고 amountOfCurrPending 이 현재 보류 중인 수인 경우 현재 보류 중인 수에서 초기 보류 중인 수를 빼면 차이가 나오며 이것이 반바지를 제거하는 데 필요한 금액입니다. 이해했나요?
어디서 오류를 빨간색으로 표시했습니까? 이것을 해결하는 가장 좋은 방법은 무엇입니까?
Ищется ордер, с минимальной ценой открытия
나는 연기 코멘트의 그리드에 일련 번호를 기록하고 대응하는 반대 연기된 번호에 같은 번호를 기록할 것입니다. 그런 다음 시장 위치를 찾은 후 그녀의 댓글에서 번호를 읽은 후 해당 반대 예금을 문제 없이 댓글에서 동일한 번호를 검색합니다. 다른 시간의 magicki 사용.
나는 연기 코멘트의 그리드에 일련 번호를 기록하고 대응하는 반대 연기된 번호에 같은 번호를 기록할 것입니다. 그런 다음 시장 위치를 찾은 후 그녀의 댓글에서 번호를 읽은 후 해당 반대 예금을 문제 없이 댓글에서 동일한 번호를 검색합니다. 다른 시간의 magicki 사용.
추신. 귀하의 코드는 읽고/파싱할 시간이 없습니다
흠. 네, 각 방향의 예금 개수가 같으면 이런 식으로 해당 예금을 문제 없이 검색합니다. 그리고 다른 경우이 옵션은 내가 이해한대로 작동하지 않습니다.
조언을 구하고 나서도 도전하는 이유는 무엇입니까? 이게 뭐야, 메인스트림?
더 이상의 논쟁은 무의미하다고 생각합니다. 나는 모든 것을 차근차근 설명했다. 당신이 한 일을 계속하십시오.
예, 어떤 종류의 토론이 있을 수 있습니까? 최대 가격 편차로 주문을 마감해야 합니다. 그래서 우리는 가격에 관심이 있습니다 ... 즉. 최대 또는 최소 개시 가격 과 함께 극단적인 보류를 찾아야 합니다. 동의하지 않으면 논쟁할 수 있습니다. 그렇지 않으면 여전히 옳습니다! 나는 내가 말하는 것을 분명히 이해합니다.
코드는 ST와 TP를 제거합니다. 선택적 삭제 조건 추가
바르게 쓰지 않은 것은? 모든 것을 계속 삭제합니다 :(
#property show_inputs
extern bool StopLoss = True; // Удалить только StopLoss
extern bool TakeProfit = True; // Удалить только TakeProfit
extern bool ALL = True; // Удалить все
void start()
{
bool fm;
int i;
double SL=OrderStopLoss();
double TP=OrderTakeProfit();
if (StopLoss) SL=0;
if (TakeProfit) TP=0;
if (ALL) {SL=0; TP=0;}
for (i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType()==OP_BUY)
{
fm=OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,CLR_NONE);
}
if (OrderType()==OP_SELL)
{
fm=OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,CLR_NONE);
}
}
}
}
아니면 다른 해결 방법이 없고 각각의 조건에 대해 삭제 코드를 작성해야 합니까?
#property show_inputs
#include <WinUser32.mqh>
extern bool StopLoss = False; // Удалить только StopLoss
extern bool TakeProfit = False; // Удалить только TakeProfit
extern bool ALL = False; // Удалить все
void start()
{
bool fm;
int i;
if (StopLoss)
{
for (i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType()==OP_BUY)
{
fm=OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderTakeProfit(),CLR_NONE);
}
if (OrderType()==OP_SELL)
{
fm=OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderTakeProfit(),CLR_NONE);
}
}
}
return(0);
}
if (TakeProfit)
{
for (i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType()==OP_BUY)
{
fm=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),0,CLR_NONE);
}
if (OrderType()==OP_SELL)
{
fm=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),0,CLR_NONE);
}
}
}
return(0);
}
if (ALL)
{
for (i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType()==OP_BUY)
{
fm=OrderModify(OrderTicket(),OrderOpenPrice(),0,0,CLR_NONE);
}
if (OrderType()==OP_SELL)
{
fm=OrderModify(OrderTicket(),OrderOpenPrice(),0,0,CLR_NONE);
}
}
}
return(0);
}
}
Vadim, ObjectSet() 함수를 사용할 수 있다면 왜 다시 객체를 생성합니까?
이 경우 그래픽 개체가 완전히 생성되고 구성되는 기능이 있었습니다. 그 안에 생성 기능이 최적화되어 있습니다. 객체가 이미 존재하는 경우 생성되지 않습니다. 직접 확인하십시오. 객체를 생성한 다음 속성을 변경하는 시간을 기록합니다. 두 번째 호출은 훨씬 더 짧을 것입니다. 저것들. 아무것도 다시 생성되지 않습니다.
결과적으로 우리는 개체를 생성할 뿐만 아니라 많은 시간 없이 개체의 속성을 교체하여 개체 를 사용자 정의할 수 있는 범용 기능을 갖게 되었습니다.
나는 판매에 대한 최저 입찰가를 제거하는 함수를 작성했습니다. 마감까지 의 짧은 지연 횟수는 효과가 있었던 구매 지연 횟수와 동일합니다. 시장가 주문으로 전환되었습니다.
한 번의 매수 지연이 효과가 있으면 매도 지연 한 번을 마감하고, 두 번의 매수 지연이 효과가 있으면 매도에서 2개의 예금을 마감합니다.
코드는 다음과 같습니다.
amountOfCurrPending - 보류 중인 구매 주문 의 수입니다.
레벨 - 처음에 각각에 대해 보류 중인 주문을 보낸 수. 옆.
OOP - 보류 중인 시작 가격으로 도달할 수 없는 값을 취했습니다.
우리의 조건은 카운터가 ordersToDelete 보다 작으면 가장 낮은 가격으로 보류 중인 항목을 삭제하는 것입니다. 그러나 모든 단기 예금은 제거됩니다. 나에게 뭐가 문제 니?
나는 판매에 대한 최저 입찰가를 제거하는 함수를 작성했습니다. 마감까지 의 짧은 지연 횟수는 효과가 있었던 구매 지연 횟수와 같습니다. 시장가 주문으로 전환되었습니다.
한 번의 매수 지연이 효과가 있으면 매도 지연 한 번을 마감하고, 두 번의 매수 지연이 효과가 있으면 매도에서 2개의 예금을 마감합니다.
코드는 다음과 같습니다.
amountOfCurrPending - 보류 중인 구매 주문의 수입니다.
레벨 - 처음에 각각에 대해 보류 중인 주문을 보낸 수. 옆.
OOP - 보류 중인 시작 가격으로 도달할 수 없는 값을 취했습니다.
우리의 조건은 카운터가 ordersToDelete 보다 작으면 가장 낮은 가격으로 보류 중인 항목을 삭제하는 것입니다. 그러나 모든 단기 예금은 제거됩니다. 나에게 뭐가 문제 니?
그리고 그게 다야. 아니면 같은 가격에 여러 주문이 걸려 있습니까?
그리고 그게 다야. 아니면 같은 가격에 여러 주문이 걸려 있습니까?
아니, 단계로 주문 ..
나는 당신의 논리를 전혀 이해하지 못합니다... 왜 하지 않습니까: 주문이 시장 포지션으로 전환되었습니다 - 가장 멀리 있는 반대 보류가 제거되었습니다.
그래서 나는 가장 먼 위치를 삭제합니다. 숏포지션이기 때문에 시가가 가장 낮은 포지션 을 의미합니다. 여기에서 함수를 다시 작성했습니다. 여기에서 모든 것이 명확해야 합니다. 인쇄가 제거되고 추가 변수가 제거되었습니다.
결국 변수 amountOfCurrPending 은 남은 구매 보류 수를 전송합니다. 저것들. 총계가 처음에 level 의 양이고 amountOfCurrPending 이 현재 보류 중인 수인 경우 현재 보류 중인 수에서 초기 보류 중인 수를 빼면 차이가 나오며 이것이 반바지를 제거하는 데 필요한 금액입니다. 이해했나요?
어디서 오류를 빨간색으로 표시했습니까? 이것을 해결하는 가장 좋은 방법은 무엇입니까?아니, 단계로 주문 ..
그래서 나는 가장 먼 위치를 삭제합니다. 숏 포지션이기 때문에 시가가 가장 낮은 포지션을 의미합니다. 여기에서 함수를 다시 작성했습니다. 여기에서 모든 것이 명확해야 합니다. 인쇄가 제거되고 추가 변수가 제거되었습니다.
결국 변수 amountOfCurrPending 은 남은 구매 보류 수를 전송합니다. 저것들. 총계가 처음에 level 의 양이고 amountOfCurrPending 이 현재 보류 중인 수인 경우 현재 보류 중인 수에서 초기 보류 중인 수를 빼면 차이가 나오며 이것이 반바지를 제거하는 데 필요한 금액입니다. 이해했나요?
어디서 오류를 빨간색으로 표시했습니까? 이것을 해결하는 가장 좋은 방법은 무엇입니까?Ищется ордер, с минимальной ценой открытия
나는 연기 코멘트의 그리드에 일련 번호를 기록하고 대응하는 반대 연기된 번호에 같은 번호를 기록할 것입니다. 그런 다음 시장 위치를 찾은 후 그녀의 댓글에서 번호를 읽은 후 해당 반대 예금을 문제 없이 댓글에서 동일한 번호를 검색합니다. 다른 시간의 magicki 사용.
추신. 코드를 읽고/파싱할 시간이 없습니다.
나는 연기 코멘트의 그리드에 일련 번호를 기록하고 대응하는 반대 연기된 번호에 같은 번호를 기록할 것입니다. 그런 다음 시장 위치를 찾은 후 그녀의 댓글에서 번호를 읽은 후 해당 반대 예금을 문제 없이 댓글에서 동일한 번호를 검색합니다. 다른 시간의 magicki 사용.
추신. 귀하의 코드는 읽고/파싱할 시간이 없습니다
흠. 네, 각 방향의 예금 개수가 같으면 이런 식으로 해당 예금을 문제 없이 검색합니다. 그리고 다른 경우이 옵션은 내가 이해한대로 작동하지 않습니다.