MQL5 언어를 처음부터 자가 학습 - 페이지 80

 

오류가 있으므로 코드가 작성자가 의도한 대로 작동하지 않습니다. 그것을 알아낼 필요가 있습니다. 당신은 코드, 당신과 당신의 손에 카드를 가지고 있습니다.


보여주신 부분에서 촛불이 60개 미만이거나 표시기 중 하나의 핸들이 잘못된 매개변수를 보내는 것을 의미합니다. 또는 내가 보지 못한 코드의 다른 부분에 오류가 있습니다.

안부 인사를 전합니다. 블라디미르.

오 알렉스 ;)

 
MrBrooklin # :

문제가 어디에 있는지 알아낼 수 있었지만 다른 문제에 대해 질문했습니다. 이러한 오류는 무엇에 영향을 미치며 코드에서 이러한 오류를 제거하기 위해 변경해야 하는 사항은 무엇입니까?

안부 인사를 전합니다. 블라디미르.

오류가 발생하면 어드바이저가 차트에 첨부되지 않습니다.

할 것이 없다. 이미 수행해야 하는 작업 - 오류가 발생하면 어드바이저가 차트에서 연결 해제됩니다.

및 사용자에게 알립니다.

이 오류는 컴퓨터에서 완전한 혼란이 일어나는 경우를 제외하고는 실제로 발생하지 않습니다.

==

그러나 .. 개발 과정에서 지속적으로 발생한다면 ...

이는 표시기가 잘못 호출되었음을 의미합니다. 표시기 매개변수를 수정하십시오.

 
Dmitry Fedoseev # :

오류가 발생하면 어드바이저가 차트에 첨부되지 않습니다.

할 것이 없다. 이미 수행해야 하는 작업 - 오류가 발생하면 어드바이저가 차트에서 연결 해제됩니다.

및 사용자에게 알립니다.

이 오류는 컴퓨터에서 완전한 혼란이 일어나는 경우를 제외하고는 실제로 발생하지 않습니다.

==

그러나 .. 개발 과정에서 지속적으로 발생한다면 ...

이는 표시기가 잘못 호출되었음을 의미합니다. 표시기 매개변수를 수정하십시오.

상세하고 이해하기 쉬운 답변을 해주신 Dmitry님, 감사합니다!

안부 인사를 전합니다. 블라디미르.

 
SanAlex # :

여기에서 작동합니다 - 기간이 올바르게 설정되지 않았을 수 있습니다.

힌트 감사합니다!!! 실제로 문제는 테스터 설정에서 "0" 이상에서 두 지표에 대한 기간을 설정하는 것이 불가능했다는 것입니다. 적어도 "하나" 이상에서 설정해야 했습니다.

참여해주셔서 감사합니다!

안부 인사를 전합니다. 블라디미르.

 
MrBrooklin # :

추신 당신은 고문의 코드로 "풋웨어"를 제거할 것입니다. 그렇지 않으면 이 "풋웨어"가 많은 사람들을 짜증나게 합니다. 이미 내 것을 제거했습니다.

심하게 짜증이 나는 사람은 정기적으로 익모초 또는 비행 agaric 팅크를 복용하여 숲을 통과하게하십시오.

나도 이 신발장을 좋아하지는 않지만 그냥 보지는 않는다.

 
언어를 배우고자 하는 소수의 분과가 없어졌습니다. 무엇을 위한 것인가
 
Vladimir Baskakov # :
언어를 배우고자 하는 소수의 분과가 없어졌습니다. 무엇을 위한 것인가

블라디미르, 아주 간단합니다. 내가 공부하는 데 필요한 것 - 공부했습니다. 이제 나는 다른 조언자들을 받아 스스로 만듭니다. 가장 중요한 것은 이제 MQL5 프로그래밍 언어를 한자가 아닌 일반 소프트웨어 제품으로 본다는 것입니다. 독학에 도움을 준 모든 전문가들에게 깊은 감사를 드립니다!

안부 인사를 전합니다. 블라디미르.

 
MrBrooklin # :


저에게는 파일을 다운로드하여 샌드박스에 넣는 것보다 족쇄를 두는 것이 좋습니다. )

 

좋은 아침과 좋은 분위기 모두!

계속해서 MQL5 프로그래밍 언어를 독학하고 있습니다 . 배열을 다루어야 할 때가 왔습니다. 10개 통화 쌍에 대한 다중 통화 Expert Advisor에 대한 코드를 작성하고 Expert Advisor의 입력 매개변수에 지정된 위험에 따라 로트 크기를 계산하기로 결정했습니다. 컴파일 후 에러나 경고는 없으나 함수 코드 자체는 동작하지 않습니다. 말해주세요, 어디가 잘못되었나요?

안부 인사를 전합니다. 블라디미르.

 input double    Risk0= 1.0 ;           //Риск (% от баланса)
.
.
.
.
input double    Risk9= 1.0 ;           //Риск (% от баланса)

//+------------------------------------------------------------------+
//| Функция Money_Management рассчитывает размер лота в зависимости  |
//|  от риска, заданного во входных параметрах советника.            |
//+------------------------------------------------------------------+
double Money_Management()
  {
   static int Risk[];
   int Number= 0 ;
//----+ Объвляем переменную для хранения размеров массивов переменных
   static int Size_ = 0 ;
//----+ Изменяем размер массивов переменных
   if (Number + 1 > Size_)
     {
       uint size = Number + 1 ;
       //---- Предварительно обнуляем ячейки массива
      Risk[Number] = false ;
     }
   if (Risk[ 0 ] != Risk[Number])
     {
      Risk[Number] = Risk[ 0 ];
     }
   double Lots= AccountInfoDouble ( ACCOUNT_MARGIN_FREE )*Risk[Number]/ 100000 * 10 ;
   Lots= MathMin ( 5 , MathMax ( 0.1 ,Lots));
   if (Lots< 0.1 )
      Lots= NormalizeDouble (Lots, 2 );
   else
     {
       if (Lots< 1 )
         Lots= NormalizeDouble (Lots, 1 );
       else
         Lots= NormalizeDouble (Lots, 0 );
     }
   return (Lots);
  }
//+------------------------------------------------------------------+
 
MrBrooklin MQL5 프로그래밍 언어를 독학하고 있습니다 . 배열을 다루어야 할 때가 왔습니다. 10개 통화 쌍에 대한 다중 통화 Expert Advisor에 대한 코드를 작성하고 Expert Advisor의 입력 매개변수에 지정된 위험에 따라 로트 크기를 계산하기로 결정했습니다. 컴파일 후 에러나 경고는 없으나 함수 코드 자체는 동작하지 않습니다. 말해주세요, 어디가 잘못되었나요?

안부 인사를 전합니다. 블라디미르.

이거 안썼으면 진짜...

다음은 작업 기능입니다.

 /********************************************************************\
|   Calculate optimal lot size     Расчет объема лота                |
/********************************************************************/
double contractSize( double Lot)
 {
   double volume = Lot > 0.0 ? Lot : AccountInfoDouble ( ACCOUNT_MARGIN_FREE )/ 10000 ,
         v = volume,
         volumeStep = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_STEP ),
         minLot = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MIN ),
         maxLot = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MAX );
  v = round (volume/volumeStep)*volumeStep;
   return ( fmin (maxLot, fmax (minLot, v)));
 } /******************************************************************/

전체 무료 마진에서 계산하지 않으려면 위험 금액을 입력하는 것만으로 충분합니다 ...