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

 
1 lotluk sipariş için sipariş açmadan komisyon miktarını nasıl öğreneceğimi söyler misiniz?
 
Reshetov :

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.

  
static bool 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 ;
 

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:

ç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.

Yardımın için minnettar olacağım.

 
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.

 

Herkese iyi akşamlar!

Aynı konuda herşeyi sormak istedim, buradan fonksiyonu aldım https://www.mql5.com/en/forum/131859

 //+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. 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);
          }
        }
      }
    }
  }
}
 
DanLett :

Orada hata yok:

 //+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. 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 "havada asılı duruyorsunuz" gibi görünüyor:

   if ((High[ 2 ]==High[ 1 ])||(Close[ 2 ]==High[ 1 ])||(High[ 2 ]==Open[ 1 ]))
   {
   DeleteOrders()
   }
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...

 
DanLett :

kodu buradan kopyaladı ve yeni bir proje oluşturdu (danışman) kodu yapıştırdı -> derlendi

Garip ama yine aynı hatayı veriyor...

Bu işlev dışındaki her şeyi kaldırmayı deneyin ve derleyin. Hatalar olacak mı? Silmeden önce kaydetmeniz yeterli.
Neden: