[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 34

 

Merhaba!

Lütfen söyleyin, grafikte programlı olarak bir trend çizgisi çizilirse, değerini istenen noktada (yine programlı olarak) okumak mümkün müdür?

 
demlin :

Merhaba!

Lütfen söyleyin, grafikte programlı olarak bir trend çizgisi çizilirse, değerini istenen noktada (yine programlı olarak) okumak mümkün müdür?

Bir keresinde, trend çizgisi boyunca grafikte istenen noktanın arandığı bir makale yazdım. Bakalım kendinizden bir şeyler bulabilecek misiniz... :)
 
demlin :

Merhaba!

Lütfen söyleyin, grafikte programlı olarak bir trend çizgisi çizilirse, değerini istenen noktada (yine programlı olarak) okumak mümkün müdür?


İmkansız gibi görünüyor, ama gerçekten istiyorsan, o zaman bir nevi mümkün ... :-P
 
Roman. :

İmkansız gibi görünüyor, ama gerçekten istiyorsan, o zaman bir nevi mümkün ... :-P

Gerçekten istiyorum :)

Bir gösterge yapmak istedim ama ilk defa göstergelerle uğraştığım için bir şeyi körelttim. Çizgiler olması gerektiği gibi çizilmiş ama değerlerle diziyi nereye sıkıştıracağımı bir türlü yakalayamıyorum. Sonunda hiçbir yere sığmadı.

 
artmedia70 :
Bir keresinde, trend çizgisi boyunca grafikte istenen noktanın arandığı bir makale yazdım. Bakalım kendinizden bir şeyler bulabilecek misiniz... :)
Teşekkürler orda düz çizgi fonksiyonunu çıkardım biraz bükeyim
 

Her şey MoveFileA ile geçti. Çok teşekkürler, TheXpert !

 
demlin :

Gerçekten istiyorum :)

Bir gösterge yapmak istedim ama ilk defa göstergelerle uğraştığım için bir şeyi körelttim. Çizgiler olması gerektiği gibi çizilmiş ama değerlerle diziyi nereye sıkıştıracağımı bir türlü yakalayamıyorum. Sonunda hiçbir yere sığmadı.

Ve siz kodu gösterip ne istediğinizi söylerdiniz, görüyorsunuz ve düz çizgi denklemi olmadan da yapardı... Pekala, bu bir gösterge ve gerekli tüm veriler onun tamponlarında... Gerçi.. . :)
 
Sanırım tahmin edebilirim... Eğer oluşturulmuş bir trend çizgisi varsa, o zaman düz çizgi denklem fonksiyonunu kullanarak, başlangıç noktasının değerinden bitiş noktası değerine kadar döngüde çalıştırın ve her çubukta döndürülen değerleri girin düz çizgi denklem fonksiyonu ile bu tek gösterge dizisi için oluşturulana. Ardından, istenen çubuğun numarasını kullanarak bu değerleri diziden alın. Bunun gibi bir şey...
 
artmedia70 :
Ve siz kodu gösterip ne istediğinizi söylerdiniz, görüyorsunuz ve düz çizgi denklemi olmadan da yapardı... Pekala, bu bir gösterge ve gerekli tüm veriler onun tamponlarında... Gerçi.. . :)

İşte aynı siteden bir ders kitabından elbette yırtılmış kod :)

 #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);// пунктиром 
   }

İki satırla bitirmek ve iCustom aracılığıyla herhangi bir çubuktaki değerlerini okumak istiyorum

 

Sevgili forum kullanıcıları, yardım edin!

Aşağıdaki gereksinimlere sahip bir göstergeye ihtiyacınız vardır: 1) İki MA'nın kesişmesi (MA tipini, MA periyodunu, MA'nın nelere uygulanacağını ve kaymayı seçebilirsiniz))

2) Gösterge, kesişme noktasında bir ok çizer .

3) Geçiş anında sesli bir sinyal verilir ve e-postaya bir mesaj gönderilir.

4) Sinyal sadece bir kez verilir. MA'yı geçerken.

İki gösterge vardır: MA_Shift_Crossover_Alert.mq4 ve 2MA CrossoverWithPrice_fixed.ex4

Bunlardan ilkinde, her mumda ve MA'yı geçtikten sonra sinyalin verilmesi uygun değildir. İkincisinde, MA vardiyasını (vardiyasını) ayarlamak mümkün değildir.

MA'yı ikinci göstergeye kaydırma olasılığını bir şekilde eklemek mümkün müdür?

Göstergeler arşive eklenmiştir.

Teşekkür ederim.

Dosyalar: