[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 5. - 페이지 56

 
안녕하세요! 세 개의 MA가 교차할 때 Alert() 호출을 구현하는 간단한 아이디어가 있습니다.
프로그램의 교차점에 대한 설명입니다. 모든 것이 작동하는 것처럼 보이지만 제대로 작동하지 않습니다. 변수 값을 소수점 이하 한 자리로 반올림하여
교차로를 중지합니다. 그리고 이 Alert()는 평균이 같은 위치에 있을 때까지 저를 북돋아줍니다. 한 번, 잘, 최대 5번까지 호출되도록 만드는 방법입니다.
//+------------------------------------------------------------------+
//| Глобальные переменные                                  |
//+------------------------------------------------------------------+
   extern int Period_MA_Blue = 4 ;         // Период 4-х расчётной синей МА (4 часа)
   extern int Period_MA_Green = 13 ;       // Период 13-ти расчётной зеленой МА (13 часов)
   extern int Period_MA_Orange = 50 ;      // Период 50-ти расчётной оранжевой МА (2 дня 2 часа)
   double MA_Blue_EURUSD, MA_Green_EURUSD, MA_Orange_EURUSD;
   string SMA_Blue_EURUSD,SMA_Green_EURUSD,SMA_Orange_EURUSD;

//+------------------------------------------------------------------+
//| Начало программы                                  |
//+------------------------------------------------------------------+

int init (){ return ( 0 );}
int EURUSD ()
      {
  
      if(SMA_Green_EURUSD == SMA_Orange_EURUSD && SMA_Blue_EURUSD > SMA_Orange_EURUSD )
         {
          // Если зеленая МА пересекает оранжевую МА и при этом синяя МА выше - сигнал к покупке.
          Alert ( "Cигнал на ПОКУПКУ паре EURUSD" );
          return ( 11 ); // 11 - на первой паре сигнал на покупку.
         }
  
      if(SMA_Green_EURUSD == SMA_Orange_EURUSD && SMA_Blue_EURUSD < SMA_Orange_EURUSD)
         {
          // Если зеленая МА пересекает оранжевую МА и при этом синяя МА ниже - сигнал к продаже.
          Alert( "Cигнал на ПРОДАЖУ паре EURUSD" );
          return( 10 ); // 20 - на первой паре сигнал на продажу.
         }     
      }
int start ()

   {

//+------------------------------------------------------------------+
//| Блок работы с EURUSD                               |
//+------------------------------------------------------------------+
   if( EURUSD() != 11 || EURUSD() != 10 )
      {
         // Если функция EURUSD() не зафиксировала ни один из сигналов, обрабатываем данные дальше.
         MA_Blue_EURUSD = iMA ( "EURUSD" , PERIOD_H1 ,Period_MA_Blue, 0 ,MODE_EMA,PRICE_CLOSE, 0 );
         MA_Green_EURUSD = iMA ( "EURUSD" , PERIOD_H1 ,Period_MA_Green, 0 ,MODE_EMA,PRICE_CLOSE, 0 );
         MA_Orange_EURUSD = iMA ( "EURUSD" , PERIOD_H1 ,Period_MA_Orange, 0 ,MODE_EMA,PRICE_CLOSE, 0 );
  
         SMA_Blue_EURUSD = MA_Blue_EURUSD;
     // Преобразование int в string
         SMA_Blue_EURUSD = StringSetChar (SMA_Blue_EURUSD, 6 , '');      // Округление до х.хххх
         SMA_Green_EURUSD = MA_Green_EURUSD;    // Преобразование int в string
         SMA_Green_EURUSD = StringSetChar (SMA_Green_EURUSD, 6 , '');    // Округление до х.хххх
         SMA_Orange_EURUSD = MA_Orange_EURUSD; // Преобразование int в string
         SMA_Orange_EURUSD = StringSetChar (SMA_Orange_EURUSD, 6 , ''); // Округление до х.хххх

      }

     }

int deinit (){ return ( 0 );}




루트에서 모든 것이 옳지 않다면 교차로를 추적하는 방법을 제안하십시오. 고맙습니다.
 
Zherart :
안녕하세요! 도와주세요. 세 개의 MA가 교차할 때 Alert() 호출을 구현하는 간단한 아이디어가 있습니다.
프로그램의 교차점에 대한 설명입니다. 모든 것이 작동하는 것처럼 보이지만 제대로 작동하지 않습니다. 변수 값을 소수점 이하 한 자리까지 반올림하여
교차로를 중지합니다. 그리고 이 Alert()는 평균이 같은 위치에 있을 때까지 저를 북돋아줍니다. 한 번, 잘, 최대 5번까지 호출되도록 만드는 방법 루트에서 모든 것이 옳지 않다면 교차로를 추적하는 방법을 제안하십시오. 고맙습니다.

 //+------------------------------------------------------------------+
//| Глобальные переменные                                  |
//+------------------------------------------------------------------+
   extern int Period_MA_Blue = 4 ;         // Период 4-х расчётной синей МА (4 часа)
   extern int Period_MA_Green = 13 ;       // Период 13-ти расчётной зеленой МА (13 часов)
   extern int Period_MA_Orange = 50 ;       // Период 50-ти расчётной оранжевой МА (2 дня 2 часа)
   double MA_Blue_EURUSD, MA_Green_EURUSD, MA_Orange_EURUSD;
   string SMA_Blue_EURUSD,SMA_Green_EURUSD,SMA_Orange_EURUSD;
   int БАРАБАНИТЬ = 1 ; // Сколько раз подавать сигнал
   int ПОКУПКА= 0 ,ПРОДАЖА= 0 ;
//+------------------------------------------------------------------+
//| Начало программы                                  |
//+------------------------------------------------------------------+

int init(){ return ( 0 );}
int EURUSD() 
      {
   
       if (SMA_Green_EURUSD == SMA_Orange_EURUSD && SMA_Blue_EURUSD > SMA_Orange_EURUSD)
         { 
           // Если зеленая МА пересекает оранжевую МА и при этом синяя МА выше - сигнал к покупке.
           if (ПОКУПКА<БАРАБАНИТЬ) { Alert ( "Cигнал на ПОКУПКУ паре EURUSD" );ПОКУПКА++;}
           return ( 11 ); // 11 - на первой паре сигнал на покупку.
         }
       else ПОКУПКА= 0 ;
       if (SMA_Green_EURUSD == SMA_Orange_EURUSD && SMA_Blue_EURUSD < SMA_Orange_EURUSD)
         { 
           // Если зеленая МА пересекает оранжевую МА и при этом синяя МА ниже - сигнал к продаже.
           if (ПРОДАЖА<БАРАБАНИТЬ) { Alert ( "Cигнал на ПРОДАЖУ паре EURUSD" );ПРОДАЖА++;}
           return ( 10 ); // 20 - на первой паре сигнал на продажу.
         }
       else ПРОДАЖА= 0 ;       
      }

어딘지 모르게...
 
세풀카, 감사합니다! 우리가해볼 게요. 요점을 얻었다!!!
 
아니면 내가 바보이거나 터미널에 뭔가 문제가 있습니다. 조언자를 최적화하고 싶었지만 전문가 속성에 "입력 매개변수" 탭이 없습니다. 돕다.
 
prom18 :
아니면 내가 바보이거나 터미널에 뭔가 문제가 있습니다. 조언자를 최적화하고 싶었지만 전문가 속성에 "입력 매개변수" 탭이 없습니다. 돕다.



https://forum.mql4.com/en/46980/page417#702426

https://www.mql5.com/ru/forum/138609/page417#702426

 

함수의 허용된 매개변수에 배열을 사용할 수 있습니까? 예를 들어 배열의 정보를 처리하는 함수를 만들어야 합니다.

 void Function( double Array[])
 {
  ...
 }
 
silhouette :

함수의 허용된 매개변수에 배열을 사용할 수 있습니까? 예를 들어 배열의 정보를 처리하는 함수를 만들어야 합니다.


교과서는 여기서 무엇을 말합니까?

"

전달된 매개변수 는 호출된 함수 이름 뒤의 괄호 안에 지정되며 쉼표로 구분되어 나열됩니다. 함수에 전달된 매개변수의 수는 64개를 초과할 수 없습니다. 함수는 전달된 매개변수를 사용할 수도 없습니다. 이 경우 빈 매개변수 목록이 지정됩니다. 함수 이름 바로 뒤에는 여는 괄호와 닫는 괄호가 있습니다.

함수 호출에서 전달된 매개변수의 수, 유형 및 순서는 함수 설명에 지정된 형식 매개변수의 수, 유형 및 순서와 일치해야 합니다(예외는 기본 매개변수가 있는 함수 호출입니다. 함수 호출함수 참조). 설명 및 반환 문 ). 일치하는 항목이 없으면 MetaEditor가 오류 메시지를 표시합니다. 상수, 변수, 표현식 및 배열을 전달된 매개변수로 사용할 수 있습니다. "

 
silhouette :

함수의 허용된 매개변수에 배열을 사용할 수 있습니까? 예를 들어 배열의 정보를 처리하는 함수를 만들어야 합니다.

다음과 같이 시도하십시오.

 void Function( double & Array[])
 {
  ...
 }
https://docs.mql4.com/ru/basis/variables/formal
 
Sepulca :


닫기 - iClose, 열기 - iOpen, 시간 - iTime 볼륨 - iVolume 등에도 동일하게 적용됩니다.

그리고 표시기는 0에서 7까지 최대 8개의 라인을 그릴 수 있습니다. https://docs.mql4.com/en/customind/indicatorbuffers


대단히 감사합니다 :) 표시가 아직 그려지지 않았습니다. price=iL[k]와 같은 라인에 오류가 있었습니다. 여기서 iL은 iLow...ex Low입니다.

일반적으로 나는 유용한 것들을 많이 배웠습니다 ...하지만 더 이상 파헤 치지는 않을 것입니다 ...

사용자 지정 표시기 없이 다시 그리기를 더 쉽게 시각화할 수 있는 방법이 있습니다.

 
Roman. :

교과서는 여기서 무엇을 말합니까?

"

전달된 매개변수 는 호출된 함수 이름 뒤의 괄호 안에 지정되며 쉼표로 구분되어 나열됩니다. 함수에 전달된 매개변수의 수는 64개를 초과할 수 없습니다. 함수는 전달된 매개변수를 사용할 수도 없습니다. 이 경우 빈 매개변수 목록이 지정됩니다. 함수 이름 바로 뒤에는 여는 괄호와 닫는 괄호가 있습니다.

함수 호출에서 전달된 매개변수의 수, 유형 및 순서는 함수 설명에 지정된 형식 매개변수의 수, 유형 및 순서와 일치해야 합니다(예외는 기본 매개변수가 있는 함수 호출입니다. 함수 호출함수 참조). 설명 및 반환 문 ). 일치하는 항목이 없으면 MetaEditor가 오류 메시지를 표시합니다. 상수, 변수, 표현식 및 배열을 전달된 매개변수로 사용할 수 있습니다. "

쓰기 전에 교과서를 읽고 밑줄이 그어진 것을 보았지만 실제로 구현할 수 없었습니다. 호환되지 않는 유형에 대해 씁니다.