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...
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
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 ..
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 ;)
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
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...
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
ile kolayca değiştirilebilir
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ı?
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 :)
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
üzerinde
Bir seçenek olarak.
bir stop loss seviyesinin olmadığını kontrol etmek, bana öyle geliyor ki, takip ederken gerekli değil
Merhaba.
Karşılaştırma için her şeyi tam sayılara getiriyorum
2gel:
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.
Ç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.
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 ;)
Begun'un önerdiği Normalize() işlevini mi kastediyorsunuz?
Begun'un önerdiği Normalize() işlevini mi kastediyorsunuz?
Üzgünüm, standart NormalizeDouble demek istedim.