원칙적으로 전체 코드를 게시하지 않고, 가장 많은 로트가 있는 주문의 테이크 이익을 찾는 부분만 게시했습니다. 전체 본질은 다음과 같습니다. 가격이 반전되면 큰 로트 의 보류 주문 이 배치됩니다. 그것이 작동하면 손절매가 반대 주문에 배치되어 이익 테이크가 큰 주문이 닫힐 때 손절매 이익이 음수인 주문도 닫힙니다. 전체 코드, 정지 손실 설정 수정은 다음과 같습니다.
// sp - величина спреда// FirstOrderBuy - дабы избежать error1//----------------------------------------------- int i;
int total = OrdersTotal ();
double orderLotBuy = GetLots();
staticint FirstOrderBuy = 0 ;
if (CountBuy() < FirstOrderBuy)
FirstOrderBuy = 0 ;
if (CountBuy() == 0 )
orderLotBuy = GetLots();
if (CountSell() >= 1 && CountBuy() > FirstOrderBuy && MaxLotBuy() > MaxLotSell())
{
for (i = total- 1 ; i >= 0 ; i--)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
{
if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic)
{
if ( OrderType () == OP_BUY )
{
if ( OrderLots () > orderLotBuy)
{
buyTpL = OrderTakeProfit ();
orderLotBuy = OrderLots ();
}
}
}
}
}
for (i = total- 1 ; i >= 0 ; i--)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
{
if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic)
{
if ( OrderType () == OP_SELL )
{
if ( OrderStopLoss () == 0 || ( OrderStopLoss () != 0 && OrderStopLoss () > OrderOpenPrice ()))
{
slSell = NormalizeDouble (buyTpL + sp*point, Digits );
OrderModifyX( OrderTicket (), OrderOpenPrice (), slSell, OrderTakeProfit (), 0 , 0 );
}
}
}
}
}
FirstOrderBuy = CountBuy();
}
추신: 테스트 과정에서 이런 경우에 어떻게 행동해야 하는지 조언자에게 "설명"해야 하는 뉘앙스가 너무 많습니다.
안녕하세요. 무엇이 잘못되었는지 알 수 없습니다.
더 작고 더 많은 양과 다른 테이크 이익 을 가진 두 개의 주문이 있습니다. 더 적은 양의 주문이 먼저 열리고 더 큰 주문이 열립니다. 대량의 이익실현 주문을 찾아야 합니다.
모든 것이 맞는 것 같지만 결과적으로 어떤 이유로 더 작은 볼륨으로 이익을 취하는 값이 표시됩니다(먼저 열림). 뭐가 문제 야?
추신 총계 = OrdersTotal()
안녕하세요. 무엇이 잘못되었는지 알 수 없습니다.
더 작고 더 많은 양과 다른 테이크 이익 을 가진 두 개의 주문이 있습니다. 더 적은 양의 주문이 먼저 열리고 더 큰 주문이 열립니다. 대량의 이익실현 주문을 찾아야 합니다.
모든 것이 맞는 것 같지만 결과적으로 어떤 이유로 더 작은 볼륨으로 이익을 취하는 값이 표시됩니다(먼저 열림). 뭐가 문제 야?
추신 총계 = OrdersTotal()
분명히 MaxLotBuy() 함수는 자체 주문 열거를 거치고 이 함수로 돌아갈 때 다른 주문이 선택됩니다. 일종의 주문 반복 주기 외부에서 주문을 반복하지 마십시오. 그는 그가 말한 것을 이해하지 못했습니다. 그러나 그렇습니다.
이 상황에서는 루프 전에 변수를 선언하고 새 값이 이전 값보다 크다면 OrderLots() 값을 할당하는 것이 좋습니다.
분명히 MaxLotBuy() 함수는 자체 주문 열거를 거치고 이 함수로 돌아갈 때 다른 주문이 선택됩니다. 일종의 주문 반복 주기 외부에서 주문을 반복하지 마십시오. 그는 그가 말한 것을 이해하지 못했습니다. 그러나 그렇습니다.
이 상황에서는 루프 전에 변수를 선언하고 새 값이 이전 값보다 크다면 OrderLots() 값을 할당하는 것이 좋습니다.
고맙습니다. 예, MaxLotBuy()에는 자체 주문 열거가 있지만 반환된 값은 최대 값입니다(코드를 제공하는 것이 좋습니다).
하지만 당신의 아이디어를 얻었습니다. 감사합니다. 나는 지금 시도 할거야.
아마 더 좋을 것 같다
덕분에 더 나은 것 같습니다.
아마 더 나을거야
고맙습니다. 자신에게 쓸 때뿐만 아니라 더 조심해야합니다.
비록 그것이 그것이 말하는 바입니다.
여러분, 정말 감사합니다. 제대로 작동합니다. 원래 위치로 재설정을 추가했습니다.
여러분, 정말 감사합니다. 제대로 작동합니다. 원래 위치로 재설정을 추가했습니다.
네, 그렇습니다. 내 예는 완전하지 않습니다. 방금 수정하고 추가했으며 내 수정 사항은 제 시간에 귀하의 메시지와 일치했습니다.
그것이 완전하지 않다는 것은 중요하지 않습니다. 가장 중요한 것은 올바른 아이디어, 접근 방식입니다. 다시 한 번 감사드립니다.
그것이 완전하지 않다는 것은 중요하지 않습니다. 가장 중요한 것은 올바른 아이디어, 접근 방식입니다. 다시 한 번 감사드립니다.
그럼
그럼
원칙적으로 전체 코드를 게시하지 않고, 가장 많은 로트가 있는 주문의 테이크 이익을 찾는 부분만 게시했습니다. 전체 본질은 다음과 같습니다. 가격이 반전되면 큰 로트 의 보류 주문 이 배치됩니다. 그것이 작동하면 손절매가 반대 주문에 배치되어 이익 테이크가 큰 주문이 닫힐 때 손절매 이익이 음수인 주문도 닫힙니다. 전체 코드, 정지 손실 설정 수정은 다음과 같습니다.
추신: 테스트 과정에서 이런 경우에 어떻게 행동해야 하는지 조언자에게 "설명"해야 하는 뉘앙스가 너무 많습니다.