MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 880

 
Mikhail Rudyk :

로봇은 이 차트에 있을 뿐이지만 로봇을 위한 기술과 같은 현재 옵션과 동일한 옵션을 거래합니다.

이 줄 붙여넣기

 void Open( int lot, string comment)
   {
               bool eror= false ;
               int step= 0 ;
               if ( TerminalInfoInteger ( TERMINAL_TRADE_ALLOWED )== 1 )
                  {
                           while (eror== false &&step< 10 )
                              {
                                 double bid= SymbolInfoDouble (symbolName, SYMBOL_BID );
                                 ResetLastError ();
                                 eror=Trade.Buy(lot,symbolName,bid, 0 , 0 ,comment);
                                 step++;
                                 Sleep ( 200 );
                                 if (eror== false ) Print ( "error - " , GetLastError ());
                              }
                  }
   }
 

놓다

하지만 오류를 재설정하는 것이 도움이 될 것 같지는 않습니다.

 
Mikhail Rudyk :

하지만 오류를 재설정하는 것이 도움이 될 것 같지는 않습니다.

그래서 아직도

 #include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

void Open( int lot, string comment)
   {
               bool eror= false ;
               int step= 0 ;
               if ( TerminalInfoInteger ( TERMINAL_TRADE_ALLOWED )== 1 )
                  {
                           while (eror== false &&step< 10 )
                              {
                                 double bid= SymbolInfoDouble (symbolName, SYMBOL_BID );
                                 ResetLastError ();
                                 // eror=Trade.Buy(lot,symbolName,bid,0,0,comment); // закомментировать
                                 eror= OrderSend (symbolName, OP_BUY, lot, bid, 0 , 0 , 0 , comment);
                                 step++;
                                 Sleep ( 200 );
                                 if (eror== false ) Print ( "error - " , GetLastError ());
                              }
                  }
   }
 

나는 이미 이것을했고 효과가있었습니다.

그러나 오류의 사실은 해결되지 않습니다

당신의 도움을 주셔서 대단히 감사합니다

동안(오류==거짓&&단계<10)
{
이중 입찰=SymbolInfoDouble(symbolName, SYMBOL_BID );
재설정 마지막 오류();
eror=Trade.Buy(lot,symbolName,bid,0,0,comment);
단계++;
수면(200);
if(오류==거짓)
{
Print("오류 - ",GetLastError());
if(GetLastError()==4754){OnInit();}
}
}

 
Mikhail Rudyk :

오류 사실이 해결되지 않음

이것이 내가 이 옵션 을 제안한 이유입니다.

 
fxsaber :

이것이 내가 이 옵션 을 제안한 이유입니다.

글쎄 내가 시도 할거야

하지만 표준 클래스가 작동하지 않는 이유

 
Mikhail Rudyk :

글쎄 내가 시도 할거야

하지만 표준 클래스가 작동하지 않는 이유

대체 라이브러리가 작동하면 파기할 위치가 명확해질 것입니다.

각 라이브러리의 문제를 재현할 수 없습니다.

 
Mikhail Rudyk :

나는 이미 이것을했고 효과가있었습니다.

동안(오류==거짓&&단계<10)
{
이중 입찰=SymbolInfoDouble(symbolName, SYMBOL_BID );
재설정 마지막 오류();
eror=Trade.Buy(lot,symbolName,bid,0,0,comment);
단계++;
수면(200);
if(오류==거짓)
{
Print("오류 - ",GetLastError());
if(GetLastError()==4754){OnInit();}
}
}

작동하지 않아야 합니다. 4754는 OrdersTotal이 0보다 크지만 OrderSelect 또는 OrderGetTicket이 중단될 때 발생합니다.

이것은 매우 드물지만 이 경우는 아닙니다. 여기에서 서버/기호는 매우 구체적이어서 위치에서 동일한 쓰레기가 발생하지만 오류 4753만 발생합니다.

나는 이미 대체 성경, tk를 조정해야 할 준비를 했습니다. 발생하는 상황은 많은 논리학자에게 kirdyk를 당깁니다. 결국, 시장 주문을 거기에 보내고 서버에 와서 포지션을 만들고 같은 밀리초 안에 닫습니다. 그리고 터미널은 ping 때문에 이미 소급하여 정보를 수신합니다.

나는 모든 것이 완벽하게 작동한다는 사실에 즐겁게 놀랐습니다.


서버/심볼 자체가 ddosed, 오류가 발생하지 않았습니다.


PS 손으로 포즈를 열 수 없으며 MQL을 통해서만 가능합니다.

 

로봇이 매달리지 않도록 도왔다는 뜻

 
Mikhail Rudyk :

로봇이 매달리지 않도록 도왔다는 뜻

그런 다음 OnInit를 표시합니다. 이제 그것은 말도 안되는 것처럼 보입니다. 계속되는 동안.