Uzman Danışmanlar Topluluğu - sayfa 3

 
organik gübre

Hızlıca baktım (henüz kazmadım), sizin için hesaplanan point'e bir itiraz buldum.
"Atmaya" ve aptalca Point koymaya çalışın. Belki de sorun şudur (MarketInfo üzerinden bir nokta her zaman ihtiyacınız olan şekilde çıkmayabilir?).

Evet herzaman...
normalleştirmeye çalışabilseniz de =)

ve bu her zaman kabul edilebilir değildir - bir uzman birkaç çift takas edebilir ve puanları farklı olabilir...
 
Sorun, ilk bilgisayar çipi kadar eski
bu elbette üzücü ... ama bir şekilde dışarı çıkman gerekiyor mu? Umarım Renat bir şeyler söyler...
 
if ( orderstoploss == 0.0 || (  orderstoploss < ( bid - TrailingStop * point ) ) )


Diyelim ki orderstoploss = 1.29211 (5 ondalık basamak)
teklif=1.29716 (ayrıca 5 basamak)
sondaki durma = 50
puan=0.001
sonra (teklif - TrailingStop * puan)=1.29216>1.29211
Doğru, bu, rakamların aniden 5'e eşit olmasını gerektirir.
Ve ilerisi

if ( orderstoploss == 0.0 || (  orderstoploss < ( bid - TrailingStop * point ) ) )


ile kolayca değiştirilebilir

if ( orderstoploss < ( bid - TrailingStop * point )) )


bir stoploss seviyesinin olmadığını kontrol etmek, bana öyle geliyor ki, takip ederken gerekli değil.
Aslında kendimi düzeltmem gerekiyor. Sadece kar varsa zararı durdur, aksi takdirde teminat tamamlama çağrısına kadar beklemeye hazırız.
Başka bir şey bulamadım. İzlemeniz hangi çiftte doğru çalışmadı ve güçlü hareketler var mıydı?

 
Merhaba.
Karşılaştırma için her şeyi tam sayılara getiriyorum. Ve genel olarak, mümkün olan her yerde saklarım ve
Verilen değerleri (dizilerde, değişkenlerde vb.)
Onlar. int türündeki değişkenler -2147483648 ile 2147483647 arasında değerler alabilir.
Bu boyut haçlar için oldukça uygundur.
Buna göre 1.2999 ve 1.3000, 12999 ve 13000'e indirgenebilir ve daha sonra güvenle karşılaştırılabilir,
dönemleri olan herhangi bir saçmalıktan korkma.

Burada bir örnek için bir örnek çizdim :)
int Normalize(double double_value, int digits) - приводит double в int  (1.2999 в 12999)
double Restore(int int_value, int digits) - приводит полученный ранее int в double (12999 в 1.2999)


burada

//+------------------------------------------------------------------+
//|                                                   ShiftPoint.mq4 |
//|                                                            Begun |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Blue
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
   return(0);
}
//+------------------------------------------------------------------+
int Normalize(double double_value, int digits)
{
	return (NormalizeDouble(double_value,digits)*MathPow(10,digits));
}
double Restore(int int_value, int digits)
{
	return (NormalizeDouble((int_value/MathPow(10,digits)),digits));
}
//+------------------------------------------------------------------+
int start()
{
	double	Test_Value =  1.29999999;
	int	Test_int;
	double	Test_double;

	Test_int         = Normalize(Test_Value,Digits);
	Test_double   = Restore(Test_int,Digits);
	Print("-----------------------------");
	Print("Restored value    = ",DoubleToStr(Test_double,Digits));
	Print("Shift Point Value = ",Test_int);
	Print("Real Double Value = ",DoubleToStr(Test_Value,8));
}
//+------------------------------------------------------------------+



çıktı:
shiftpoint EURUSD,H1: Gerçek Çift Değer = 1.29999999
shiftpoint EURUSD,H1: Shift Point Value = 13000
shiftpoint EURUSD,H1: Geri yüklenen değer = 1.3000

 
Hepsi bir arada, değiştirin
if ( orderstoploss < ( bid - TrailingStop * point )) )


üzerinde

if ( TrailingStop < ( bid -orderstoploss)/ point  )


Bir seçenek olarak.

 
Herkese katıldığınız için teşekkürler!
Roş 17.04.05 22:29
bir stop loss seviyesinin olmadığını kontrol etmek, bana öyle geliyor ki, takip ederken gerekli değil
Kabul etmiyorum, takip açık olmalıdır - etkinleştirilirse SL ayarlanır.

İzlemeniz hangi çiftte doğru çalışmadı ve güçlü hareketler var mıydı?
Artık Expert Advisor İbranice çalışıyor - periyodik hatalar... gün boyunca... Bence mesele bu değil..

Hepsi bir arada, değiştirin
Şimdi deneyeceğim belki faydası olur ;) Yarın anlatırım...

17.04.05 22:46 Başladı
Merhaba.
Karşılaştırma için her şeyi tam sayılara getiriyorum
Merhaba =) bu elbette bir seçenek ... ama böyle sapıklık yapmak zorunda kalmayacağımı düşündüm .. en azından geliştiricilerden bir kelime - yine de daha iyisini biliyorlar ..
 
Özür dilerim, tartışmaya katılmadım.

2gel:
Sorun, ilk bilgisayar çipi kadar eski:

Haklısın - bu temel bir sorun, kayan noktalı sayıları karşılaştırmak tehlikeli.
Önemli yerlerde, Normalize () ile sayıları sürekli olarak belirli bir kesinliğe getirin.

hangi aritmetik uygulamasını kullanıyorsunuz?

Çift tipte standart (8 bayt).

Bu arada, hataları önlemek için ticaret taleplerinde iletilen tüm fiyatları zorla normalleştiriyoruz.
Zararı durdur talebini 1.2932461 olarak gönderebilirsiniz ancak 1.2932 ayarlanacaktır.
Durağı aynı fiyata yeniden ayarlama girişimlerinin bir hata olup olmadığını lütfen kontrol edin.
 
Durağı aynı fiyata yeniden ayarlama girişimlerinin bir hata olup olmadığını lütfen kontrol edin.

3 kişi izledi =) Renat geldi ve yanlışa parmakla işaret etti =)))
Şimdi kontrol edeceğim, elbette, ama büyük ihtimalle bu... "Teklif - TrailingStop * noktası "nı normalleştirmedim ve bu yapı, sırayı değiştirmekle ilgili...
nedense dikkatsiziz beyler ;)
 
Önemli yerlerde, Normalize () ile sayıları sürekli olarak belirli bir kesinliğe getirin.

Begun'un önerdiği Normalize() işlevini mi kastediyorsunuz?
 
В важных местах постоянно приводите числа к определенной точности через Normalize().

Begun'un önerdiği Normalize() işlevini mi kastediyorsunuz?

Üzgünüm, standart NormalizeDouble demek istedim.