OrdersTotal (), halihazırda açık olan pozisyonların sayısını döndürür, yani. Onun yardımıyla, halihazırda açık bir pozisyon olup olmadığını kontrol edebilirsiniz.
Mas_Ord_New[0][0]!=0 olması koşuluyla, konumları kapatırken öğreticideki Terminal() işlevini kullanıyorum. Ancak burada başka bir görev daha var: Bir emir zaten açıksa, mevcut sinyalde alım satımı yasaklayan bir bayrak yapmanız gerekir. Bayrak kullanmaya çalışıyorum ama bir şeyde hata yaptım.
staticbool buy_1= true ;
if (Stoch_Sig== 4 && buy_l== true )
{
sl=Ask-Stop_Loss*Point;
Ans=OrderSend(Symb,OP_BUY,Lots,Ask, 40 ,sl, 0 , "LSMA+Stoch" ,Magic);
if (Ans== false )
Alert( "Неудачная попытка открыть ордер BUY. Ошибка: " , GetLastError());
if (Ans== true )
buy_l= false ; // снимем флаг, запрещаем торговать по данному сигналу
}
if (Stoch_Sig!= 4 && buy_l== false ) // поднимем флаг, сигнал сменился - торговать по нему можно опять
buy_l= true ;
Merhaba. Özel göstergeler hakkında bir sorum var. iCustom açıklaması diyor ki:
çift iCustom (
dize sembolü, int zaman çerçevesi, dize adı, ..., int modu, int shift)
Belirtilen özel göstergenin hesaplanması. Özel gösterge derlenmelidir (EX4 uzantılı dosya) ve terminal_directory\experts\indicators dizininde bulunmalıdır.
semboller
-
Göstergenin hesaplanacağı sembolün sembolik adı. NULL, geçerli karakter anlamına gelir.
zaman aralığı
-
Dönem. Grafik dönemlerinden biri olabilir. 0, mevcut grafiğin periyodu anlamına gelir.
isim
-
Özel göstergenin adı.
...
-
Parametre listesi (gerekirse). Geçirilen parametreler, bildirim sırasına ve özel göstergenin harici (harici) değişkenlerinin türüne uygun olmalıdır.
mod
-
Gösterge satırı indeksi. 0 ile 7 arasında olabilir ve SetIndexBuffer işlevlerinden biri tarafından kullanılan dizinle eşleşmelidir.
vardiya
-
Gösterge arabelleğinden alınan değerin dizini (geçerli çubuğa göre belirtilen dönem sayısı kadar önce kayma).
Soru: "shift" değeri nasıl alınır? (göstergeyi bir kaydırma ile çağırırken, değerleri onsuz olarak kullanır, yani örneğin, iCustom(NULL, 0, "name",pam1,0,1)= iCustom(NULL, 0, "name", pam1,0,100), ancak göstergeyi 100 bar önce çağırırsanız, iCustom(NULL, 0, "name",pam1,0,100) değerinden farklı bir değere sahip olacaktır.Gösterge basittir, önceki 5 kullanır Kapat değerleri, ortalamalarını alır.
paladin80 : Ayarladığınız ana hattan sapma 0 (sıfır). Sıfırdan fazlasına ihtiyacımız var.
Reshetov : Sapmayı yine de negatif bir değere ayarlar mısınız?
Teşekkürler yoldaşlar! Aynen öyle! Kazandı ve bakmadı. Yazık, üretmemek için sadece teşekkür etmenin bir yolu yok. )
Bu arada, yeni başlayanlar için, parametreleri anlamlı adlara sahip değişkenler aracılığıyla göstergelere geçirmeyi önermek faydalı olacaktır. Şimdiye kadar bu şekilde yaptım, bu sefer bir şeyi kaçırdım.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 13.06.2007 |//| Описание : Удаление ордеров. Версия функции для тестов на истории. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента (NULL - текущий символ) |//| op - операция ( -1 - любой ордер) |//| mn - MagicNumber ( -1 - любой магик) |//+----------------------------------------------------------------------------+void DeleteOrders( string sy= "" , int op=- 1 , int mn=- 1 ) {
int i, k= OrdersTotal (), ot;
if (sy== "" || sy== "0" ) sy= Symbol ();
for (i= 0 ; i<k; i++) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
ot= OrderType ();
if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
if ( OrderSymbol ()==sy && (op< 0 || ot==op)) {
if (mn< 0 || OrderMagicNumber ()==mn) {
OrderDelete ( OrderTicket (), clDelete);
}
}
}
}
}
}
hata veriyor --->
Sonuçta, bir fonksiyondaki tüm değişkenler onun içinde bildirilir ... sorun ne?
kopyalayıp yapıştırdım. --->
if ((High[ 2 ]==High[ 1 ])||(Close[ 2 ]==High[ 1 ])||(High[ 2 ]==Open[ 1 ]))
{
DeleteOrders()
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 13.06.2007 |//| Описание : Удаление ордеров. Версия функции для тестов на истории. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента (NULL - текущий символ) |//| op - операция ( -1 - любой ордер) |//| mn - MagicNumber ( -1 - любой магик) |//+----------------------------------------------------------------------------+void DeleteOrders( string sy= "" , int op=- 1 , int mn=- 1 ) {
int i, k= OrdersTotal (), ot;
if (sy== "" || sy== "0" ) sy= Symbol ();
for (i= 0 ; i<k; i++) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
ot= OrderType ();
if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
if ( OrderSymbol ()==sy && (op< 0 || ot==op)) {
if (mn< 0 || OrderMagicNumber ()==mn) {
OrderDelete ( OrderTicket (), clDelete);
}
}
}
}
}
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 13.06.2007 |//| Описание : Удаление ордеров. Версия функции для тестов на истории. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента (NULL - текущий символ) |//| op - операция ( -1 - любой ордер) |//| mn - MagicNumber ( -1 - любой магик) |//+----------------------------------------------------------------------------+void DeleteOrders( string sy= "" , int op=- 1 , int mn=- 1 ) {
int i, k= OrdersTotal (), ot;
if (sy== "" || sy== "0" ) sy= Symbol ();
for (i= 0 ; i<k; i++) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
ot= OrderType ();
if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
if ( OrderSymbol ()==sy && (op< 0 || ot==op)) {
if (mn< 0 || OrderMagicNumber ()==mn) {
OrderDelete ( OrderTicket (), CLR_NONE ) ;
}
}
}
}
}
}
Ancak, yalnızca rengi belirtmeniz gerekir, örneğin - CLR_NONE .
Ve genel olarak, böyle bir koşulu (Yüksek[ 2 ]==Yüksek[ 1 ]) veya benzeri (Kapat[ 2 ]==Yüksek[ 1 ]) veya benzeri (Yüksek[ 2 ]==Açık[ 1 ]) yerine getirmek, nadir. Grafiğe bakın, böyle birçok eşleşme bulabilir misiniz?
Sipariş silme mantığı açısından, ... - kısacası da acı çekiyor.
OrdersTotal (), halihazırda açık olan pozisyonların sayısını döndürür, yani. Onun yardımıyla, halihazırda açık bir pozisyon olup olmadığını kontrol edebilirsiniz.
Mas_Ord_New[0][0]!=0 olması koşuluyla, konumları kapatırken öğreticideki Terminal() işlevini kullanıyorum. Ancak burada başka bir görev daha var: Bir emir zaten açıksa, mevcut sinyalde alım satımı yasaklayan bir bayrak yapmanız gerekir. Bayrak kullanmaya çalışıyorum ama bir şeyde hata yaptım.
Arkadaşlar yardıma ihtiyacım var bu nedir
2012.09.10 18:40:20 '6257743': 1.27816 sl'de açılış 5.00 EURUSD satın alma emri: 1.27791 tp: 1.27876 başarısız [Geçersiz S/L veya T/P]
Ve neden fiyat ve stop loss aynıdır:
Fiyat 1.25618 Zararı Durdur 1.25618 Kar elde et 1.25698
60 pip kar elde et
Kaybı durdur 20
Merhaba. Özel göstergeler hakkında bir sorum var. iCustom açıklaması diyor ki:
Soru: "shift" değeri nasıl alınır? (göstergeyi bir kaydırma ile çağırırken, değerleri onsuz olarak kullanır, yani örneğin, iCustom(NULL, 0, "name",pam1,0,1)= iCustom(NULL, 0, "name", pam1,0,100), ancak göstergeyi 100 bar önce çağırırsanız, iCustom(NULL, 0, "name",pam1,0,100) değerinden farklı bir değere sahip olacaktır.Gösterge basittir, önceki 5 kullanır Kapat değerleri, ortalamalarını alır.
Yardımın için minnettar olacağım.
Ayarladığınız ana hattan sapma 0 (sıfır). Sıfırdan fazlasına ihtiyacımız var.
Sapmayı yine de negatif bir değere ayarlar mısınız?
Teşekkürler yoldaşlar! Aynen öyle! Kazandı ve bakmadı. Yazık, üretmemek için sadece teşekkür etmenin bir yolu yok. )
Bu arada, yeni başlayanlar için, parametreleri anlamlı adlara sahip değişkenler aracılığıyla göstergelere geçirmeyi önermek faydalı olacaktır. Şimdiye kadar bu şekilde yaptım, bu sefer bir şeyi kaçırdım.
Herkese iyi akşamlar!
Aynı konuda herşeyi sormak istedim, buradan fonksiyonu aldım https://www.mql5.com/en/forum/131859
hata veriyor --->
Sonuçta, bir fonksiyondaki tüm değişkenler onun içinde bildirilir ... sorun ne?
kopyalayıp yapıştırdım. --->
Orada hata yok:

Ancak, yalnızca rengi belirtmeniz gerekir, örneğin - CLR_NONE .Ve "havada asılı duruyorsunuz" gibi görünüyor:
Ve genel olarak, böyle bir koşulu (Yüksek[ 2 ]==Yüksek[ 1 ]) veya benzeri (Kapat[ 2 ]==Yüksek[ 1 ]) veya benzeri (Yüksek[ 2 ]==Açık[ 1 ]) yerine getirmek, nadir. Grafiğe bakın, böyle birçok eşleşme bulabilir misiniz?Sipariş silme mantığı açısından, ... - kısacası da acı çekiyor.
kodu buradan kopyaladı ve yeni bir proje oluşturdu (danışman) kodu yapıştırdı -> derlendi
Garip ama yine aynı hatayı veriyor...
kodu buradan kopyaladı ve yeni bir proje oluşturdu (danışman) kodu yapıştırdı -> derlendi
Garip ama yine aynı hatayı veriyor...