Fiyat 1,9047 - 1,9080 aralığında hareket ediyor (rakamlar şartlı). Bir sonraki mumun açılış fiyatı verilen aralığın dışındaysa, bir Uyarı verin. Değilse, bir sonraki mumu bekleyin. Ve böylece fiyat aralığın dışına çıkana kadar.
Şimdiden teşekkürler.
if (Open[ 0 ]< 1.9047 ) Alert ( "Цена ниже заданного диапазона" );
if (Open[ 0 ]> 1.9080 ) Alert ( "Цена выше заданного диапазона" );
Bu sadece bir kavram. Koşul karşılanırsa, uyarılar her onay işaretinde olacaktır.
Teşekkürler, bir şekilde anladım. İşte başka bir soru: uyarılar artık belirli bir zaman diliminden ve aralık "dur"a kadar aşıldığında görüntüleniyor. Koşul sağlayan ilk değere ulaşıldığında bu "numaralandırmayı" bir şekilde durdurmak mümkün müdür?
Atlis : Teşekkürler, bir şekilde anladım. İşte başka bir soru: uyarılar artık belirli bir zaman diliminden ve aralık "dur"a kadar aşıldığında görüntüleniyor. Koşul sağlayan ilk değere ulaşıldığında bu "numaralandırmayı" bir şekilde durdurmak mümkün müdür?
Her zaman, belirli bir süre için doğru olan ana koşulu anlamanız gerekir. Örneğin - zaman karşılaştırması. Tüm uyarıları verdikten sonra, geçerli saati kontrol ettiğiniz değişkene yeni bir değer atamanız gerekir. Yeni çubuk algılama işlevini arayın. Yapısının konsepti size yardımcı olmalıdır.
Tamam, uzun süredir cevap vermediniz, size bir ipucu vereceğim: isCloseLastPosByStop() işlevinden true değerini döndürürken, bir değer daha döndürün, yani: bulunan son konumun lot boyutu.
Nasıl yapılır? Parti boyutunu fonksiyonun kendisine yazacağınız referansa göre fonksiyona bir değişken iletin. Bunu yapmak için isCloseLastPosByStop() işlevini biraz değiştirmeniz gerekecektir.
Hiçbir şey anlamadıysanız, son kapatılan pozisyonun lot büyüklüğünü döndürecek bir fonksiyon arayın. Ya da kendin yap. Ve kullanın, ancak lot değerini gerçek değerle birlikte geçmekten daha pahalıdır.
Fonksiyonu değiştirdim, öyle yaptım ki, fonksiyon True yerine lot değişkenini döndürdü, içine lot boyutunu fonksiyonun kendisine yazdım.
Her şey derleniyor, ancak siparişler açılmıyor. Günlük şöyle diyor:
2013.10.23 20:57:46 2011.09.22 22:20 PREV CANDLE EURUSD,M5: OrderSend işlevi için geçersiz lot miktarı
Lütfen bana hatamın ne olduğunu söyle.
Teşekkür ederim.
Durdurarak son kapalı konumu belirleme işlevi bool tipine sahiptir ve bundan double tipi döndürmeye çalışıyorsunuz. Buna göre, size 0 veya 1 döndürür.
Peki, size bir değişkenin transferini buna referans olarak eklemeniz gerektiğini yazdım:
//+----------------------------------------------------------------------------+bool isCloseLastPosByStop( string sy, int op, int mn, double &ll) {
double pt;
int t, dg, i, j=- 1 , k=OrdersHistoryTotal()- 1 ;
for (i=k; i>= 0 ; i--) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderMagicNumber()!=mn) continue ; // если магик не тот, переходим к следующемуif (OrderSymbol()!=sy) continue ; // если символ не тот, переходим к следующемуif (OrderType()!=op continue ; // если тип не тот, переходим к следующемуif (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}
}
}
if ( OrderSelect (j, SELECT_BY_POS, MODE_HISTORY)) {
dg=MarketInfo(OrderSymbol(), MODE_DIGITS); // количество знаков в цене символа ордера
pt=MarketInfo(OrderSymbol(), MODE_POINT); // размер пункта инструмента в валюте котировки ордераif ( MathAbs (OrderClosePrice()-OrderStopLoss()< 0.5 *pt)) { // Если закрыт по стопу
ll=OrderLots(); // записываем количество лотов в ордере, закрытом по стопуreturn ( true ); // возвращаем истину
}
}
return (False); // возвращаем ложь (позиции нету, либо не по стопу)
}
//+----------------------------------------------------------------------------+
Şimdi örneğin son Satın almayı kontrol ediyoruz:
//+----------------------------------------------------------------------------+double Lot=MarketInfo( Symbol (), MODE_MINLOT); // задаём минимальное значение переменнойif (isCloseLastPosByStop( Symbol (), OP_BUY, Magic, Lot)) { // в переменную Lot будет записано значение лота закрытой позиции// Если последний закрытый Buy закрыт по стопу
Lot= //... эта переменная содержит размер лота закрытой позиции, выполняете нужные вычисления с этой переменной
}
//+----------------------------------------------------------------------------+
Tünaydın.
Lütfen aşağıdakileri nasıl yapacağınızı önerin:
Fiyat 1,9047 - 1,9080 aralığında hareket ediyor (rakamlar şartlı). Bir sonraki mumun açılış fiyatı verilen aralığın dışındaysa, bir Uyarı verin. Değilse, bir sonraki mumu bekleyin. Ve böylece fiyat aralığın dışına çıkana kadar.
Şimdiden teşekkürler.
Verileri daha fazla analiz için kullanılan bir kod parçası:
onlar. sonra kod şöyle görünecek:
Ve soru şudur: nasıl ve nerede kayıt olunur? Koşulun içindeyse uyarı yoktur ve koşulun dışındaysa her onayda görüntülenir.
Daha önce yanlış formüle edilmiş soru için özür dilerim.
Verileri daha fazla analiz için kullanılan bir kod parçası:
onlar. sonra kod şöyle görünecek:
Ve soru şudur: nasıl ve nerede kayıt olunur? Koşulun içindeyse - uyarı yoktur ve koşulun dışındaysa - her onayda çıktı alınır.
Daha önce yanlış formüle edilmiş soru için özür dilerim.
Teşekkürler, bir şekilde anladım. İşte başka bir soru: uyarılar artık belirli bir zaman diliminden ve aralık "dur"a kadar aşıldığında görüntüleniyor. Koşul sağlayan ilk değere ulaşıldığında bu "numaralandırmayı" bir şekilde durdurmak mümkün müdür?
Her zaman, belirli bir süre için doğru olan ana koşulu anlamanız gerekir. Örneğin - zaman karşılaştırması. Tüm uyarıları verdikten sonra, geçerli saati kontrol ettiğiniz değişkene yeni bir değer atamanız gerekir. Yeni çubuk algılama işlevini arayın. Yapısının konsepti size yardımcı olmalıdır.
burayı okudun mu
Bekleyen bir sipariş vermek için piyasadan minimum mesafe nasıl bulunur?
Bekleyen bir sipariş vermek için piyasadan minimum mesafe nasıl bulunur?
int seviye=MarketInfo(Symbol(), MODE_STOPLEVEL);
durma seviyesi sıfır ise, büyük olasılıkla seviye=MarketInfo(Symbol(), MODE_SPREAD)*2;
Alpari, tam olarak bir StopLevel olarak çift yayılma kullanır.
Mesafeyi belirlemek için burayı okuyun.
teşekkürler artmedia70 :
Tamam, uzun süredir cevap vermediniz, size bir ipucu vereceğim: isCloseLastPosByStop() işlevinden true değerini döndürürken, bir değer daha döndürün, yani: bulunan son konumun lot boyutu.
Nasıl yapılır? Parti boyutunu fonksiyonun kendisine yazacağınız referansa göre fonksiyona bir değişken iletin. Bunu yapmak için isCloseLastPosByStop() işlevini biraz değiştirmeniz gerekecektir.
Hiçbir şey anlamadıysanız, son kapatılan pozisyonun lot büyüklüğünü döndürecek bir fonksiyon arayın. Ya da kendin yap. Ve kullanın, ancak lot değerini gerçek değerle birlikte geçmekten daha pahalıdır.
Fonksiyonu değiştirdim, öyle yaptım ki, fonksiyon True yerine lot değişkenini döndürdü, içine lot boyutunu fonksiyonun kendisine yazdım.
Her şey derleniyor, ancak siparişler açılmıyor. Günlük şöyle diyor:
2013.10.23 20:57:46 2011.02.24 16:25 ÖNCEKİ MUM EURUSD,M5: OrderSend hatası 4051
2013.10.23 20:57:46 2011.09.22 22:20 PREV CANDLE EURUSD,M5: OrderSend işlevi için geçersiz lot miktarı
Lütfen bana hatamın ne olduğunu söyle.
Teşekkür ederim.
Fonksiyonu değiştirdim, öyle yaptım ki, fonksiyon True yerine lot değişkenini döndürdü, içine lot büyüklüğünü fonksiyonun kendisine yazdım.
Her şey derleniyor, ancak siparişler açılmıyor. Günlük şöyle diyor:
2013.10.23 20:57:46 2011.02.24 16:25 ÖNCEKİ MUM EURUSD,M5: OrderSend hatası 4051
2013.10.23 20:57:46 2011.09.22 22:20 PREV CANDLE EURUSD,M5: OrderSend işlevi için geçersiz lot miktarı
Lütfen bana hatamın ne olduğunu söyle.
Teşekkür ederim.
Durdurarak son kapalı konumu belirleme işlevi bool tipine sahiptir ve bundan double tipi döndürmeye çalışıyorsunuz. Buna göre, size 0 veya 1 döndürür.
Peki, size bir değişkenin transferini buna referans olarak eklemeniz gerektiğini yazdım:
Şimdi örneğin son Satın almayı kontrol ediyoruz:
Aşağı yukarı böyle...