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

 

Merhabalar, Baykuş indirdim, test cihazında her şey yolunda ve satıyor ve alıyor, Alpari'de demoya koydum, sadece satın alıyor .....

Belki orada bir şey eksik? Gerçeğe koymadım, nasıl olacağını bilmiyorum ....

/* Decompiler kaldırıldı */

 

EA'nın fiyat kene yaklaştığında, kene + i_thresholdFromMa girintisi fiyatından satın almasını istiyorum. Bunu uzun bir pozisyon için yazdım:

 bool OpenBuy( double fastMa)
{
   int ticket = - 1 ;
   
   //if (Bid > fastMa)
   if (High[ 0 ] == fastMa || Low[ 0 ] == fastMa)
       ticket = OrderSend ( Symbol (), OP_BUYSTOP, 0.1 , ND(fastMa + i_thresholdFromMa * pt), 3 , 0 , 0 , NULL , i_magic, 0 );
   
       if (ticket > 0 && OrderSelect (ticket, SELECT_BY_TICKET == true ))
 
   return ( true );
}

Değer, fastMa bağlantısı tarafından fonksiyon parametrelerinden geçirilir. Kodun yanında, mevcut yüksek ve düşük değerleri fastMa değeriyle karşılaştırıyorum .

Yüksek veya düşük değeri fastMa değerine eşitse, mantıksal olarak fiyattan bir emir açılmalıdır ( fastMa fastMa değeri + i_thresholdFromMa ofsetinden).

İşlev çalışmıyor. Sebebi ne ? EA, günlüğe herhangi bir hata göndermez.

 
hoz :

EA'nın fiyat kene yaklaştığında, kene + i_thresholdFromMa girintisi fiyatından satın almasını istiyorum. Bunu uzun bir pozisyon için yazdım:

Değer, fastMa bağlantısı tarafından fonksiyon parametrelerinden geçirilir. Kodun yanında, mevcut yüksek ve düşük değerleri fastMa değeriyle karşılaştırıyorum .

Yüksek veya düşük değeri fastMa değerine eşitse, mantıksal olarak fiyattan bir emir açılmalıdır ( fastMa fastMa değeri + i_thresholdFromMa ofsetinden).

İşlev çalışmıyor. Sebebi ne ? EA, günlüğe herhangi bir hata göndermez.

İyi akşamlar! Zaten derin bir gece geçirdin!

Kesirli olanlar arasındaki eşitlikler asla sabit olmayacak! Keneler atlayacak ve sinyal olmayacak. Yani böylesi daha iyi:

   if (High[ 0 ] >= fastMa && Low[ 0 ] <= fastMa)
 

Boris'e katılıyorum, ancak şunu ekleyeceğim: Bunun gibi herhangi bir fiyat karşılaştırması yapmak daha iyidir:

Bid>fastMA değil, Bid-fastMA>Zero

High[0]>=fastMA değil, High[0]-fastMA>-Zero vb :)

Küresel bölümde:

#define Zero 0.00000001 veya benzeri bir şey.

 
tara :

Boris'e katılıyorum, ancak şunu ekleyeceğim: Bunun gibi herhangi bir fiyat karşılaştırması yapmak daha iyidir:

Bid>fastMA değil, Bid-fastMA>Zero

High[0]>=fastMA değil, High[0]-fastMA>-Zero vb. :)

Küresel bölümde:

#define Zero 0.00000001 veya benzeri bir şey.

Ve Alexey'e katılıyorum, ancak ayrıntılara girmedim, sadece açık bir hatayı düzelttim! Gerisi her şeyi bulacaktır, kontrol ederek, beğeninize göre tadacaktır.
 

Alexey ve Boris , değerli yorumunuz için teşekkür ederiz.

#define Zero 0.00000001 , bence yeterli olmayacak :) Buraya güvenle yarım nokta veya bir kırılma noktası koyabileceğinize inanıyorum...

 
hoz :

Alexey ve Boris , değerli yorumunuz için teşekkür ederiz.

#define Zero 0.00000001 , bence yeterli olmayacak :) Buraya güvenle yarım nokta veya bir kırılma noktası koyabileceğinize inanıyorum...

Sıfır yerine bir değişken koymaya çalışın ve böylece gerekli boşluğu belirleyin! Ve büyük olasılıkla onu bırakmak gerekli olacak, çünkü. değeri piyasanın durumuna bağlı olarak değişecektir.
 
borilunad :
Sıfır yerine bir değişken koymaya çalışın ve böylece gerekli boşluğu belirleyin! Ve büyük olasılıkla onu bırakmak gerekli olacak, çünkü. değeri piyasanın durumuna bağlı olarak değişecektir.


Evet, eğer bir değişken ise nasıl bir gelişme olduğu piyasada test edilip gözlemlenmesi gerekir. Bu arada test cihazında çalıştırmak ve aracın güçlü ve zayıf yönlerini tespit etmek için yazıyorum.

Aşağıdaki mantığa sahibim:

 bool OpenBuy( double fastMa, double slowMa)
{
   int ticket = - 1 ;
   
   //if (Bid > fastMa)
   //if (High[0] == fastMa || Low[0] == fastMa)
   if ( ( MathAbs (High[ 0 ] - fastMa) <= 1 * pt ) || ( MathAbs (Low[ 0 ] - fastMa) <= 0.1 * pt) )
       ticket = OrderSend ( Symbol (), OP_BUYSTOP, 0.1 , ND(fastMa + i_thresholdFromMa * pt), 3 , 0 , 0 , NULL , i_magic, 0 );
   
       if (ticket > 0 && OrderSelect (ticket, SELECT_BY_TICKET == true ))
 
   return ( true );
}

Bir boşluk değişkeni yerine, şimdilik test için 1 koydum, sonra onu harici olana çıkaracağım.

Anladığım kadarıyla, bu en doğru seçenek olacak. Sonuçta, bir sinyalin olması için fiyatın en üste bir mumla değip değmeyeceği önemlidir. Bir mumun 2 ucu vardır (yüksek ve alçak). Bu, ekstremalarından 2 tanesinin kontrol edilmesi anlamına gelir. Bu yüzden boşluğun 1'den az olduğunu yazdım.

Burada akım ilginçtir, i_thresholdFromMa (indent) mesafesinde açılır, yani. elden değil, mumun ucundan.  

Açılma fonksiyonuna girme şartının olmasına dikkat etmemenizi rica ediyorum, ancak bunu sinyal fonksiyonuna çıkaracağım.

İşte örneğin bir ekran görüntüsü

anın ekranı

Kırmızı fare fastMA'dır . i_thresholdFromMa (fareden doldurma) harici değişkenlerde 5'e eşittir. Her koşulda, geri kalanı satın alır. Burada kırmızı fastMa altında 2 mavi stop emri görebilirsiniz. Ben burada bir mantık göremiyorum. Sonuçta, emir özellikle ND(fastMa + i_thresholdFromMa * pt) fiyatına gönderiliyor ve bunu yukarıdaki fonksiyonda görebiliyorum...

 
hoz :


Evet, eğer bir değişken ise nasıl bir gelişme olduğu piyasada test edilip gözlemlenmesi gerekiyor. Bu arada test cihazında çalıştırmak ve aracın güçlü ve zayıf yönlerini tespit etmek için yazıyorum.

Aşağıdaki mantığa sahibim:

Bir boşluk değişkeni yerine şimdilik test için 1 koydum, sonra onu harici olana çıkaracağım.

Anladığım kadarıyla, bu en doğru seçenek olacak. Sonuçta, bir sinyalin olması için fiyatın yukarıya kadar bir mumla değip değmeyeceği önemlidir. Bir mumun 2 ucu vardır (yüksek ve alçak). Bu, ekstremalarından 2 tanesinin kontrol edilmesi anlamına gelir. Bu yüzden boşluğun 1'den az olduğunu yazdım.

Burada akım ilginçtir, i_thresholdFromMa (indent) mesafesinde açılır, yani. elden değil, mumun ucundan.  

Açılma fonksiyonuna girme şartının olmasına dikkat etmemenizi rica ediyorum ancak sinyal fonksiyonunun içine çıkaracağım.

İşte örneğin bir ekran görüntüsü

Kırmızı fare fastMA'dır . i_thresholdFromMa (fareden doldurma) harici değişkenlerde 5'e eşittir. Her koşulda, geri kalanı satın alır. Burada kırmızı fastMa altında 2 mavi stop emri görebilirsiniz. Ben burada bir mantık göremiyorum. Sonuçta, emir özellikle ND(fastMa + i_thresholdFromMa * pt) fiyatına gönderiliyor ve bunu yukarıdaki fonksiyonda görebiliyorum...

Pozisyonun daha erken açılmasını istiyorsanız, çubuğun ortasında, alış için çubuğun Düşükünü ve Satış için çubuğun Yüksekini belirtmeniz gerekir.

   if ( MathAbs (fastMa - Low[ 0 ]) <= 1 * pt ) //для бая

   if ( MathAbs (High[ 0 ] - fastMa) <= 1 * pt ) // для сэлла
   
 
borilunad :

Pozisyonun daha erken açılmasını istiyorsanız, çubuğun ortasında, alış için çubuğun Düşükünü ve Satış için çubuğun Yüksekini belirtmeniz gerekir.

 if ( MathAbs (fastMa - Low[ 0 ]) <= 1 * pt ) //для бая

   if ( MathAbs (High[ 0 ] - fastMa) <= 1 * pt ) // для сэлла


Daha önce zorunda değilsin. Mum mashkanın hangi tarafına sığar bilmiyorum. Üst veya alt.. Asıl soru bu. Bu nedenle bu düzenleme uygun değildir. Öyle değil mi?

Üstelik, ne olursa olsun, şu anda OrderSend() işlevinde farklı bir açılış fiyatına sahibim ve her durumda elden daha yüksek:

Burada fonksiyondaki değerleri yazdırıyorum:

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy(double fastMa, double slowMa)
{
   int ticket = -1;
   
   if ( (MathAbs(High[0] - fastMa) <= 1 * pt ) || ( MathAbs(Low[0] - fastMa) <= 0.1 * pt) )
   {
       if ((fastMa + i_thresholdFromMa * pt) > Ask)            // Проверка что цена открытия выше Ask, т.к. у нас вход отложенником
      Print("fastMa = ", DoubleToStr(fastMa,Digits));
      Print("i_thresholdFromMa = ", DoubleToStr(i_thresholdFromMa * pt,Digits));
       ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(fastMa + i_thresholdFromMa * pt), 3, 0, 0, NULL, i_magic, 0);
      Print("OrderOpenPrice() = ", DoubleToStr(OrderOpenPrice(),Digits));
   }
      if (ticket > 0 && OrderSelect(ticket, SELECT_BY_TICKET == true))
 
   return (true);
}

İşte günlüğün gösterdiği:

 2013.02 . 01 15 : 37 : 18      2011.01 . 12 14 : 02   D_Aleks_first_pattern EURUSD,H1: delete # 110 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02 . 01 15 : 37 : 18      2011.01 . 12 14 : 02   D_Aleks_first_pattern EURUSD,H1: modify # 110 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02 . 01 15 : 37 : 18      2011.01 . 12 14 : 02   D_Aleks_first_pattern EURUSD,H1: OrderOpenPrice() = 1.29820
2013.02 . 01 15 : 37 : 18      2011.01 . 12 14 : 02   D_Aleks_first_pattern EURUSD,H1: open # 110 buy stop 0.10 EURUSD at 1.29820 ok
2013.02 . 01 15 : 37 : 18      2011.01 . 12 14 : 02   D_Aleks_first_pattern EURUSD,H1: i_thresholdFromMa = 0.00050
2013.02 . 01 15 : 37 : 18      2011.01 . 12 14 : 02   D_Aleks_first_pattern EURUSD,H1: fastMa = 1.29770
2013.02 . 01 15 : 37 : 18      2011.01 . 12 14 : 02   D_Aleks_first_pattern EURUSD,H1: delete # 109 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02 . 01 15 : 37 : 18      2011.01 . 12 14 : 02   D_Aleks_first_pattern EURUSD,H1: modify # 109 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02 . 01 15 : 37 : 18      2011.01 . 12 14 : 02   D_Aleks_first_pattern EURUSD,H1: OrderOpenPrice() = 1.29820
2013.02 . 01 15 : 37 : 18      2011.01 . 12 14 : 02   D_Aleks_first_pattern EURUSD,H1: open # 109 buy stop 0.10 EURUSD at 1.29820 ok
2013.02 . 01 15 : 37 : 18      2011.01 . 12 14 : 02   D_Aleks_first_pattern EURUSD,H1: i_thresholdFromMa = 0.00050
2013.02 . 01 15 : 37 : 18      2011.01 . 12 14 : 02   D_Aleks_first_pattern EURUSD,H1: fastMa = 1.29770
2013.02 . 01 15 : 37 : 18      2011.01 . 12 14 : 02   D_Aleks_first_pattern EURUSD,H1: delete # 108 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02 . 01 15 : 37 : 18      2011.01 . 12 14 : 02   D_Aleks_first_pattern EURUSD,H1: modify # 108 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02 . 01 15 : 37 : 18      2011.01 . 12 14 : 02   D_Aleks_first_pattern EURUSD,H1: OrderOpenPrice() = 1.29820
2013.02 . 01 15 : 37 : 18      2011.01 . 12 14 : 02   D_Aleks_first_pattern EURUSD,H1: open # 108 buy stop 0.10 EURUSD at 1.29820 ok
2013.02 . 01 15 : 37 : 18      2011.01 . 12 14 : 02   D_Aleks_first_pattern EURUSD,H1: i_thresholdFromMa = 0.00050
2013.02 . 01 15 : 37 : 18      2011.01 . 12 14 : 02   D_Aleks_first_pattern EURUSD,H1: fastMa = 1.29770
2013.02 . 01 15 : 37 : 18      2011.01 . 12 14 : 02   D_Aleks_first_pattern EURUSD,H1: delete # 107 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02 . 01 15 : 37 : 18      2011.01 . 12 14 : 02   D_Aleks_first_pattern EURUSD,H1: modify # 107 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02 . 01 15 : 37 : 18      2011.01 . 12 14 : 02   D_Aleks_first_pattern EURUSD,H1: OrderOpenPrice() = 1.29820
2013.02 . 01 15 : 37 : 14      D_Aleks_first_pattern EURUSD,H1: loaded successfully

Burada fiyatın açılışta benim tarafımdan belirlenmesi gerektiği açıktır. Sonuçta bir yanlış hesap yapılıyor. Maskara değerine bir boşluk eklenir. Ve bunu baskıda görebilirsiniz.