초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 414

 
Leanid Aladzyeu :

침을 뱉다

유형 변환으로 인한 데이터 손실 가능성 .mq4 1697 29

SL의 더블 유형.

컴파일러는 이제 엄격해졌습니다. 다음과 같아야 합니다. MarketInfo는 이중 유형을 반환합니다.

sl = NormalizeDouble (sl,( int )MarketInfo( Symbol (),MODE_DIGITS));
 
Alexey Volchanskiy :

컴파일러는 이제 엄격해졌습니다. 다음과 같아야 합니다. MarketInfo는 이중 유형을 반환합니다.

변수 "sumbol"이 정확하고 수정자 래퍼에 변수로 있습니다.

ATP가 삽입되고 ( int ) 모든 것이 윙윙거립니다.

그리고 내가 21일 동안 고문을 쓴 경험을 알지 못하기 전에))

그리고 내 고문은 완고하게 최고의 무료 것들로 침입합니다))

 

Leanid Aladzyeu :

그리고 이전과 마찬가지로 21 일 동안 고문을 작성한 경험이 없습니다.)) 그리고 내 고문은 완고하게 최고의 무료 고문을 뚫습니다))

글쎄, 당신은 600 번째 버전 이전 MQL4가 끔찍하기 전에 매우 운이 좋았습니다. )) 고문 plz에 대한 링크를 던져, 개인에서 할 수 있습니다
 
Alexey Volchanskiy :
글쎄, 당신은 600 번째 버전 이전 MQL4가 끔찍하기 전에 매우 운이 좋았습니다. )) 고문 plz에 대한 링크를 던져, 개인에서 할 수 있습니다
내 닉네임과 제품에.
 

어떤 이유로 마지막 줄에 오류가 발생합니다.

'}' - 모든 제어 경로가 Expert4.mq4 값을 반환하는 것은 아닙니다.

void가 아닌 모든 함수는 return 문으로 끝나야 합니다.

비디오 강의에서 이 코드를 보고 있다는 것뿐이며 오래된 빌드에 대한 것일 수 있습니다.



#include#include <stderror.mqh>

//+----------------------------------------------- --------------------+
//| Expert4.mq4 |
//| 미하일 |
//| |
//+----------------------------------------------- --------------------+
#property copyright "미하일"
#속성 링크 ""
#속성 버전 "1.00"
#속성엄격

정수 신호 = 1;

정수 시작()
{
if (신호 == 1)
{
OrderSendX(Symbol(), OP_BUY, 0.2, 묻기, 30, 0, 0, "테스트", 123, 0, 파란색);
}
리턴(0);
}
//+----------------------------------------------- --------------------+
int OrderSendX(문자열 기호, int cmd, 이중 볼륨, 이중 가격, int 미끄러짐, 이중 손절매,
이중 수익 창출, 문자열 주석=NULL, int magic=0, datetime 만료=0, color arrow_color=CLR_NONE)
{
정수 오류 = GetLastError();
오류 = 0;
부울 exit_loop = 거짓;
정수 티켓 = -1;

int 재시도 = 10;
정수 cnt = 0;
if (cmd == OP_BUY || cmd == OP_SELL)
{
동안(!exit_loop)
{
티켓 = OrderSend(기호, cmd, 볼륨, 가격, 슬리피지, 손절매, 이익실현, 댓글, 매직, 만료, arrow_color);
오류 = GetLastError();

스위치(오류)
{
사례 ERR_NO_ERROR:
exit_loop = 참;
부서지다;

사례 ERR_SERVER_BUSY:
사례 ERR_NO_CONNECTION:
사례 ERR_INVALID_PRICE:
사례 ERR_OFF_QUOTES:
사례 ERR_BROKER_BUSY:
사례 ERR_TRADE_CONTEXT_BUSY:
cnt++;
부서지다;

사례 ERR_PRICE_CHANGED:


새로 고침();
계속하다;

기본:
exit_loop +true;
부서지다;

}
if (cnt > 재시도)
exit_loop = 참;


만약 (!exit_loop)
{
수면(1000);
새로 고침();

}
또 다른
{
if(err != ERR_NO_ERROR)
{
Print("오류: " + 오류);

}

}

if(err == ERR_NO_ERROR)
{
OrderSelect(티켓, SELECT_BY_TICKET,MODE_TRADES);
반환(티켓);
}

Print("오류: 주문 열기에 실패했습니다." + cnt + "시도");
반환(-1);


}// 동안
}//만약
}//출구
 
Mikhail Nikolaev :

여기....

}


}


반환(티켓);

}

 
Mikhail Nikolaev :

Leanid Aladzyeu :

포럼에 코드를 올바르게 붙여넣으십시오.

 
Mikhail Nikolaev :

어떤 이유로 마지막 줄에 오류가 발생합니다.

'}' - 모든 제어 경로가 Expert4.mq4 값을 반환하는 것은 아닙니다.

void가 아닌 모든 함수는 return 문으로 끝나야 합니다.

비디오 강의에서 이 코드를 보고 있다는 것뿐이며 오래된 빌드에 대한 것일 수 있습니다.



#include#include <stderror.mqh>

//+----------------------------------------------- ------ --------------------+
//| Expert4.mq4 |
//| 미하일 |
//| |
//+----------------------------------------------- ------ --------------------+
#property copyright "미하일"
#속성 링크 ""
#속성 버전 "1.00"
#속성엄격

정수 신호 = 1;

정수 시작()
{
if (신호 == 1)
{
OrderSendX(Symbol(), OP_BUY, 0.2, 묻기, 30, 0, 0, "테스트", 123, 0, 파란색);
}
리턴(0);
}
//+----------------------------------------------- ------ --------------------+
int OrderSendX(문자열 기호, int cmd, 이중 볼륨, 이중 가격, int 미끄러짐, 이중 손절매,
이중 수익 창출, 문자열 주석=NULL, int magic=0, datetime 만료=0, color arrow_color=CLR_NONE)
{
정수 오류 = GetLastError();
오류 = 0;
부울 exit_loop = 거짓;
정수 티켓 = -1;

int 재시도 = 10;
정수 cnt = 0;
if (cmd == OP_BUY || cmd == OP_SELL)
{
동안(!exit_loop)
{
티켓 = OrderSend(기호, cmd, 볼륨, 가격, 슬리피지, 손절매, 이익실현, 댓글, 매직, 만료, arrow_color);
오류 = GetLastError();

스위치(오류)
{
사례 ERR_NO_ERROR:
exit_loop = 참;
부서지다;

사례 ERR_SERVER_BUSY:
사례 ERR_NO_CONNECTION:
사례 ERR_INVALID_PRICE:
사례 ERR_OFF_QUOTES:
사례 ERR_BROKER_BUSY:
사례 ERR_TRADE_CONTEXT_BUSY:
cnt++;
부서지다;

사례 ERR_PRICE_CHANGED:


새로 고침();
계속하다;

기본:
exit_loop +true;
부서지다;

}
if (cnt > 재시도)
exit_loop = 참;


만약 (!exit_loop)
{
수면(1000);
새로 고침();

}
또 다른
{
if(err != ERR_NO_ERROR)
{
Print("오류: " + 오류);

}

}

if(err == ERR_NO_ERROR)
{
OrderSelect(티켓, SELECT_BY_TICKET,MODE_TRADES);
반환(티켓);
}

Print("오류: 주문 열기 실패" + cnt + "시도");
반환(-1);


}// 동안
}//만약
}//출구

젠장, 코드 형식을 지정하는 것이 정말 그렇게 어려운가요? 나는 원칙적으로 보지도 않을 것입니다. 나는 내 눈을 부수겠습니다.
 
이번에도 Ilie가 삽입되지 않았습니다.
 
Leanid Aladzyeu :
이번에도 Ilie가 삽입되지 않았습니다.

모든 것이 잘 작동합니다. 어떤 브라우저를 사용하시나요? 다른 것으로 변경하십시오. 폭스가 있습니다. 맨 마지막에 코드의 주석에 답을 주었습니다.

 #include <stderror.mqh>
//+------------------------------------------------------------------+
//|                                                      Expert4.mq4 |
//|                                                          Mikhail |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Mikhail"
#property link        ""
#property version    "1.00"
#property strict

int signal = 1 ;

int start()
{
   if (signal == 1 )
   {
      OrderSendX ( Symbol (), OP_BUY, 0.2 , Ask, 30 , 0 , 0 , "Test" , 123 , 0 , Blue);
   }
   return ( 0 );
}
//+------------------------------------------------------------------+
int OrderSendX ( string symbol, int cmd, double volume, double price, int slippage, double stoploss,
               double takeprofit, string comment= NULL , int magic= 0 , datetime expiration= 0 , color arrow_color=CLR_NONE)
{
   int err = GetLastError ();
   err = 0 ;
   bool exit_loop = false ;
   int ticket = - 1 ;
  
   int Retry = 10 ;
   int cnt = 0 ;
   if (cmd == OP_BUY || cmd == OP_SELL)
   {
       while (!exit_loop)
      {
         ticket = OrderSend (symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment,magic, expiration, arrow_color);
         err = GetLastError ();
        
         switch (err)
         {
             case ERR_NO_ERROR:
            exit_loop = true ;
             break ;
           
             case ERR_SERVER_BUSY:
             case ERR_NO_CONNECTION:
             case ERR_INVALID_PRICE:
             case ERR_OFF_QUOTES:
             case ERR_BROKER_BUSY:
             case ERR_TRADE_CONTEXT_BUSY:
            cnt++;
             break ;
           
             case ERR_PRICE_CHANGED:
           
          
            RefreshRates();
             continue ;
           
             default :
               exit_loop + true ;
               break ;
         
         }
         if (cnt> Retry)
            exit_loop = true ;
          
           
         if (!exit_loop)
            {
               Sleep ( 1000 );
               RefreshRates();
              
            }
             else
               {
                   if (err != ERR_NO_ERROR)
                  {
                   Print ( "ERROR: " + err);
                 
                  }
            
               }
              
               if (err == ERR_NO_ERROR)
               {
                   OrderSelect (ticket, SELECT_BY_TICKET,MODE_TRADES);
                   return (ticket);
               }
              
               Print ( "Error: order open failed after" + cnt + "atempts" );
               return (- 1 );
           
           
} //while
} //if
// тут надо вернуть какое-то значение, компилятор не понимает, что у вас есть return-ы внутри while, он не умеет анализировать код. Он ожидает, что при выходе из функции будет возвращаться значение
} //exit
사유: