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

 
MrBrooklin :

우리는 모든 것을 고유한 이름으로 불러야 합니다. 프로그래밍하는 순간 에는 코르크 마개처럼 멍청합니다 ! 나는 기본적인 것을 이해하지 못한다. 전자 분야에서 젊었을 때 얻은 지식은 예를 들어 룸 벨에서 원격 라디오 버튼을 수리하는 데 여전히 도움이 됩니다. 지난 주말에 멀티미터와 할아버지의 돋보기를 사용하여 미세한 크기의 결함이 있는 SMD 커패시터를 발견했습니다. 그것은 고장, 단락 또는 "염소"를 보여 주었는데, 이는 단락 회로, 즉 단락에서 호출하는 데 사용되었습니다. 단락. 다음은 스마트폰에서 4배 확대된 "펀칭된" SMD 커패시터와 Paint 에서 후속 처리하는 사진입니다. 너무 미시적.


나는 주제에서 조금 벗어나고 적어도 자랑 할 것은하기로 결정했습니다!

그리고 언어를 배우고자 하는 열망, 있는 그대로, 프로그래밍의 기초를 이해하고 싶은 희망에 대해.

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


수업! 그건 그렇고,이 모든 것들은 근처에 있습니다 ...
우리 대학에서 90년대에 공부했는데, 이 부서들은 같은 정보 기술 학부에 있었습니다.
 
Roman Shiredchenko :

여기 - 당신과 동의하지 않을 수 있습니다. 코딩 할 수 있고해야합니다. 본질을 탐구하지 못하게하는 것 ... 이해하기 등 ... 또한 IMHO, 기사가 있으며 코드베이스에 로봇이 있습니다 - 읽기, 분해 이미 준비된 코드 - 바로 작성 스타일을 배웁니다. 왜 바퀴를 재발명해야 합니까? 유능한 코드에서 즉시 배우십시오.

다음은 V. Karputov의 트롤입니다. ROBOTS에 배치되었습니다. 여러분의 필요(조건 및 환상)에 맞게 편집하세요.

추신 분기의 주제 인 당신 덕분에 나는 기능에서 코드를 이해하기 시작했습니다 ... 기사를 연구하고 나 자신을 위해 기본 사항을 반복하십시오 ...

지점 주셔서 감사합니다! :-) (농담 아님)

안녕하세요 로만님! 생성된 주제가 나 말고 다른 누군가에게 도움이 된다는 글을 읽는 것이 좋습니다. 고맙습니다!

블라디미르 카르푸토프가 작성하는 코드는 나에게 아직 도달할 수 있는 수준이 아니다. 포함 파일과 클래스가 포함된 코드를 전혀 이해하지 못합니다. 이 또는 저 파일이 이 또는 저 Expert Advisor에 포함된 이유는 큰 미스터리입니다!

더 많이, 나는 포함된 파일과 클래스 없이 작성된 코드를 찾고 연구합니다. 독학의 경우 Vladimir Khlystov가 작성한 고문이 매우 좋습니다. 그에게 특별하고 큰 감사를 드립니다! MQL5에 Expert Advisors가 너무 적은 것이 유감입니다.

이제 기성 코드로 프롬프트를 표시하지 않는 이유를 설명하겠습니다. 사실은 기성 코드로 프롬프트가 표시되면 언어를 철저히 연구하는 데 이미 관심을 잃는다는 것입니다. 나는 기성품 코드를 내 고문에게 삽입했고, 작동했으며, 그 용도는 무엇입니까? 그러나 예를 들어 지금 내가 사이클 운영자와 오해가 있는 것처럼 무언가를 즉시 이해하고 작성할 수 없을 때 이것은 반대입니다. 그것은 어머니가 슬퍼하지 않을 정도로 저를 자극하고 동기를 부여합니다!

MQL5 언어를 배우는 데 아무런 문제가 없다고 생각합니다. 지금은 전자공학을 하다가 한 원소 기초 공부에서 다른 기초 공부로 옮겼을 때와 거의 같은 단계에 이르렀습니다. 유일한 차이점은 젊었을 때 모든 것이 지금보다 더 쉽게 인식하고 동화된다는 것입니다. 이미 느꼈다.

지원의 말과 건설적인 조언에 대해 ALL에게 진심으로 감사드립니다! MQL5 프로그래밍 언어 배우기 - 계속! 나는 반나절 동안 "사라질" 것입니다. 왜냐하면 나는 모스크바의 다른 쪽 끝으로 사업을 계속해야 하고 계속할 것입니다.

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

 
Aleksey Masterov :

수업! 그건 그렇고,이 모든 것들은 근처에 있습니다 ...
우리 대학에서 90년대에 공부했는데, 이 부서들은 같은 정보 기술 학부에 있었습니다.

  90년대에는 졸업장을 샀습니다.

-이 위원장들이 모든 사무실에 앉아있는 것이 분명하지 않습니까?

 
SanAlex :

  90년대에는 졸업장을 샀습니다.

-이 위원장들이 모든 사무실에 앉아있는 것이 분명하지 않습니까?

그 당시에는 졸업장을 구입할 수 있는 능력이 없었습니다. 사실은 지난 30년 동안 기술이 너무 발전하여 지식이 이미 매우 부족하다는 것입니다. 예를 들어, 저는 AutoCAD에서 공부를 마쳐야 했습니다. 그 당시에는 단순히 존재하지 않았으며 매우 기본적인 C++도 수행했습니다. 그래서 모든 것에서 끊임없이 연구하고, 개선하고, 시대를 따라갈 필요가 있습니다)

 
VVT :

그 당시에는 졸업장을 구입할 수 있는 능력이 없었습니다. 사실은 지난 30년 동안 기술이 너무 발전하여 지식이 이미 매우 부족하다는 것입니다. 예를 들어, 저는 AutoCAD에서 공부를 마쳐야 했습니다. 그 당시에는 단순히 존재하지 않았으며 매우 기본적인 C++도 수행했습니다. 그래서 모든 것에서 끊임없이 연구하고, 개선하고, 시대를 따라갈 필요가 있습니다)

지난 30년 동안 기술은 지금까지 발전하여 60년대의 발전을 여전히 사용하고 있습니다.

 

좋은 오후에요 여러분!

나는 조금 추가하고 싶었습니다. 주제는 흥미 롭습니다. " MQL5 언어 를 완전히 처음부터 스스로 배우기"라는 아이디어는 완전히 사실이 아닌 것 같습니다. 사람이 프로그래밍에서 0이면 그는 먼저 프로그래밍 방법을 배워야 합니다. 목표가 처음부터 MQL로 프로그래밍하는 방법을 배우는 것이라면, 먼저 최소한 C로 프로그래밍하는 방법을 배워야 하고, 그런 다음 MQL이 본질적으로 C이지만 전문화되어 있기 때문에 MQL 로 작성하는 방법을 배워야 합니다. 특정 작업을 위해 날카롭게 된 사람은 주기가 어떻게 작동하는지 이해하지 못하지만 이미 모든 프로그램에서 작성하려고 합니다. 러시아어를 몰라도 페냐를 배우려는 것과 같으니...

또 다른 점은 C는 프로그래밍 학습에 가장 친숙한 언어가 아니며 단순하지만 너무 간결하여 초보자가 알고리즘, 데이터 유형, 부울 대수에 대한 기본 개념 없이 코드를 읽고 이해하기 어렵다는 것입니다. C에서 연속 3개의 문자는 다른 언어에서 여러 줄의 의미를 전달할 수 있습니다.

처음부터 간단히 프로그래밍하는 방법을 배우려면 컴퓨터와 하나의 언어(어느 것이든 상관 없음)로 말하는 방법을 배우기 위해 가장 쉬운 풀이 책인 Pascal부터 시작하는 것이 좋습니다. (편안한 2-3 주), 그 다음 C (여기서, 파스칼 후, 근면으로 최대 주, 구문을 마스터, 나는 언어의 기본 지식에 대해 이야기하고 있습니다!) 그리고 나서 다음과 같은 전문 언어를 취하십시오. MQL은 MQL이 C이기 때문에 몇 가지 문제가 있지만 단순화도 있습니다. 한 작업에서 날카롭게 되고 컴파일러는 명백한 자체를 알고 있기 때문입니다. 그리고 C는 차례로 RAR에 의해 압축된 그런 파스칼이지만 파스칼은 거의 영어입니다 =).

이제 주기:

내가 프로그래밍을 배울 때 대수학의 합과의 유비가 나를 도왔습니다. 여기서 n의 초기 값, n의 최종 값 및 계산을 위한 이 n이 있는 공식이 표시됩니다.

 
VVT :

그 당시에는 졸업장을 구입할 수 있는 능력이 없었습니다. 사실은 지난 30년 동안 기술이 너무 발전하여 지식이 이미 매우 부족하다는 것입니다. 예를 들어, 저는 AutoCAD에서 공부를 마쳐야 했습니다. 그 당시에는 단순히 존재하지 않았으며 매우 기본적인 C++도 수행했습니다. 그래서 모든 것에서 끊임없이 연구하고, 개선하고, 시대를 따라갈 필요가 있습니다)



:-) 오토캐드가 있었습니다. 우리는 기초에서 수업을 듣고 회로와 레이어의 배열을 가르쳤습니다 ... 인쇄 회로 기판
 
Aleksey Masterov :
:-) 오토캐드가 있었습니다. 우리는 기초에서 수업을 듣고 회로와 레이어의 배열을 가르쳤습니다 ... 인쇄 회로 기판

우리는 수업이 끝날 때만로드 된 22 대의 컴퓨터 만 가지고있었습니다.) 선생님은 낮에는 단순히 전원을 끄지 않았고, 작업은 불가능했으며, 캐드에 대한 이야기조차 없었습니다 ...

 
MrBrooklin :

안녕하세요 로만님! 생성된 주제가 나 말고 다른 누군가에게 도움이 된다는 글을 읽는 것이 좋습니다. 고맙습니다!

블라디미르 카르푸토프가 작성하는 코드는 나에게 아직 도달할 수 있는 수준이 아니다. 포함 파일과 클래스가 포함된 코드를 전혀 이해하지 못합니다. 이 또는 저 파일이 이 또는 저 Expert Advisor에 포함된 이유는 큰 미스터리입니다!

더 많이, 나는 포함된 파일과 클래스 없이 작성된 코드를 찾고 연구합니다. 독학의 경우 Vladimir Khlystov가 작성한 고문이 매우 좋습니다. 그에게 특별하고 큰 감사를 드립니다! MQL5에 Expert Advisors가 너무 적다는 것은 유감입니다.

이제 기성 코드로 프롬프트를 표시하지 않는 이유를 설명하겠습니다. 사실은 기성 코드로 프롬프트가 표시되면 언어를 철저히 연구하는 데 이미 관심을 잃는다는 것입니다. 나는 기성품 코드를 내 고문에게 삽입했고, 작동했고, 그 용도는 무엇입니까? 그러나 예를 들어 지금 내가 사이클 운영자와 오해가 있는 것처럼 무언가를 즉시 이해하고 작성할 수 없을 때 이것은 반대입니다. 그것은 어머니가 슬퍼하지 않을 정도로 저를 자극하고 동기를 부여합니다!

MQL5 언어를 배우는 데 아무런 문제가 없다고 생각합니다. 지금은 전자공학을 하다가 한 원소 기초 공부에서 다른 기초 공부로 옮겼을 때와 거의 같은 단계에 이르렀습니다. 유일한 차이점은 젊었을 때 모든 것이 지금보다 더 쉽게 인식하고 동화된다는 것입니다. 이미 느꼈다.

지원의 말과 건설적인 조언에 대해 ALL에게 진심으로 감사드립니다! MQL5 프로그래밍 언어 배우기 - 계속! 나는 반나절 동안 "사라질" 것입니다. 왜냐하면 나는 모스크바의 다른 쪽 끝으로 사업을 가야 하고, 그리고 나서 계속할 것입니다.

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

네. 동의합니다. 그의 코드도 윙윙거립니다 ! 당신은 처음부터 자신을 감습니다. 서두르지 않고 침착하게 코드를 이해하면 됩니다. 여기 에 모든 것이 기본입니다 - 우리는 선택하고 트롤링합니다. (훨씬 쉽습니다 - 필수 위치를 선택하는 주제 ... :-))

 //--- при таком методе мы будет сюда попадать на каждом тике.
   for ( int i= PositionsTotal ()- 1 ;i>= 0 ;i--)
       if (m_position.SelectByIndex(i))
         if (m_position. Symbol ()== Symbol () && m_position.Magic()==m_magic)
           {
             //--- TrailingStop -> подтягивание StopLoss у ПРИБЫЛЬНОЙ позиции
             if (m_position.PositionType()== POSITION_TYPE_BUY )
              {
               //--- когда у позиции ещё нет StopLoss
               if (m_position.StopLoss()== 0 )
                 {
                   //--- пока StopLoss равен 0.0, TrailingStep не учитываем
                   if (m_symbol.Bid()-ExtTrailingStop>m_position.PriceOpen())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),m_position.PriceOpen(), 0.0 );
                    }
                 }
               //--- у позиции уже есть StopLoss
               else
                 {
                   //--- теперь TrailingStep нужно учитывать, иначе мы будет модифицировать
                   //--- поизцию НА КАЖДОМ ТИКЕ, а это ПЛОХО
                   if (m_symbol.Bid()-ExtTrailingStop-ExtTrailingStep>m_position.StopLoss())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),
                                             NormalizeDouble (m_symbol.Bid()-ExtTrailingStop,m_symbol. Digits ()), 0.0 );
                    }
                 }
              }

             if (m_position.PositionType()== POSITION_TYPE_SELL )
              {
               //--- когда у позиции ещё нет StopLoss
               if (m_position.StopLoss()== 0 )
                 {
                   //--- пока StopLoss равен 0.0, TrailingStep не учитываем
                   if (m_symbol.Ask()+ExtTrailingStop<m_position.PriceOpen())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),m_position.PriceOpen(), 0.0 );
                    }
                 }
               //--- у позиции уже есть StopLoss
               else
                 {
                   //--- теперь TrailingStep нужно учитывать, иначе мы будет модифицировать
                   //--- поизцию НА КАЖДОМ ТИКЕ, а это ПЛОХО
                   if (m_symbol.Ask()+ExtTrailingStop+ExtTrailingStep<m_position.StopLoss())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),
                                             NormalizeDouble (m_symbol.Ask()+ExtTrailingStop,m_symbol. Digits ()), 0.0 );
                    }
                 }
              }
           }
  }

또한 포함된 파일 - 이는 해당 파일이 함수 형태로 유형 코드에 위치한다는 것을 의미합니다.

 #include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>  
 

여기에 2010년 후행의 또 다른 기사 가 있습니다. 후행은 MACD 표준 제공의 Expert Advisor에 있습니다.



포지션 계산량에 대한 또 다른 멋진 정보입니다!!! 내 자신을 깊이 ... :-)

심볼에서 위치의 전체 볼륨을 결정하는 또 다른 방법이 있습니다. 루프의 모든 위치를 살펴보고 위치의 수는 PositionsTotal() 함수에 의해 결정됩니다. PositionGetSymbol() 함수로 확인하여 원하는 기호를 찾고 위치의 볼륨과 방향을 결정합니다( ID가 POSITION_VOLUMEPositionGetDouble() ID가 POSITION_TYPE 인 PositionGetInteger()).

이 경우 완전히 준비된 함수는 다음과 같습니다.

 double fSymbolLots( string aSymbol)
  {
   double TmpLots= 0 ;
   for ( int i= 0 ;i< PositionsTotal ();i++) // Перебор всех позиций
     {
       if ( PositionGetSymbol (i)==aSymbol) // Найдена позиция с заданным символом
        {
         TmpLots= PositionGetDouble ( POSITION_VOLUME );
         if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_SELL )
           {
            TmpLots*=- 1 ; // В зависимости от направления позиции устанавливаем знак числа
           }
         break ;
        }
     }
   TmpLots= NormalizeDouble (TmpLots, 2 );
   return (TmpLots);
  }
Как создать свой Trailing Stop
Как создать свой Trailing Stop
  • www.mql5.com
Перед тем как приступить к разговору на тему статьи, предлагаю расставить точки над i. Лишний раз не помешает определиться с понятиями "позиция" и "ордер": Позиция - это рыночное обязательство, количество купленных или проданных контрактов по финансовому инструменту. Позиция по одному инструменту может быть только одна. Ордер - это распоряжение...