[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 476

 
Gerekirse, jma gönderirim. Göstergenin adını JMA[i] olarak değiştirin
Dosyalar:
jmaxvib.mq4  11 kb
 
for (i = 0 ; i < limit; i++)
     {
       if (dBuffer[i+ 1 ]> 80 && dBuffer[i]< 80 ) DN[i] = 70 ; Fd=- 1 ; Fu= 0 ;               //пересекла 80   --> 1
       if (dBuffer[i+ 1 ]< 20 && dBuffer[i]> 20 ) UP[i] = 30 ; Fu= 1 ;  Fd= 0 ;               //пересекла 20   --> 1
       
       if (dBuffer[i+ 1 ]>rsi[i+ 1 ] && dBuffer[i]<rsi[i]) dn[i] = 60 ; fd=- 1 ; fu= 0 ;     //пересечение двух  -->  2
       if (dBuffer[i+ 1 ]<rsi[i+ 1 ] && dBuffer[i]>rsi[i]) up[i] = 40 ; fu= 1 ;  fd= 0 ;     //пересечение двух     -->  2
       
       if (Fd==- 1 && fd==- 1 ) dot[i]= 90 ; Fd= 0 ; Fu= 0 ; fd= 0 ; fu= 0 ;
       if (Fu== 1 && fu== 1 )   dot[i]= 10 ; Fd= 0 ; Fu= 0 ; fd= 0 ; fu= 0 ;

Şimdiki zamandan geçmişe kadar olan çubukları numaralandırıyorsunuz.

Dizideki arama sonuncuya gider.

Bu nedenle, tüm değişkenler son durum için (bu durumda en eskisi) değerler verecektir.

Bu nedenle geçmişten günümüze bir arama yapmak gerekmektedir.

 for (i = limit; i >= 0 ; i--)
ve değişkenler
 int fd, fu,Fd, Fu;

en üst düzeyde, yani Start ve Init'ten önce beyan edin.

Ve Başlangıç'ta bunları sıfırlamanız gerekmez. Sıfırlamayı yalnızca sıfırladığınız yerde bırakın

 if (Fd==- 1 && fd==- 1 ) dot[i]= 90 ; Fd= 0 ; Fu= 0 ; fd= 0 ; fu= 0 ;
       if (Fu== 1 && fu== 1 )   dot[i]= 10 ; Fd= 0 ; Fu= 0 ; fd= 0 ; fu= 0 ;
 
rlx Teşekkürler, her şey çalıştı.
 
PapaYozh :


İlk olarak OrderSend() orada 2 kez ve her iki seferde de belirttiğiniz koşulun dışında gerçekleşir.

İkinci olarak, OrderSend()'e normalleştirilmemiş bir fiyat iletilir.

Üçüncü olarak, OrderSend() işlevi tarafından döndürülen sonucu analiz edin, bir siparişi açarken/değiştirirken/kapatırken hata olması durumunda günlüğe mesaj yazın ve günlüğü analiz edin.


Uzman Danışman Deney 1'in düzeltilmiş versiyonunu biri yayınlayabilir mi?
 

Tünaydın!

Cevaplar için teşekkürler - çok yardımcı oldunuz :)

Çocuklar! EA, iki hareketli ortalama kesiştiğinde işlem yapar. Ve geri döndüklerinde, işlemleri kapatır ve ters yönde açar, kâr kaybeder.

1. Hatlar daha yeni birleşmeye, yakınlaşmaya başladığında anlaşmaları kapatması şartına göre nasıl yazılır? Ve neden aynı yönde yeni bir anlaşma açmayıp, onların ters yönde geçmelerini beklesin ki?

2. Veya bir satın alma için 80. seviyeyi yukarıdan aşağıya ve bir satış için alttan üste 20. seviyeyi geçtiğinde alım satımları kapatmak. Ve bir anlaşmayı kapatırken, şartlar oluştuğunda, aynı yönde bir anlaşma açmadı, ters yönde geçmelerini mi bekledi?

Forumda buna benzer konular varsa lütfen link verin!

Şimdiden teşekkürler!

Mutlu ticaret!

Karlı fırsatlar!

 

Merhaba!

Bunun ne anlama geldiğini söyle:

Satın alma emri ...... başarısız oldu [Ticaret zaman aşımı]

Özellikle, bu zaman aşımı nedir

 
smartemiy :

Tünaydın!

Cevaplar için teşekkürler - çok yardımcı oldunuz :)

Çocuklar! EA, iki hareketli ortalama kesiştiğinde işlem yapar. Ve geri döndüklerinde, işlemleri kapatır ve ters yönde açar, kâr kaybeder.

1. Hatlar daha yeni birleşmeye, yakınlaşmaya başladığında anlaşmaları kapatması şartına göre nasıl yazılır? Ve neden aynı yönde yeni bir anlaşma açmayıp, onların ters yönde geçmelerini beklesin ki?

2. Veya bir satın alma için 80. seviyeyi yukarıdan aşağıya ve bir satış için alttan üste 20. seviyeyi geçtiğinde alım satımları kapatmak. Ve bir anlaşmayı kapatırken, şartlar oluştuğunda, aynı yönde bir anlaşma açmadı, ters yönde geçmelerini mi bekledi?

Forumda buna benzer konular varsa lütfen link verin!

Şimdiden teşekkürler!

Mutlu ticaret!

Karlı fırsatlar!


https://www.mql5.com/en/code benzer depo bağlantısını takip edin
 
Başka bir soru: Bir enstrümanın bir pip değerini çıkarmak için hangi fonksiyon kullanılabilir?
 
PapaYozh :


İlk olarak OrderSend() orada 2 kez ve her iki seferde de belirttiğiniz koşulun dışında gerçekleşir.

Sıkıcı olmak istemiyorum ama...

 if ( OrdersTotal ()> 0 &&tral> 0 &&OrderMagicNumber()==MAGIC&&(OrderType()==OP_SELL||OrderType()==OP_BUY)){
     if ( ObjectFind (NamePrice)==- 1 )
      {
         ObjectCreate (NamePrice, OBJ_HLINE , 0 , 0 ,Ask);
        ObjectSet(NamePrice, OBJPROP_COLOR ,LineColor);
      }
       double n= ObjectGet( NamePrice, OBJPROP_PRICE1); 
       double p1= ObjectGet( NamePrice1, OBJPROP_PRICE1);
       double p2= ObjectGet( NamePrice2, OBJPROP_PRICE1);
//....................................................................... 
       double d= AccountEquity()-AccountBalance();                 
       if ( ObjectFind (NamePrice1)==- 1 &&d> 0 )
      {       
         ObjectCreate (NamePrice1, OBJ_HLINE , 0 , 0 ,n+d* Point * 10 );
        ObjectSet(NamePrice1, OBJPROP_COLOR ,LineColor1);
      }
       if (n+d* Point * 10 >p1)ObjectSet(NamePrice1,OBJPROP_PRICE1,n+d* Point * 10 );
       if ( ObjectFind (NamePrice2)==- 1 &&n+d* Point * 10 <p1)
      {       
         ObjectCreate (NamePrice2, OBJ_HLINE , 0 , 0 ,n+d* Point * 10 );
        ObjectSet(NamePrice2, OBJPROP_COLOR ,LineColor2);
      } 
       if (p2!=n+d* Point * 10 )ObjectSet(NamePrice2,OBJPROP_PRICE1,n+d* Point * 10 );  
       if (nb+ns== 2 &&tral< 20 &&p1-p2>=(p1-n)/tral&&p2>n&&p2-n>dohod* Point / 10 )CloseALL(); 
       if (nb+ns== 2 &&tral> 20 &&p1-p2>=tral* Point &&p2>n)CloseALL();  
      }
//..........................................................................
     if (ob== 0 ||OrderOpenTime()<iTime( Symbol (),TF, 0 ))
       { 
     
       if ( R== 1 &&zb== 0 &&C1>O1&&iVolume( Symbol (),TF, 0 )< 2 )
         {
         if (ob== 0 ||OrderOpenTime()<iTime( Symbol (),TF, 0 ))
         {
         OrderSend ( Symbol (),OP_BUYSTOP,Lots,Ask+dist* Point , 3 , 0 , 0 , "ko" ,MAGIC, TimeCurrent ()+ 60 *experation, Green );
         }
         }
      
      }
     if (os== 0 ||OrderOpenTime()<iTime( Symbol (),TF, 0 ))
        {      
       if (R== 1 &&zs== 0 &&C1<O1&&iVolume( Symbol (),TF, 0 )< 2 )
        {        
         if (os== 0 ||OrderOpenTime()<iTime( Symbol (),TF, 0 ))
         {
         OrderSend ( Symbol (),OP_SELLSTOP,Lots,Bid-dist* Point , 3 , 0 , 0 , "ko" ,MAGIC, TimeCurrent ()+ 60 *experation, Red );
         }
         }
       return ( 0 );
     }
   

   
  }

OrderTotal() sıfır ise siparişin nasıl açılacağını bana açıklayın.

Teşekkür ederim.

 

lütfen danışmana hangi kodu gireceğimi söyleyin, böylece danışman saatte yalnızca bir kez işlem yapar

örneğin, danışman çalıştı, bir sipariş açıldı (artık ilgilenmiyor), siparişin artık saatlik zaman diliminde mevcut çubukta açılmaması gerekiyor

her şey şuna benziyor:

int hh;
int CurrentHour;
CurrentHour=TimeHour(TimeCurrent());
if (CurrentHour!=ss)
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Puan,Bid+3*Puan);
hh=ZamanSaati(ZamanAkım());
}

ama sayısız siparişim açık