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

 

안녕하세요!

추세선 이 차트에 프로그래밍 방식으로 그려지면 원하는 지점에서 해당 값을 읽을 수 있는지 알려주세요(다시 프로그래밍 방식으로).

 
demlin :

안녕하세요!

추세선이 차트에 프로그래밍 방식으로 그려지면 원하는 지점에서 해당 값을 읽을 수 있는지 알려주세요(다시 프로그래밍 방식으로).

일단 추세선을 따라 차트에서 원하는 지점을 검색하는 기사를 썼습니다. 자신을 위한 것을 찾을 수 있는지 확인 하십시오 ... :)
 
demlin :

안녕하세요!

추세선이 차트에 프로그래밍 방식으로 그려지면 원하는 지점에서 해당 값을 읽을 수 있는지 알려주세요(다시 프로그래밍 방식으로).


불가능할 것 같지만 정말 원한다면 어느정도는 가능합니다... :-P
 
Roman. :

불가능할 것 같지만 정말 원한다면 어느정도는 가능합니다... :-P

정말 원해요 :)

지표를 만들고 싶었지만 지표를 처음 다루다 보니 뭔가 무디네요. 선은 원래대로 그려 지지만 값이 포함된 배열을 압축할 위치를 따라잡을 수 없습니다. 결국 어디에도 어울리지 않았다.

 
artmedia70 :
일단 추세선을 따라 차트에서 원하는 지점을 검색하는 기사를 썼습니다. 자신을 위한 것을 찾을 수 있는지 확인 하십시오 ... :)
감사합니다 거기에 직선의 기능을 뽑았는데 조금 비틀어 보겠습니다
 

모든 것이 MoveFileA로 전달되었습니다. 엑스퍼트 님, 정말 감사합니다!

 
demlin :

정말 원해요 :)

지표를 만들고 싶었지만 지표를 처음 다루다 보니 뭔가 무디네요. 선은 원래대로 그려지지만 값이 포함된 배열을 압축할 위치를 따라잡을 수 없습니다. 결국 어디에도 어울리지 않았다.

그리고 당신은 코드를 보여주고 당신이 원하는 것을 말했을 것입니다. 그리고 직선 방정식이 없었다면 그렇게 했을 것입니다... 글쎄, 이것은 지표이고 필요한 모든 데이터는 버퍼에 있습니다... 비록.. . :)
 
추측할 수 있을 것 같아요... 구성된 추세선이 있는 경우 직선 방정식 함수를 사용하여 초기 지점 값에서 끝 지점 값까지 루프를 실행하고 각 막대에 반환된 값을 입력합니다 직선 방정식 함수에 의해 이 하나의 표시기 배열에 대해 생성된 것으로 변환됩니다. 그런 다음 원하는 막대의 번호를 사용하여 배열에서 이러한 값을 가져옵니다. 이 같은...
 
artmedia70 :
그리고 당신은 코드를 보여주고 당신이 원하는 것을 말했을 것입니다. 그리고 직선 방정식이 없었다면 그렇게 했을 것입니다... 글쎄, 이것은 지표이고 필요한 모든 데이터는 버퍼에 있습니다... 비록.. . :)

다음은 같은 사이트의 교과서에서 발췌한 코드입니다. :)

 #property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"

#property indicator_chart_window

extern int History= 21 ;         // Колич.баров в расчётной истории
extern int M= 3 ;           // начальный бар с которого начинаем поиск фракталов в цикле.
int     i,k;                 // номера баров в циклах.
int     Vnf3,Vnf2,Vnf1;     // номера реперных фракталов (1-ый справа на графике на нисходящем тренде).
int     VnfL3,VnfL2,VnfL1;   // номера реперных фракталов (1-ый справа на графике на восходящем тренде).
int     VFN,VFNL;           // счетчик найденных фракталов.
int     Md,MdL;             // счетчики кол-ва модификаций

double VMF1,VMF2;     // промежуточные значения верхних фракталов на нисходящем тренде.
double VMFL1,VMFL2;   // промежуточные значения нижних фракталов на восходящем тренде.
double VlFl_L;             // Min значение ближайшего нижнего фрактала на тренде вниз
double VlFl_H;             // Max значение ближайшего верхнего фрактала на тренде вверх
datetime tim1_L;           // Время ближайшего нижнего фрактала после нисходящего тренда 
datetime timL1_H;           // Время ближайшего верхнего фрактала после восходящего тренда 

datetime tim1,tim2,tim3;   // время для построения линий вилки Чувашова.
datetime timL1,timL2,timL3; // время для построения линий вилки Чувашова.

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int     counted_bars= IndicatorCounted ();
//----
   for (i= 3 ;i<=History;i++)
    { //цикл
     if (High[i]>High[i+ 1 ] &&High[i]>High[i- 1 ]&&High[i]>Close[i- 2 ])
     { //фрактал
      VFN++;           // счетчик найденного фрактала.
       // ------------------------------------------------------------+
       if (VFN== 1 )       // если 1-ый фрактал найден, запоминаем значения: Max[i], № свечи[i], время[i]:
        { // f1
           Vnf1=i;         // запоминаем номер Max бара найденного фрактала.
           VMF1=High[i];   // запоминаем Max значение 1-ого найденного фрактала.
           tim1= iTime ( NULL , 0 ,i);         // запоминаем время 1-ой опорной точки.
         } //-f1
     // --------------------------------------------------------------+
     if (VFN== 2 )         // если 2-ый фрактал найден, запоминаем значения: Max[i], № свечи[i], время[i]:
      { // f2
          VMF2=High[i];     // запоминаем Max значение 2-ого найденного фрактала.
           if (VMF2>VMF1)     // если Max значение 2-го фрактала больше 1-го (т.е. направлена вниз),
            {
              Vnf2=i;       // запоминаем номер Max бара найденного фрактала.
              tim2= iTime ( NULL , 0 ,i);       // запомним время 2-ой опорной точки.
            }
             else VFN=VFN- 1 ;
       } //-f2
     // --------------------------------------------------------------+

// ------------------------------------------------------------------+
   if (VFN== 2 ) break ; // найдены все 2 фрактала, выходим из цикла.
// ------------------------------------------------------------------+ 
    } //-фрактал                      
   } //-цикл 
//----

for (i= 3 ;i<=History;i++)
    { //цикл
     if (Low[i]<Low[i+ 1 ] &&Low[i]<Low[i- 1 ]&&Low[i]<Close[i- 2 ])
     { //фрактал
      VFNL++;           // счетчик найденного фрактала.
       // ------------------------------------------------------------+
       if (VFNL== 1 )       // если 1-ый фрактал найден, запоминаем значения: Max[i], № свечи[i], время[i]:
        { // f1
           VnfL1=i;         // запоминаем номер Max бара найденного фрактала.
           VMFL1=Low[i];   // запоминаем Max значение 1-ого найденного фрактала.
           //Comment("VMFL1=",VMFL1);
           timL1= iTime ( NULL , 0 ,i);         // запоминаем время 1-ой опорной точки.
         } //-f1
     // --------------------------------------------------------------+
     if (VFNL== 2 )         // если 2-ый фрактал найден, запоминаем значения: Max[i], № свечи[i], время[i]:
      { // f2
          VMFL2=Low[i];     // запоминаем Max значение 2-ого найденного фрактала.
           if (VMFL2<VMFL1)     // если Max значение 2-го фрактала больше 1-го (т.е. направлена вниз),
            {
              VnfL2=i;       // запоминаем номер Max бара найденного фрактала.
              timL2= iTime ( NULL , 0 ,i);       // запомним время 2-ой опорной точки.
            }
             else VFNL=VFNL- 1 ;
       } //-f2
     // --------------------------------------------------------------+

// ------------------------------------------------------------------+
   if (VFN== 2 ) break ; // найдены все 2 фрактала, выходим из цикла.
// ------------------------------------------------------------------+ 
    } //-фрактал                      
   } //-цикл 


DelLine();DelLineH();CreateLine();CreateLineH();
   return ( 0 );
  }
//+------------------------------------------------------------------+

void DelLine()         // Удаление трендовых линий Sell и значков для вилки Чувашова 
   {
   ObjectDelete ( "Tr_down1" );
   // ObjectDelete("Tr_down2");
   // ObjectDelete("Frak_1");
   //ObjectDelete("Frak_2");
   //ObjectDelete("Frak_3");
   }

void DelLineH()         // Удаление трендовых линий BUY и значков для вилки Чувашова 
   {
   ObjectDelete ( "Tr_up1" );
   //ObjectDelete("Tr_up2");
   //ObjectDelete("Fr_1");
   //ObjectDelete("Fr_2");
   //ObjectDelete("Fr_3");
   }
void CreateLine()       // Создание и отрисовка трендовых линий Sell линий вилки Чувашова 
   {
   ObjectCreate ( "Tr_down1" , OBJ_TREND , 0 ,tim2,VMF2,tim1,VMF1);
   ObjectSet ( "Tr_down1" , OBJPROP_COLOR , Red );
   ObjectSet ( "Tr_down1" , OBJPROP_WIDTH , 1 );   // тонкой линией и 
   ObjectSet ( "Tr_down1" , OBJPROP_STYLE , STYLE_SOLID ); // пунктиром
   //ObjectCreate("Tr_down2",OBJ_TREND,0,tim2,VMF2,tim1,VMF1);
   //ObjectSet("Tr_down2",OBJPROP_COLOR,Aqua);
   // ObjectSet("Tr_down2",OBJPROP_WIDTH,1);  // тонкой линией и 
   // ObjectSet("Tr_down2",OBJPROP_STYLE,STYLE_DOT);// пунктиром 
   }
  
   void CreateLineH()       // Создание и отрисовка трендовых линий BUY линий вилки Чувашова 
   {
   ObjectCreate ( "Tr_up1" , OBJ_TREND , 0 ,timL2,VMFL2,timL1,VMFL1);
   ObjectSet ( "Tr_up1" , OBJPROP_COLOR , Green );
   ObjectSet ( "Tr_up1" , OBJPROP_WIDTH , 1 );   // тонкой линией и 
   ObjectSet ( "Tr_up1" , OBJPROP_STYLE , STYLE_SOLID ); // пунктиром
   //ObjectCreate("Tr_up2",OBJ_TREND,0,timL2,VMFL2,timL1,VMFL1);
   //ObjectSet("Tr_up2",OBJPROP_COLOR,Aqua);
   //ObjectSet("Tr_up2",OBJPROP_WIDTH,1);  // тонкой линией и 
   // ObjectSet("Tr_up2",OBJPROP_STYLE,STYLE_DOT);// пунктиром 
   }

두 줄로 끝내고 iCustom을 통해 모든 막대에서 해당 값을 읽고 싶습니다.

 

친애하는 포럼 사용자 여러분, 도와주세요!

다음 요구 사항을 가진 지표가 필요합니다. 1) 두 MA의 교차 (MA 유형, MA 기간, MA 적용 대상 및 시프트 선택 가능))

2) 인디케이터는 교차점 에 화살표를 그립니다 .

3) 건널 때 신호음이 울리고 이메일로 메시지가 전송됩니다.

4) 신호는 한 번만 주어집니다. MA를 건너는 순간.

MA_Shift_Crossover_Alert.mq4 및 2MA CrossoverWithPrice_fixed.ex4의 두 가지 지표가 있습니다.

그 중 첫 번째는 각 양초에 신호가 주어지고 MA를 넘은 후에는 적합하지 않습니다. 두 번째에서는 시프트(shift) MA를 설정할 수 없습니다.

MA를 두 번째 지표로 이동할 가능성을 어떻게든 추가할 수 있습니까?

지표는 아카이브에 첨부되어 있습니다.

고맙습니다.

파일: