Güle güle robot, yaşasın delilik - sayfa 4

 
Mislaid :

Koddaki satırın gösterimi ile sınır dışı dizisini kontrol etmek çok faydalıdır. Eskiden şöyleydi: sıfıra bölme ve istediğiniz yere bakın. Ve daha da kötüsü, hata görünmediyse.

Nasıl yapılacağına bir örnek verebilir misiniz? Belgelerde bu özellik hakkında hiçbir şey bulunamadı.
 
Andrei01 :
Nasıl yapılacağına bir örnek verebilir misiniz? Belgelerde bu özellik hakkında hiçbir şey bulunamadı.

Bu kadar! Şimdi hiçbir şey yapmana gerek yok. "Uzmanlar" sekmesini açın ve günlükleri okuyun. Bir hata oluşursa, bununla ilgili bir mesaj göreceksiniz. Tip:

dizi aralık dışında ....... koddaki satır numarasını gösterir.

 
Mislaid :

"Uzmanlar" sekmesini açın ve günlükleri okuyun.

Göstergeler ve komut dosyaları için çalışıyor mu?
 
Pavlick :

Komut dosyası/gösterge adının ilk harfinin büyük/küçük harf durumunu değiştirmeyi deneyin. Her nasılsa ben de buğuladım https://www.mql5.com/en/forum/152533/page2#982156

Not: peki, dizeyi char[] olarak değiştirin

Cevap ver, tavus kuşu!

Sen harika bir pavliksin ve aferin!

kodunuz hemen çalıştı!

şimdi fareyi kullanabilirsin

senaryo!

Göstergeye monte etmek için kalır

kodunuz göstergeye eklenir

küçük bir engel var

Editör adı tanımak istemiyor

script.i başlığı yerine yazdım

betiğin çağrılması gereken yerden.

sadece kalır   senaryo olması için

tanındı!

Yardım edebilir misin?

içten saygılarımla

panza

 
pansa :

Cevap ver, tavus kuşu!

Sen harika bir pavliksin ve aferin!

kodunuz hemen çalıştı!

şimdi fareyi kullanabilirsin

senaryo!

Göstergeye monte etmek için kalır

kodunuz göstergeye eklenir

küçük bir engel var

Editör adı tanımak istemiyor

script.i başlığı yerine yazdım

betiğin çağrılması gereken yerden.

sadece kalır   senaryo olması için

tanındı!

Yardım edebilir misin?

içten saygılarımla

pansa




bir şey olursa yardım ederim
 
Bu uyarılarla, hala çok iyi bir pusu var (en azından bir tane vardı). Boolean ifadelerinin önceliği değişti. Öncelik parantez içinde açıkça belirtilmediğinde, boolean ifadesinin şimdi öncekinden çok farklı bir etkisi olmasına rağmen, derleyici yalnızca bir uyarı verir. Teoride bu bir hata olmalı. Birisi uyarılara puan vermeye karar vermiş olabilir ve bunların arasında mantıklı bir ifadeyle ilgili bir uyarı da vardır.
 
Vinin :

bir şey olursa yardım ederim

Hey Vinina!

çok teşekkürler

yardım etmek istediğin için!

İnceleme için nasıl organize edildiğini gönderiyorum

kompost ile bir komut dosyası çağırma

pansa

__________________________

Merhaba tavus kuşu!

bir örnek göstermek istiyorum

komut dosyası çağrısı nasıl organize edildi

kompost, şimdi her şey çalışmıyor.

inceleme için

pansa

//+------------------------------------------- --------------------+

//|                                         sample_execute_script.mq4 |

//+------------------------------------------- --------------------+

 

#import "user32.dll"

  int RegisterWindowMessageA(string İletiAdı);

  int PostMessageA(int hwnd, int msg, int wparam, string İsim);

  void keybd_event(int VirtualKey, int ScanCode, int Bayraklar, int ExtraInfo);

#içe aktarmak

 

 

int başlangıç()

{

                int winHandle = WindowHandle( Symbol(), Period() );

//

//

//

if( sinyal < 0 && trigl==true &&   buy == true ) {StartScript( winHandle, "SchliesenProfitOrders"); }

 

//

//

//

 

void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false)

{

                int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message");

                PostMessageA(hWnd, MessageNumber, 16, ScriptName);

                if (AutomaticallyAcceptDefaults) { ClearConfigDialog(); }

}

 

ClearConfigDialog() geçersiz

{

                uyku(100);

                keybd_event(13, 0, 0, 0);

}

//

//

//

dönüş(0);

 
pansa :

Hey Vinina!

çok teşekkürler

yardım etmek istediğin için!

İnceleme için nasıl organize edildiğini gönderiyorum

kompost ile bir komut dosyası çağırma

pansa

__________________________

Merhaba tavus kuşu!

bir örnek göstermek istiyorum

komut dosyası çağrısı nasıl organize edildi

kompost, şimdi her şey çalışmıyor.

inceleme için

panza


SRC'ye tıklayıp kodu yapıştırmak zor mu ?!  

 //+------------------------------------------------------------------+
//|                                        sample_execute_script.mq4 |
//+------------------------------------------------------------------+
#import "user32.dll"
   int RegisterWindowMessageA( string MessageName);
   int PostMessageA( int hwnd, int msg, int wparam, string Name);
   void keybd_event( int VirtualKey, int ScanCode, int Flags, int ExtraInfo);
#import

int start()
{
   int winHandle = WindowHandle( Symbol (), Period () );
//
//
//
   if (signal < 0 && trigl== true && buy == true ) 
  {
    StartScript(winHandle, "SchliesenProfitOrders" ); 
  }
//
//
//
}
void StartScript( int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false )
{
   int MessageNumber = RegisterWindowMessageA( "MetaTrader4_Internal_Message" );
  PostMessageA(hWnd, MessageNumber, 16 , ScriptName);
   if (AutomaticallyAcceptDefaults) { ClearConfigDialog(); }
} 
void ClearConfigDialog()
{
   Sleep ( 100 );
  keybd_event( 13 , 0 , 0 , 0 );
}
//
//
//
return ( 0 );
 
pansa :

Bunun gibi iyi çalışması gerekir:

 void StartScript( int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false )
{
     char buf[];
     StringToCharArray ( "MetaTrader4_Internal_Message" , buf);
     int MT4InternalMsg = RegisterWindowMessageA(buf);
     StringToCharArray (ScriptName, buf);
    SendMessageA(hWnd, MT4InternalMsg, 16 , buf);
     if (AutomaticallyAcceptDefaults) { ClearConfigDialog(); }
}
void ClearConfigDialog()
{
     Sleep ( 100 );
    keybd_event( 13 , 0 , 0 , 0 );

}

Ve komut dosyasının ilk harfinin durumunu unutmayın, örneğin, "test" komut dosyası çalışmıyorsa, "Test" denemelisiniz.

Saygılarımla, Pavlik))

 
Pavlick :

Bunun gibi iyi çalışması gerekir:

Ve komut dosyasının ilk harfinin durumunu unutmayın, örneğin, " test " komut dosyası çalışmıyorsa, "Test" i denemelisiniz.

Saygılarımla, Pavlik))


Merhaba tavus kuşu!

revizyonunuzu aldı ve

her şeyi bir göstergeye koymaya çalıştı

ancak, editör istemiyor

neler yapılabileceğini görün

çalışmasını sağlamak için!

pansa

//+------------------------------------------- --------------------+

//|                                              AlttrEND_Signal.mq4 |

//|                         Telif hakkı 2014, MetaQuotes Software Corp. |

//|                                               https://www.mql5.com |

//+------------------------------------------- --------------------+

 

//+------------------------------------------- --------------------+

//|                                  AltrTrend_Signal_v2_2_alert.mq4   |

//|                                         Ramdass - Yalnızca dönüştürme   |

//+------------------------------------------- --------------------+

#Emlak   telif hakkı "Yazar - OlegVS, GOODMAN"

#mülkiyet katı

#import "user32.dll"

  int RegisterWindowMessageA(uchar &lParam[]);

  int SendMessageA(int hWnd, int Mesaj, int wParam, char &lParam[]);

  void keybd_event(int VirtualKey, int ScanCode, int Bayraklar, int ExtraInfo);

#içe aktarmak

 

#özellik göstergesi_chart_window

#özellik göstergesi_tamponları 2

#özellik göstergesi_renk1 DeepSkyBlue

#özellik göstergesi_renk2 TuruncuKırmızı

#özellik göstergesi_width1 1

#özellik göstergesi_width2 1

 

//---- giriş parametreleri

extern bool Alert_message=true;

dış int   time_alert_dakika=60; // ????? ????? ?????????? ???? ??? ? 60 ?????.

dış int K = 30;

harici çift Kstop = 0,5;

extern int Kperiod = 150;

extern int PeriodADX = 7;//14;

harici int CountBars = 100;

 

//---- arabellekler

çift val1[];

çift val2[];

 

çift AlertTime;

//+------------------------------------------- --------------------+

//| Özel gösterge başlatma işlevi                          |

//+------------------------------------------- --------------------+

int init()

  {

    string kısa_adı;

    //---- gösterge çizgisi

    GöstergeTamponları(1);

    SetIndexStyle(0,DRAW_ARROW);

    SetIndexArrow(0,241);

    Gösterge Tamponları(2);

    SetIndexStyle(1,DRAW_ARROW);

    SetIndexArrow(1,242);

    SetIndexBuffer(0,val1);

    SetIndexBuffer(1,val2);

    if(CountBars>=Bars)

        CountBars=Barlar;

    SetIndexDrawBegin(0, Çubuklar - CountBars + PeriodADX );

    SetIndexDrawBegin(1, Çubuklar - CountBars + PeriodADX );

    //----

    dönüş(0);

  }

//+------------------------------------------- --------------------+

//| AltrTrend_Signal_v2_2                                             |

//+------------------------------------------- --------------------+

int başlangıç()

  {   

    int i, shift, counted_bars = IndicatorCounted();

    //----

    if(counted_bars<0) return(-1);

    //----

    int i1, i2, t_per;

    çift Aralık, AvgRange, smin, smax, SsMax, SsMin, SSP, fiyat;

    bool yükseliş trendi, eski;

    //----

    if(Barlar <=PeriodADX   + 1)

        dönüş(0);

    //----

    for(shift = CountBars - PeriodADX ; shift >= 0; shift--)

      {

        SSP = MathCeil(Kperiod / iADX(NULL, 0, PeriodADX , PRICE_CLOSE, MODE_MAIN, 1));

           aralık = 0;

           OrtAralık = 0;

           for(i1 = shift; i1 <= shift + SSP; i1++)

                {

                  AvgRange = AvgRange + MathAbs(Yüksek[i1] - Düşük[i1]);

                 }

           Aralık = OrtAralık / (SSP + 1);

        //----

        SsMax = Yüksek[shift];

        SsMin = Düşük[shift];

        for(i2 = shift; i2 <= shift + SSP - 1; i2++)

          {

            fiyat = yüksek[i2];

            if(SsMax < fiyat)

                 SsMax = fiyat;

            fiyat = Düşük[i2];

            if(SsMin >= fiyat)  

                SsMin = fiyat;

          }

        //----

        smin = SsMin + (SsMax - SsMin)*K / 100;

        smax = SsMax - (SsMax - SsMin)*K / 100;

           val1[shift] = 0.0;

           val2[shift] = 0.0;

           if(Close[shift] <smin)

                {

                  yükseliş trendi=yanlış;

                }

           if(Close[shift] > smax)

                {

                  yükseliş trendi=doğru;

                 }

        if(yükseliş trendi != eski && yükseliş trendi == doğru)

          {

            val1[shift] = Düşük[shift] - Aralık*Kstop;

           

          }

        if(yükseliş trendi != eski && yükseliş trendi == yanlış)

          {

            val2[shift] = Yüksek[shift] + Aralık*Kstop;

           

          }

        eski=yükseliş trendi;

 

}  

void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false)

{

 

{

    charbuf[];

    StringToCharArray("MetaTrader4_Internal_Message", arabellek);

    int MT4InternalMsg = RegisterWindowMessageA(tampon);

    StringToCharArray("fPlayer", tampon);

    SendMessageA(hWnd, MT4InternalMsg, 16, tampon);

    if (AutomaticallyAcceptDefaults) { ClearConfigDialog(); }

}

ClearConfigDialog() geçersiz

{

    uyku(100);

    keybd_event(13, 0, 0, 0);

 

}

 

 

//---- Uyarmak

     if (Period()<Time_alert_minutes) t_per=Period(); başka t_per=Zaman_alert_dakika; // ???? ??<Zaman_alert, ????? ????? ?????????? ???? ??? ? ??.

     if (Alert_message==true && CurTime()>AlertTime && val1[0]!=0.0)

     {

     Uyarı(Sembol()," +++   SATIN ALMAK!!! +++" , "   //AltrTrend_Signal_v2_2_alert");

     AlertTime=CurTime() + (t_per - MathMod(TimeMinute(CurTime()), t_per))*60;

     //PlaySound("ödeme.wav");

    fPlayer;//komut dosyası

   

     }

    

     if (Alert_message==true && CurTime()>AlertTime && val2[0]!=0.0)

     {

     Uyarı(Sembol()," +++   SATMAK!!!    +++" , "   //AltrTrend_Signal_v2_2_alert");

     AlertTime=CurTime() + (t_per - MathMod(TimeMinute(CurTime()), t_per))*60;

    // PlaySound("ödeme.wav");

    fOyuncu;

    }

          

 

    dönüş(0);

  }

//+------------------------------------------- --------------------+