[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 776

 
vasya_vasya :
문자 코드를 선택하거나 레이블 유형의 개체를 사용해야 하는 경우 화살표 유형의 개체 생성을 통해

감사합니다) 아 그냥 포인트가 없는게 아쉽네요(
 
FoxUA :
ATP 같은 자세한 설명, 하지만 당신은 내가 WRITE AN ADVISOR FOR WORK를 하고 있다고 생각합니까? NO I LEARN how, what's work 여기에 올려진 교과서를 읽고 예시대로 하고 목표로 남겨둔 TC를 위해 어드바이저를 쓰려고 노력하지만 이 언어에 대해 배운지 일주일만 이름과 적용 장소 이상으로, 자신의 경험에서 너무 범주적일 필요는 없습니다. 처음부터 새로 구축하는 것보다 작동 중인 것을 분해하는 것이 낫지만 뉘앙스는 그것이 무엇을 위해 작동하는지 알아야 한다는 것입니다. , 여기에서 분해할 것이 많다는 것을 알게 되었지만, 무엇을 위한 것인지도 모르고 분해하기가 어렵다는 것을 알게 되었고, 그래서 새로 하나 만들어 보기로 하였지만, 당연히 하지 않을 것입니다. 모든 것을 볼 수 있습니다. 그런데 한 가지 작업은 시장 가격으로 보류 중인 주문을 여는 것이며 모든 것이 더도 이하도 아닙니다. 하지만 시간을 내주셔서 감사합니다.

화내지 마세요. 귀하의 코드는 초보자에게 어렵습니다. 단순한 것에서 복잡한 것으로 가야 합니다. 훈련 시스템이 있어야 합니다. 그렇지 않으면 공부를 해도 소용이 없습니다.
 
mql4를 사용하여 현재 차트 기간 에 없는 이 막대의 가격 또는 막대의 수를 알 수 있습니까? (이 막대의) 개장 시간을 알고 있다면?
 
drknn :

화내지 마세요. 귀하의 코드는 초보자에게 어렵습니다. 단순한 것에서 복잡한 것으로 가야 합니다. 훈련 시스템이 있어야 합니다. 그렇지 않으면 공부를 해도 소용이 없습니다.

여기에 동의하지 않습니다. 목표가 필요합니다. 이것이 가장 중요하고 다른 모든 것이 따를 것입니다. 그러나 물론 외부의 도움 없이는 할 수 없지만 복잡성에 대해서는 어떻게 생각하십니까? 로봇으로 쉽고 간단하지 않습니까? 나는 복잡한 계산이 포함된 지표로 큰 조언자를 만드는 것이 아니라 시장을 열고 연기한 다음 전체 세트를 수정 및 삭제하여 작동 원리와 서로 영향을 미치는 방법을 마스터하는 간단한 조언자를 만드는 것입니다! 하지만 저에게 조언을 해주신다면, 귀하의 의견은 매우 흥미롭습니다!
 
FoxUA :

여기에 동의하지 않습니다. 목표가 필요합니다. 이것이 가장 중요하고 다른 모든 것이 따를 것입니다. 그러나 물론 외부의 도움 없이는 할 수 없지만 복잡성에 대해서는 어떻게 생각하십니까? 로봇으로 쉽고 간단하지 않습니까? 나는 복잡한 계산이 포함된 지표로 큰 조언자를 만드는 것이 아니라 시장을 열고 연기한 다음 전체 세트를 수정 및 삭제하여 작동 원리와 서로 영향을 미치는 방법을 마스터하는 간단한 조언자를 만드는 것입니다! 하지만 저에게 조언을 해주신다면, 귀하의 의견은 매우 흥미롭습니다!


빌드 코드의 논리와 변수 이름 선택의 논리를 변경합니다. 이것이 우선입니다. 변수 이름이 5자 이상인 경우 아무 것도 없습니다. 코드 명확성, 이름 명확성, 공백에 의한 블록 구분, 단락 표시 및 주석을 위한 싸움에서 매우 중요합니다. 언어(MQL뿐만 아니라)를 더 많이 이해할수록 코드가 더 복잡해집니다. 읽기 쉬운 변수 이름을 지정하는 습관이 없고 코드를 블록으로 구성하는 습관이 없다면(설명 포함) 조만간 코드를 만들게 될 것입니다. 당신이 만든 코드가 너무 읽을 수 없다는 사실에 대해 자신을 저주하면서 길고 어려운 시간 동안 논리적 오류를 찾을 것입니다.

당신이 보여준 코드가 초보자에게 복잡해 보이지 않는다면 이것은 당신에게 단지 플러스일 뿐입니다.

 
FoxUA :
그러나 당신이 나에게 조언 할 수 있도록 당신의 의견은 매우 흥미 롭습니다!

다음은 블록으로 구성된 코드의 예입니다. 변수 이름을 보면 이 변수나 그 변수가 사용되는 이유를 명확하게 알 수 있습니다. 블록 주석에서 이름을 보십시오...

 
RekkeR :
모두 좋은 저녁 되시고 즐거운 한 주 되세요. 아마도 나는 열에 덤핑하는 바보 일 것입니다. 사실 문제는 결정하는 방법입니다. 선 사이의 거리를 점으로 표시합니까?

속도1=(가격12-가격11)/(바11-바12); 속도2=(가격22-가격21)/(바21-바22);

가격1=가격11+속도1*바11; 가격2=가격21+속도2*바21;

거리=(가격1-가격2)/포인트;

현재 시간에 두 직선 사이의 거리를 결정해야 하는 경우입니다.

 
drknn :

다음은 블록으로 구성된 코드의 예입니다. 변수 이름을 보면 이 변수나 그 변수가 사용되는 이유를 명확하게 알 수 있습니다. 블록 주석에서 이름을 보십시오...

거기에 글을 쓰고 싶었지만 기억이 나지 않을 때가 있다는 것을 기억해야 할 때가 있다는 데 동의하지만, 그것은 작업 방식에 가깝지만 연구가 아니라 예술가의 손에 붓을 말하는 것과 같습니다. 캔버스 선택과 간단한 작은 그림을 쓰는 기술에 관심이 있습니다. 이미 풍경화가이기 때문에 가지고 있고 명확하게 형성되어 있으므로 손에 재미있는 올무가있을 수 있는지 궁금합니다. 전문가를 쓰기 위한 기술에 대한 설명, 인터넷에서 모든 것이 여기 교과서 Toko와 다른 말로 동일하기 때문에 뿌리를 사용하여 쓴 것은 이런 기술 로봇입니다. 만약에 읽고 싶습니다 예시와 사진!

 
tara :

속도1=(가격12-가격11)/(바11-바12); 속도2=(가격22-가격21)/(바21-바22);

가격1=가격11+속도1*바11; 가격2=가격21+속도2*바21;

거리=(가격1-가격2)/포인트;

현재 시간에 두 직선 사이의 거리를 결정해야 하는 경우입니다.

여러 수평선 이 있습니다. 원칙적으로이 단계에서 두 줄 사이의 정의가 저에게 적합하고 나머지는 제 손으로 할 것입니다. 기성 스크립트나 이와 같은 표시기가 있을 수 있습니까? 당신의 응답을 주셔서 감사합니다.
 
FoxUA :

...

예와 그림이 있으면 읽고 싶은 것이 있습니다!

자, 실험을 해보자! 2개의 스크립트를 작성해 봅시다. 하나는 기능에 대한 올바른 설명을 포함합니다. 다른 하나는 잘못되었습니다. 따라서 올바른 스크립트는 다음과 같습니다.

 #property show_inputs //эта строка выводит окно пользовательских параметров на экран
extern double DlyaKornya= 300 ; // величина. из которой нужно извлечь кв. корень
//+------------------------------------------------------------------+
//|                 Старт работы правильного скрипта                 |
//|                 вычисляющего квадратный корень                   |
//+------------------------------------------------------------------+
int start(){
  double Koren= 0 ;
        Alert ( "--------------------------------------------" );
  if (DlyaKornya< 0 ){
    Alert ( "Ошибка! Переменная " ,DlyaKornya, " не может быть меньше нуля" );
    return ( 0 );
  }
  Koren=MyKoren(DlyaKornya);
  Alert ( "Наша подпрограмма выдала результат = " ,Koren);
        Alert ( "На вход функции MyKoren() было подано число = " ,DlyaKornya);
  Alert ( "---- Правильное применение функции ----" );
        return ( 0 );
}
//+------------------------------------------------------------------+
//|                  Пользовательские подпрограммы                   |
//+------------------------------------------------------------------+

// ------------ MyKoren() -------------------------------------
// функция возвращает квадратный корень числа
// ------------------------------------------
double MyKoren( double MyValue){
        double Rezult= 0 ;
        Alert ( "Внутри функции переменная MyValue имеет значение = " ,MyValue);
        Rezult= MathSqrt (MyValue);
        return (Rezult);
}

그리고 이것은 잘못된 스크립트입니다.

 #property show_inputs //эта строка выводит окно пользовательских параметров на экран
extern double DlyaKornya= 300 ; // величина. из которой нужно извлечь кв. корень
//+------------------------------------------------------------------+
//|                 Старт работы неправильного скрипта               |
//|                 вычисляющего квадратный корень                   |
//+------------------------------------------------------------------+
int start(){
  double Koren= 0 ;
        Alert ( "--------------------------------------------" );
  if (DlyaKornya< 0 ){
    Alert ( "Ошибка! Переменная " ,DlyaKornya, " не может быть меньше нуля" );
    return ( 0 );
  }
  Koren=MyKoren(DlyaKornya);
  Alert ( "Наша подпрограмма выдала результат = " ,Koren);
        Alert ( "На вход функции MyKoren() было подано число = " ,DlyaKornya);
  Alert ( "----НЕправильное применение функции ----" );
        return ( 0 );
}
//+------------------------------------------------------------------+
//|                  Пользовательские подпрограммы                   |
//+------------------------------------------------------------------+

// ------------ MyKoren() -------------------------------------
// функция возвращает квадратный корень числа
// ------------------------------------------
double MyKoren( double MyValue= 36 ){
        double Rezult= 0 ;
        Alert ( "Внутри функции переменная MyValue имеет значение = " ,MyValue);
        Rezult= MathSqrt (MyValue);
        return (Rezult);
}

double MyKoren( double MyValue= 36 ){ 행이 값 = 36으로 MyValue 변수를 초기화하기 때문에 올바르지 않습니다. 이것은 의미가 없습니다. 값 =를 DlyaKornya 변수의 값으로 전달하기 때문에 의미가 없습니다 .

이제 차트에 두 스크립트를 순차적으로 던집니다. 그리고 우리는 무엇을 볼 수 있습니까?

아아, 두 스크립트 모두 동일한 결과를 생성했습니다.

이론적으로 두 번째(잘못된) 스크립트는 값 = 6을 제공해야 합니다. 아마도 컴파일러에는 기본 제공 오류 방지 기능이 있습니다. 반복하기 때문에 double MyKoren( double MyValue= 36 ){ 행은 말이 안 됩니다. = 36 값으로 변수를 초기화하는 것은 매개변수를 지정하지 않고 함수를 호출한 경우에만 작동하는 것 같습니다. 우리의 경우 분명히 다음과 같은 일이 발생했습니다. 서브 루틴이 호출되었을 때 이중 MyValue 변수가 먼저 선언 된 다음 값 = 36이 할당되었으며 그 후에 만 DlyaKornya 변수에 있던 값이 할당되었습니다. 아마 다른 설명이 생각나지 않을 것입니다.

어쨌든, double MyKoren ( double MyValue= 36 ){ 과 같은 구성을 사용하지 않는 것이 낫지만 원래 대로 작성하는 것이 좋습니다. .