"Yeni Başlayanlar için MQL5’te Uzman Danışman Yazmak İçin Adım Adım Açıklamalı Kılavuz" makalesi için tartışma - sayfa 12

 

Lütfen beni affedin, o zaman bu düğmeyi nasıl kullanacağımı anlamamıştım, şimdi anladığımı düşünüyorum.

extern int tp = 1000;
extern int sl = 1000;
extern double Lots = 0.2;
int ticket;
void OnStart()
{
datetime date1=D'2014.10.28.13.22.13';
 if(OrdersTotal()==0)
 {
 ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-sl*Point,Bid+tp*Point,"",123,0,Red);
 }
 if (OrdersTotal()==1 && Hour( )==13 && Minute( )==23 && Seconds ( )>=00)
 {
 bool select1=OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
 bool close1=OrderClose(ticket,Lots,Bid,20,Green);
 }
 return(0);
}
[Silindi]  
Grenjohn:

Lütfen beni affedin, o zamanlar bu düğmeyi nasıl kullanacağımı anlamamıştım, şimdi anladığımı düşünüyorum.

Her şey koşulla ilgili:

if( OrdersTotal() == 0 )

Date1 olarak belirttiğiniz tarihin gerçekleşip gerçekleşmediğine dair bir kontrolden yoksundur. Şimdi, açık emir yoksa, ilk tik ile hemen bir emir açmalısınız! Yani buradakiyle aynı şeyi yapmanız gerekiyor,

if (OrdersTotal()==1 && Hour( )==13 && Minute( )==23 && Seconds ( )>=00)

ancak doğru günü, saati, dakikayı, saniyeyi (birkaç saniye) belirtin.

Evet ve bir şey daha. sl ve tp fiyatları normalize edilmelidir, aksi takdirde hatalar olabilir.

 

Grafiğe katılmayı bıraktığı bir şey ve lütfen bana sl ve tp fiyatlarını normalleştirmenin ne anlama geldiğini söyleyin?

extern int tp = 1000;
extern int sl = 1000;
extern double Lots = 0.3;
int ticket;
void OnStart()
{
datetime date1=D'2014.10.28.15.08.30';
 if(OrdersTotal()==0 && Hour( )==15 && Minute( )==08 && Seconds( )>=30)
 {
 ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-sl*Point,Bid+tp*Point,"",123,0,Red);
 }
 if (OrdersTotal()==1 && Hour( )==15 && Minute( )==09 && Seconds( )>=00)
 {
 bool select1=OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
 bool close1=OrderClose(ticket,Lots,Bid,20,Green);
 }
 return(0);
}
 
Grenjohn:

Lütfen beni affedin, bu düğmeyi nasıl kullanacağımı anlamadım, şimdi anladığımı düşünüyorum.

extern datetime date1=D'2014.10.28 13:22:13';
extern datetime date2=D'2014.10.29 13:22:13';
extern int tp = 1000;
extern int sl = 1000;
extern double Lots = 0.2;
int ticket = 0;

void OnStart()
{
 static int flag = 0;

 switch ( flag )
 {
   // 0 - pozisyon yok
   case 0:
   {
     // date1 zamanı geldiğinde, bir pozisyon aç
     if ( TimeCurrent() >= date1 )
     {
       if ( ticket <= 0 )
       {
         ticket = OrderSend( ... );
       }
       if ( ticket > 0 )
       {
         flag = 1;
       }
     }
     break;
   }
   // 1 bir pozisyondu
   case 1:
   {
     // Tarih2 saati geldiğinde pozisyonu kapatın
     if ( TimeCurrent() >= date2 )
     {
        if ( ticket > 0 && OrderSelect( ticket, SELECT_BY_TICKET ) && OrderCloseTime() <= 0 )
        {
           if ( OrderClose( ticket, ... ) == true )
           {
              ticket = 0;
              flag = 2;
           }
        }
     }
     break;
   }
 }
}

Tarih1 oluştuğunda bir pozisyon açıyoruz, tarih2 oluştuğunda kapatıyoruz, bundan sonra yeniden başlatmaya kadar hiçbir şey yapmıyoruz.

[Silindi]  
Grenjohn:

Grafiğe katılmayı bıraktığı bir şey ve lütfen bana sl ve tp fiyatlarını normalleştirmenin ne anlama geldiğini söyleyin?

https://www.mql5.com/tr/docs/convert/normalizedouble
Документация по MQL5: Преобразование данных / NormalizeDouble
Документация по MQL5: Преобразование данных / NormalizeDouble
  • www.mql5.com
Преобразование данных / NormalizeDouble - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Yardımlarınız ve sabrınız için hepinize çok teşekkür ederim, ancak şu ana kadar maalesef çalışmıyor!!!?

Bir Uzman Danışman eklemeye çalışıyorum, ancak eklenmiyor!?!?

extern datetime date1=D'2014.10.29 22:29:10';
extern datetime date2=D'2014.10.29 21:30:00';
extern int tp = 1000;
extern int sl = 1000;
extern double Lots = 0.30;
int ticket = 0;
void OnStart()
{
 static int flag = 0;

 switch ( flag )
 {
   // 0 - pozisyon yok
   case 0:
   {
     // date1 zamanı geldiğinde, bir pozisyon aç
     if ( TimeCurrent() >= date1 )
     {
       if ( ticket <= 0 )
       {
         ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-sl*Point,Bid+tp*Point,"",123,0,Red);
       }
       if ( ticket > 0 )
       {
         flag = 1;
       }
     }
     break;
   }
   // 1 bir pozisyondu
   case 1:
   {
     // Tarih2 saati geldiğinde pozisyonu kapatın
     if ( TimeCurrent() >= date2 )
     {
        if ( ticket > 0 && OrderSelect( ticket, SELECT_BY_TICKET ) && OrderCloseTime() <= 0 )
        {
           if ( OrderClose( ticket,Lots,Bid,20,Green) == true )
           {
              ticket = 0;
              flag = 2;
           }
        }
     }
     break;
   }
 }
}


 
Grenjohn:

Yardımlarınız ve sabrınız için hepinize çok teşekkür ederim, ancak şu ana kadar maalesef çalışmıyor!!!?

Bir Uzman Danışman eklemeye çalışıyorum ama eklenmiyor!?!?


Bu, bir Uzman Danışman değil, bir gösterge oluşturduğunuz anlamına gelir.

Sihirbaz aracılığıyla yeni bir EA oluşturun ve yalnızca OnStart işlevinin kodunu ve tüm global değişkenleri/harici parametreleri değiştirin.

[Silindi]  
komposter:

Bu, bir Uzman Danışman değil, bir gösterge oluşturduğunuz anlamına gelir.

Sihirbaz aracılığıyla yeni bir EA oluşturun ve yalnızca OnStart işlevinin kodunu ve tüm genel değişkenleri / harici parametreleri değiştirin.

Büyük olasılıkla, bir Uzman Danışman oluşturdu, ancak yalnızca komut dosyaları için olan OnStart () işleviyle.
[Silindi]  
Grenjohn:

Yardımlarınız ve sabrınız için hepinize çok teşekkür ederim, ancak şu ana kadar maalesef çalışmıyor!!!?

Bir Uzman Danışman eklemeye çalışıyorum ama eklenmiyor!?!?


MQL4'te yeni bir Uzman Danışman oluşturun, mevcut kodu buraya kopyalayın ve satırı değiştirin

void OnStart()

tarafından

void OnTick()

Bu, bir Uzman Danışman oluşturmak istemeniz durumunda geçerlidir. Bir komut dosyası oluşturmak istiyorsanız, yeni bir komut dosyası oluşturun ve mevcut kodu değişiklik yapmadan tamamen kopyalayın (zamana dayalı ticaret durumunda bir komut dosyasının anlamı olmamasına rağmen).

 
Makaleden:
Новый бар характеризуется величиной тикового объема, равной 1, если он больше 1, то выполнение функции OnTick завершается.

Bu açıklamayı karşılayan kod nerede? Anlamadığım bir şey var ya da kodda böyle bir şey yok.