무효 CritCloseBuy() { if (((Yellow_0-Red_0)<(Yellow_1-Red_1) && ((MA_0<MA_1)&&(MA_1>MA_2))) || ((Yellow_0-Red_0)>(Yellow_1-Red_1) && ((MB_0<MB_1) &&(MB_1>MB_2)))) 동안(사실) { ord_close=OrderClose(OrderTicket(),0.1,MarketInfo(OrderSymbol(),MODE_BID),0,빨간색); if(ord_close=거짓) { Comment(" BU 위치 닫기 가 # 오류로 종료되었습니다.",GetLastError()); //에러 메시지 부서지다; } 또 다른 { 주문=0; 부서지다; }
글쎄, 예와 같이하십시오 - 먼저 선택을 한 다음 닫으십시오. 단일 또는 백만 주문은 중요하지 않습니다. 먼저 각각을 선택해야 합니다.
그리고 확인을 구성하는 것은 매우 쉽습니다. if(!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clCloseSell)) Print("Closing error #", GetLastError());
나는 이것을 했다: if (!OrderClose(OrderTicket(), OrderLots(), Bid, 0, Red)) { Comment(" BU 위치 닫기 가 # 오류로 종료되었습니다.",GetLastError()); 부서지다; } 또 다른 { 주문=0; 부서지다; }
계속 "반환 값을 확인해야 합니다.
다음과 같이 했습니다.
ord_close=OrderClose(OrderTicket(), OrderLots(), 입찰, 0, 빨간색); if(ord_close=거짓) { Comment("BU 위치 닫기가 # 오류로 종료되었습니다.",GetLastError()); //에러 메시지 부서지다; } 또 다른 { 주문=0; 부서지다; }
void start()를 수행하면 오류가 발생하지 않습니다.
고맙습니다! 오류는 사라졌지만 포지션은 아직 청산되지 않았습니다.
이유가 무엇인지 정확히 알려주는 코드가 충분하지 않습니다.
파편:
무효 CritCloseBuy()
{
if (((Yellow_0-Red_0)<(Yellow_1-Red_1) && ((MA_0<MA_1)&&(MA_1>MA_2))) || ((Yellow_0-Red_0)>(Yellow_1-Red_1) && ((MB_0<MB_1) &&(MB_1>MB_2))))
동안(사실)
{
ord_close=OrderClose(OrderTicket(),0.1,MarketInfo(OrderSymbol(),MODE_BID),0,빨간색);
if(ord_close=거짓)
{
Comment(" BU 위치 닫기 가 # 오류로 종료되었습니다.",GetLastError()); //에러 메시지
부서지다;
}
또 다른
{
주문=0;
부서지다;
}
}
아마도 개봉 이유:
voidCritOpen()
{
if (///열린 조건///)
동안(사실)
{
티켓=OrderSend(Symbol(),OP_BUY,0.1,Ask,0,0,0,NULL,10011,0,clrNONE); //오픈 오더 BUY, MAGIC 10011
if(티켓 <= 0)
{
Comment("열기 위치 BY-10011이 # 오류로 종료되었습니다.",GetLastError());
부서지다;
}
또 다른
{
Comment("위치 오픈 BY-10011, 로트 0.1, 가격", Ask);
Ord=(Ord+1);
부서지다;
}
}
파편:
...전 ord_close=OrderClose(OrderTicket(),0.1,MarketInfo(OrderSymbol(),MODE_BID),0,빨간색);
OrderSelect() 함수 를 사용하여 주문을 선택하는 것이 좋습니다. 그리고 나는 닫기 기능을 중심으로 그러한 순환 구성의 요점을 전혀 보지 못합니다 ...
전 ord_close=OrderClose(OrderTicket(),0.1,MarketInfo(OrderSymbol(),MODE_BID),0,빨간색);
OrderSelect() 함수를 사용하여 주문을 선택하는 것이 좋습니다.
그래서 그는 나에게 유일한 사람입니다. 하지만 처음에는 그랬다. 이것은 이미 입력하여 원인을 찾기 시작했습니다. 그리고 나는 주기의 의미를 이해하지 못한다.
나는 비유로 침을 뱉고 있습니다. 사이클과 함께 열리면 닫아야합니다 ...
Igor Kim은 다음과 같은 예를 가지고 있습니다.
무효 시작() {
관리 위치();
}
//+----------------------------------------------- ------------------------------+
//| 시장 가격에 클로징 포지션 |
//| 옵션: |
//| sym - 기기 이름("" - 현재 기호) |
//| op - 연산(-1 - 임의의 위치) |
//| mn - MagicNumber(-1 - 모든 마법) |
//+----------------------------------------------- ------------------------------+
무효 ClosePositions(문자열 sym="", int op=-1, int mn=-1) {
정수 i, k=OrdersTotal();
if (sym=="") sym=Symbol();
(i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sym && (op<0 || OrderType()==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
if (주문유형()==OP_BUY) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, clCloseBuy);
}
(주문 유형()==OP_SELL) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clCloseSell);
}
}
}
}
}
}
그러나 컴파일러는 OrderClose의 반환 값을 확인해야 합니다.
Igor Kim은 다음과 같은 예를 가지고 있습니다.
그러나 컴파일러는 OrderClose의 반환 값을 확인해야 합니다.
글쎄요, 예에서와 같이 하십시오 - 먼저 선택을 하고 그 다음에 클로저를 하십시오. 1개 주문이든 100만 주문이든 상관없습니다. 먼저 각각을 선택해야 합니다.
그리고 확인을 구성하는 것은 매우 쉽습니다. if(!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clCloseSell)) Print("Closing error #", GetLastError() );
Igor Kim은 다음과 같은 예를 가지고 있습니다.
...
그러나 컴파일러는 OrderClose의 반환 값을 확인해야 합니다.
글쎄, 예와 같이하십시오 - 먼저 선택을 한 다음 닫으십시오. 단일 또는 백만 주문은 중요하지 않습니다. 먼저 각각을 선택해야 합니다.
그리고 확인을 구성하는 것은 매우 쉽습니다. if(!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clCloseSell)) Print("Closing error #", GetLastError());
나는 이것을 했다: if (!OrderClose(OrderTicket(), OrderLots(), Bid, 0, Red))
{
Comment(" BU 위치 닫기 가 # 오류로 종료되었습니다.",GetLastError());
부서지다;
}
또 다른
{
주문=0;
부서지다;
}
계속 "반환 값을 확인해야 합니다.
다음과 같이 했습니다.
ord_close=OrderClose(OrderTicket(), OrderLots(), 입찰, 0, 빨간색);
if(ord_close=거짓)
{
Comment("BU 위치 닫기가 # 오류로 종료되었습니다.",GetLastError()); //에러 메시지
부서지다;
}
또 다른
{
주문=0;
부서지다;
}
조용한. 그러나 두 경우 모두 포지션을 닫지 않습니다
추신 : 포즈를 닫고 여는 조건을 결정하는 데 오류가있는 것 같습니다.
위의 게시물은 닫기 조건의 예를 제공합니다. 거기에 무엇이 잘못되었을 수 있습니까?
조용한. 그러나 두 경우 모두 포지션을 닫지 않습니다
추신 : 포즈를 닫고 여는 조건을 결정하는 데 오류가있는 것 같습니다.
위의 게시물은 닫기 조건의 예를 제공합니다. 거기에 무엇이 잘못되었을 수 있습니까?
글쎄, 오류없이 조용히 닫히지 않으면 닫는 조건이 적합하지 않습니다. 우리는 바로 이 조건을 다시 생각하고 다시 쓸 필요가 있습니다.
여기에서 대괄호는 어떻게 든 정렬되지 않았습니다.
if (((Yellow_0-Red_0)<(Yellow_1-Red_1) && ((MA_0<MA_1)&&(MA_1>MA_2))) || ((Yellow_0-Red_0)>(Yellow_1-Red_1) && ((MB_0<MB_1)&&(MB_1>MB_2))))
이대로라면?
if (((Yellow_0-Red_0<Yellow_1-Red_1) && (MA_0<MA_1 && MA_1>MA_2)) || ((Yellow_0-Red_0>Yellow_1-Red_1) && (MB_0<MB_1 && MB_1>MB_2)))