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

 
hoz :

Otomatik noktayı kaç kez kullandım, ancak ilk kez çalışmıyor.

İşte Init()

Programın herhangi bir yerinde (bu durumda, deneyin başlangıcında bile):

Günlüğe döner:

mantık nerede?

VladislavVG bana burada şunu önerdi: Çünkü init() işlevinin yürütülmesi aşamasında finansal araç verilerini indirmeniz garanti edilmez.
 
GaNDarM :
VladislavVG bana burada şunu önerdi: Çünkü init() işlevinin yürütülmesi aşamasında finansal araç verilerini indirmeniz garanti edilmez.

Bu nedenle, Init() olmadan Point değişkeninin değeri aynı değeri döndürmelidir.
 
hoz :
İşlev özellikle nesnenin adını döndürürse, ne zaman saçmalık olacak?
Bu işlevin her zaman ve her yerde doğru şekilde çalışacağından, hiçbir yerde hata yapmayacağından ve hiçbir zaman karmaşık nesne adlarında boğulmayacağından %100 emin misiniz, yoksa sizin kendiniz, hiçbir sebep yokken, gözetiminizle birdenbire bir sayıyı kaçırıyorsunuz. içine var olmayan nesne? Ayrıca fonksiyondan döndürülen sonuca göre doğru çalışıp çalışmadığını yargılamak mümkün değildir. Ve belgeler bunu söylüyor. Tek doğru yol, hata kodunu almak ve ondan dans etmektir. Böylece kendinizin (veya bir başkasının) hatalarına karşı kendinizi sigortalamış olursunuz.
 
hoz :

Otomatik noktayı kaç kez kullandım, ancak ilk kez çalışmıyor.


mantık nerede?

Ve bunu şöyle yapmaya çalışıyorsun:

 int init()
{
   if ( Digits == 2 || Digits == 4 )
     pt = MarketInfo( Symbol (), MODE_POINT);
   if ( Digits == 1 || Digits == 3 || Digits == 5 )
     pt = MarketInfo( Symbol (), MODE_POINT) * 10 ;
 
   return ( 0 );
}

Böyle bile değil, şöyle:

 int init()
{
   int MyDigits = MarketInfo( Symbol (), MODE_DIGITS)
   if (MyDigits == 2 || MyDigits == 4 )
     pt = MarketInfo( Symbol (), MODE_POINT);
   if (MyDigits == 1 || MyDigits == 3 || MyDigits == 5 )
     pt = MarketInfo( Symbol (), MODE_POINT) * 10 ;
 
   return ( 0 );
}

Çünkü Digits aynı zamanda Piont gibi dahili bir değişkendir.

Bu şekilde çalışması gerekir :)

 
hoz :

Bu nedenle, Init() olmadan Point değişkeninin değeri aynı değeri döndürmelidir.

Gerçek değil... Nokta , MQL işlemcisinin dahili bir değişkenidir ve onu güncellemek için biraz zaman ve bazı başlatma adımları gerekir. Bütün bunlar, kural olarak, yalnızca işlemci tarafından start () işlevi çağrılmadan önce gerçekleşir ve init () işleme aşamasında, işlemcinin dahili değişkenlerinin değerleri ayarlanmayabilir.
 
GaNDarM :


Bunun için ağlıyorum:

ve işte günlük:

18:25:09 IndikatorZZ GBPJPY,Günlük: ÇALIŞAN BAŞLANGIÇ FONKSİYONU: DownL = 0 UpL = 0


Değişkenler şans eseri int değil mi?


bir iki kez yakaladım kendimi

 
ilunga :

Değişkenler şans eseri int değil mi?


bir iki kez yakaladım kendimi


Hayır, çift. Peki ya int çok ilginç değil?
 
Merhaba! Durum önceki gün gerçekleşti. 03/19/2013 tarihinde yaklaşık 17:00 GMT'de, bekleyen bir Satış durdurma emri için bir emir verdim. Açılış fiyatı 1.2903, Zararı durdur 1.2913, sondaki stop 15 puan, M15, lot -0.5. Hesap geçmişinin gösterdiği gibi, 17-49'da pozisyon açıldı. Pozisyon yine eksi 90 kârla 21-15 GMT'de kapatıldı. Hikayeyi görünce kafamda bir sürü soru işareti oluştu. Örneğin, neden Spike'ın tepesinde pozisyonun kapatıldığı (resme bakın). Sondaki durdurma neden işe yaramadı, çünkü çalışsaydı, kâr pozitif olurdu, çünkü. fiyat hareketi doğru tahmin edildi. takip eden stoptan sonra stop loss tetiklenmeliydi, kayıp 90 USD olmazdı. Ve tekrar ediyorum - pozisyon neden yükselişin tepesinde kapatıldı. Noktadan noktaya. Bu konuda işlem merkezi başvuruda bulunmadı. Büyük ihtimalle cevap vermeyecekler. Bu forumu hatırladım ve umarım profesyoneller bu anormalliğin nedenini erişilebilir bir dilde açıklayabilir. Geçenlerde MT4 üzerinden ticarete başladım. Hâlâ burnumu çekip yakından baktığımı söyleyebiliriz.
 
Merhaba. Lütfen söyleyin, eğer bir danışman aynı anda birkaç döviz çifti penceresine bağlıysa, o zaman bir penceredeki danışmandaki değişiklikler başka bir pencerenin danışmanını etkiler mi??? onlar. yerel değişkenler değişir mi değişmez mi???
 

Tanrım, söyle bana lütfen!

Basit bir fikri uygulamaya çalışıyorum, programa yapılan yorumlarda belirtiliyor.

SORUN TEST CİHAZINDAKİ program kodda belirtilen şartlara uymayan fiyattan emir açar.

Örneğin, dizideki en yakın değer 0.85375 iken, 0.86084 fiyatında bir emir açar.

Onlar. fark pozitiftir. Kod, farkın <0,00000 yani 0,00000 ise siparişlerin açılması gerektiğini belirtir. olumsuz.


Lütfen bana hatanın nerede olduğunu söyle.

Teşekkür ederim.

 int start()
{
 double Price=iOpen ( Symbol (), 0 , 0 );        
 double SL= NormalizeDouble (Price- 3000 * Point , Digits );         
 double TP= NormalizeDouble (Price+ 100 * Point , Digits );    
 #include <MASSIV.mqh> //объявление массива типа double (неповторяющиеся значения цены с пятью знаками после точки)
 double value =  Bid ; //параметру value функции ArrayBsearch присваивается значение  цены последнего тика

 int S = ArrayBsearch (  massiv,  value, WHOLE_ARRAY ,   0 , MODE_ASCEND); //функция возвращает индекс значения цены макс. близкой к цене последнего тика 
 if( (NormalizeDouble (Bid-massiv[S],Digits) <=0)) //если разница между значением массива возвращенным на последнем тике и ценой последнего тика отрицательная или = 0.00000


{
                        
 OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 1 ,SL,TP, "jfh" , 123 ); //ордер открыть
  }                                  

   }