5- sign 에 대한 카운터 주문을 마감하는 데 문제가 발생했습니다. 결론은 구매당 20개의 주문과 마을당 33개의 주문이 있다고 가정해 보겠습니다. 동시에 OrderCloseBy() 함수를 통해 20개의 매수 주문과 20개의 매도 주문을 마감하고 OrderClose() 함수를 통해 나머지 13개의 매도 주문을 마감하고 싶습니다.
네 번째 자리에 고정 스프레드가 있으면 닫는 데 문제가 없으며 OrderCloseBy() 함수를 사용할 때 스프레드를 저장합니다. 5자리 스프레드에서는 스프레드가 유동적이기 때문에 전체 수익에 도달하면 주문이 마감되지 않고 로그에서는 OrderCloseBy()에서 맹세한다고 생각합니다. 동시에 테스터에서 실행하면 모든 것이 정상적으로 닫힙니다.
총 이익에 도달하면 한 방향으로의 주문은 문제 없이 마감됩니다.
누구든지이 문제가 발생했으며 해결책은 무엇입니까?
다음은 주문을 마감하는 기능입니다.
//-----------------------------------------------------------------------// функция подсчета открытых ордеров//-----------------------------------------------------------------------void OrderOpen()
{
Orders_BUY= 0 ; Orders_SELL= 0 ;
for ( int a= 0 ; a<= OrdersTotal (); a++)
{
if ( OrderSelect (a,SELECT_BY_POS,MODE_TRADES) == true && OrderType()==OP_BUY && OrderMagicNumber() == Magic) Orders_BUY=Orders_BUY+ 1 ;
if ( OrderSelect (a,SELECT_BY_POS,MODE_TRADES) == true && OrderType()==OP_SELL && OrderMagicNumber() == Magic) Orders_SELL=Orders_SELL+ 1 ;
//if(OrderSelect(a,SELECT_BY_POS,MODE_TRADES) && OrderType()==OP_BUY) Orders_BUY=Orders_BUY+1;//if(OrderSelect(a,SELECT_BY_POS,MODE_TRADES) && OrderType()==OP_SELL) Orders_SELL=Orders_SELL+1;
ProfitAll=ProfitAll+OrderProfit()+OrderSwap()+OrderCommission();
}
}
//-----------------------------------------------------------------------// функция закрытия ордеров сначала разнонаправленных//-----------------------------------------------------------------------void ClosePos()
{
int ticket_1= 0 , ticket_2= 0 ;
for ( int a= 0 ; a<= OrdersTotal (); a++)
{
if ( OrderSelect (a,SELECT_BY_POS,MODE_TRADES) == true )
{
if (OrderSymbol()== Symbol () && OrderMagicNumber()==Magic) // проверка по символу и магику
{
if (OrderType() == OP_BUY) ticket_1 = OrderTicket();
if (OrderType() == OP_SELL) ticket_2= OrderTicket();
}
}
}
if (ticket_1 != 0 && ticket_2 != 0 ) { // если найдены разнонаправленные ордера
res = OrderCloseBy(ticket_1,ticket_2, clrRed ); } // закроем ихif (ticket_1 == 0 && ticket_2 != 0 ) { CloseOrder_by_type(OP_SELL, Symbol ()); }
if (ticket_1 != 0 && ticket_2 == 0 ) { CloseOrder_by_type(OP_BUY, Symbol ()); }
}
//---- Закрытие ордера по типу и комментарию ----//void CloseOrder_by_type( int type, string sym)
{
for ( int k= OrdersTotal ()- 1 ;k>= 0 ;k--)
{
if ( OrderSelect (k,SELECT_BY_POS,MODE_TRADES)== true )
{
if (type == OrderType() && sym==OrderSymbol()&& OrderMagicNumber()==Magic)
if (OrderType()<= 1 ){ res = OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), 350 );}
else { res = OrderDelete(OrderTicket());}
if (!res)
Print ( "Ошибка закрытия ордера. Код ошибки=" , GetLastError ());
elsePrint ( "ордер успешно закрыт." );
}
}
}
여보세요)
포지션의 일부를 닫는 함수를 작성하려고 했는데 테스터에서 실행하기 시작하면 에러 138이 뜨는데 뭐가 문제인지 이해가 안되네요 도와주세요.
다음은 이 기능이 작동해야 하는 어드바이저입니다)
138 - "요청한 가격이 오래되었거나 입찰가와 매수가가 뒤섞여 있습니다."
시가/마가 를 다시 계산할 수 없습니다. 거기에 있지만 여기에는 재앙 이 있습니다( 가격을 요청하고 MarketInfo를 사용하여 값을 할당하고 이 값을 다른 변수로 이름을 변경해야 함).
모두들 안녕.
Kim의 간단한 후행 EA를 추가하여 모든 시장 주문을 마감한 후 보류 중인 주문을 삭제하면 작동하지 않습니다(
주문 삭제 기능을 삽입했습니다.
그러다가 제가 코드에 약하고 마스터하기 힘든 문제에 부딪쳤습니다.
다음과 같은 조건을 작성해야 한다고 생각합니다.
이것은 다른 EA의 예일 뿐입니다.
도와주세요, 제발.
Kostya, 필요한 유형별로 주문 수를 계산하는 루프를 만든 다음 원하는대로 삭제하십시오. 현명하지 마십시오.
나는 코드의 멍청한 놈이다) 거기에 지연도 추가했는데 도움이 될 수 있다)
if (OrderType()==OP_BUY || OrderType()==OP_SELL || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP) {
나는 코드의 멍청한 놈이다) 거기에 지연도 추가했는데 도움이 될 수 있다)
전용은 문제가 되지 않습니다. 문제는 지연을 추가하기 전에 "무엇을 줄 것인가 ???"라고 생각해야 한다는 것입니다. 그러나 그것은 아무 것도주지 않을 것입니다 ... 그리고 이것을 추가하는 데 의미가 있습니까 ???
나머지는 이해가 안가서 술에 취해서 김씨 코드도 안 존중해... 콜...
전용은 문제가 되지 않습니다. 문제는 지연을 추가하기 전에 "무엇을 줄 것인가 ???"라고 생각해야 한다는 것입니다. 그러나 그것은 아무 것도주지 않을 것입니다 ... 그리고 이것을 추가하는 데 의미가 있습니까 ???
나머지는 이해가 안가서 술취해서 김씨 코드도 안써요...전화주세요...
안됐다) 그렇게 생각해서 조건을 써야겠다, 앉아서 생각한다.
예, 그는 실제 코드가 없습니다) 최소한 무료 코드, 유료 코드는 모릅니다.
안됐다) 그렇게 생각해서 조건을 써야겠다, 앉아서 생각한다.
예, 그는 실제 코드가 없습니다) 최소한 무료 코드, 유료 코드는 모릅니다.
실제로 각 개별 DC에는 고유한 코드가 있으므로 범용 코드를 생각해낼 수 없습니다. 먼저, 가장 중요한 것은 최소한 데모에서는 작동한다는 것입니다.
문제를 해결했습니다) 오랫동안 생각했습니다) 모두 감사합니다.
안녕하세요!
5- sign 에 대한 카운터 주문을 마감하는 데 문제가 발생했습니다. 결론은 구매당 20개의 주문과 마을당 33개의 주문이 있다고 가정해 보겠습니다. 동시에 OrderCloseBy() 함수를 통해 20개의 매수 주문과 20개의 매도 주문을 마감하고 OrderClose() 함수를 통해 나머지 13개의 매도 주문을 마감하고 싶습니다.
네 번째 자리에 고정 스프레드가 있으면 닫는 데 문제가 없으며 OrderCloseBy() 함수를 사용할 때 스프레드를 저장합니다. 5자리 스프레드에서는 스프레드가 유동적이기 때문에 전체 수익에 도달하면 주문이 마감되지 않고 로그에서는 OrderCloseBy()에서 맹세한다고 생각합니다. 동시에 테스터에서 실행하면 모든 것이 정상적으로 닫힙니다.
총 이익에 도달하면 한 방향으로의 주문은 문제 없이 마감됩니다.
누구든지이 문제가 발생했으며 해결책은 무엇입니까?
다음은 주문을 마감하는 기능입니다.
열린 순서대로 주문을 마감하는 방법을 알려주세요.
이 기능을 변경하고 싶습니다.
열린 순서대로 주문을 마감하는 방법을 알려주세요.
이 기능을 변경하고 싶습니다.