[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 113

 
IgorM :

init() içinde karmaşık hesaplamalar veya takas geçmişi var veya terminalde terminali asan veya...

Genel olarak, kodu başlatmak için biraz zaman var, tam olarak ne kadar olduğunu söylemeyeceğim, ancak kodun başlatılması sırasında terminal kodu kesintiye uğratırsa, logda şöyle bir hata olacaktır: " ... . uzmanda zaman aşımı ...."

terminal günlükte herhangi bir hata göstermiyorsa, başlatma başarılı olmuştur ve start() işlevinin kendisinin kontrol edilmesi kolaydır - ilk satıra start() yazın: Print("new tick");


Ben öyle yaptım(((

int start()
  {
   Print ( "start" );
  
/*current_values_from_MT(CUR, CUR_BUF);
current_values_from_MT(MAIN, MAIN_BUF);*/

  


   return ( 0 );
  }

Evet, bir sürü bilgi indiriyorum, bir sürü hesaplama da var, kenelerle denemeler yapıyorum...

Hesaplama 2 - 3 dakika sürer, MT "askıda kalmaz", her şey normal çalışır, Print() ve Alert'ten gelen mesajlar ekranda görüntülenir ve ardından her şey))

MT'den gelen tüm mesajlara baktım, herhangi bir hata bulamadım...

Yardım lütfen.

 
BBSL :

Hesaplama 2 - 3 dakika sürer, MT "askıda kalmaz", her şey normal çalışır, Print() ve Alert'ten gelen mesajlar ekranda görüntülenir ve ardından her şey))

Print() görüntülenirse, THEN start() kesinlikle sizin için çalışır, ancak hesaplamanın 2-3 dakika sürdüğü ifadeniz kafa karıştırıcı olsa da - böyle bir terminal yüklemesi ile hesaplamaları uyku() ile kesmek gerekir işlev, aksi takdirde terminal kesin olarak askıda kalacaktır

MT4'te hata ayıklayıcı olmaması nedeniyle, şüpheli kod bölümlerine Print()'i yerleştirin ve karşılanıp karşılanmayan kod bölümlerini ve koşulları yakalayın, aksi takdirde hiçbir şey

 
Açık emirlerin TakeProfit veya StopLoss tarafından tetiklendiği ve TakeProfit ve StopLoss değerlerinin kendilerinin beni ilgilendirmediği gerçeğini düzeltmem gerekiyor.
 
Jaguar1974 :

Siparişin TakeProfit veya StopLoss tarafından tetiklenip tetiklenmediği nasıl kontrol edilir? Cevap için teşekkürler!

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия последней позиции по стопу.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByStop( string sy= "" , int op=- 1 , int mn=- 1 ) {
   datetime t;
   double    ocp, osl;
   int       dg, i, j=- 1 , k=OrdersHistoryTotal();

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) {
       if (OrderSymbol()==sy || sy== "" ) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (op< 0 || OrderType()==op) {
             if (mn< 0 || OrderMagicNumber()==mn) {
               if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
   if ( OrderSelect (j, SELECT_BY_POS, MODE_HISTORY)) {
    dg=MarketInfo(sy, MODE_DIGITS);
     if (dg== 0 ) if ( StringFind (OrderSymbol(), "JPY" )< 0 ) dg= 4 ; else dg= 2 ;
    ocp= NormalizeDouble (OrderClosePrice(), dg);
    osl= NormalizeDouble (OrderStopLoss(), dg);
     if (ocp==osl) return (True);
  }
   return (False);
}
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия последней позиции по тейку.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByTake( string sy= "" , int op=- 1 , int mn=- 1 ) {
   datetime t;
   double    ocp, otp;
   int       dg, i, j=- 1 , k=OrdersHistoryTotal();

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) {
       if (OrderSymbol()==sy || sy== "" ) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (op< 0 || OrderType()==op) {
             if (mn< 0 || OrderMagicNumber()==mn) {
               if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
   if ( OrderSelect (j, SELECT_BY_POS, MODE_HISTORY)) {
    dg=MarketInfo(sy, MODE_DIGITS);
     if (dg== 0 ) if ( StringFind (OrderSymbol(), "JPY" )< 0 ) dg= 4 ; else dg= 2 ;
    ocp= NormalizeDouble (OrderClosePrice(), dg);
    otp= NormalizeDouble (OrderTakeProfit(), dg);
     if (ocp==otp) return (True);
  }
   return (False);
}
Her iki işlevin kodunu kontrol edin ve yürütme hızı açısından ve özellikle görevleriniz için optimizasyon için bunları tek bir işlevde birleştirin...
 
eddy :
Sayod , hangi TF ile ve hangi parametrelerle işlem yaptınız?


Fark nedir veya zaten tersini yaptınız ve test etmek mi istiyorsunuz?

Varsayılan olarak h1'de işlem görür.

Pip adımı - 30

LotExpo - 1.59

Parametrelerin fikrin uygulanmasının gerçekten önemli olmadığını düşünmeme rağmen, danışmanın herhangi bir parametre ile faydalı olacağını düşünüyorum, IMHO.

 
Jaguar1974 :
Açık emirlerin TakeProfit veya StopLoss tarafından tetiklendiği ve TakeProfit ve StopLoss değerlerinin kendilerinin beni ilgilendirmediği gerçeğini düzeltmem gerekiyor.

sadece tetikleme gerçeğini düzeltirseniz, önceki onaydaki siparişlerin sayısını hatırlayabilir ve bir sonraki onay işaretinde karşılaştırabilirsiniz - eğer sipariş sayısı değiştiyse, o zaman ....
 
kiimar :
Terminal, kaybetme emrini şu yorumla kapattı: "yani: %19.5/28.4/145.8". Ne anlama geliyor?
Bu, %19,5'lik serbest marj seviyesine ulaştığınızda, bir stopout yaptığınız ve kaybedilen işlemin yönetmeliklere göre kapatıldığı anlamına gelir.
 
IgorM :

Print() görüntülenirse, THEN start() kesinlikle sizin için çalışır, ancak hesaplamanın 2-3 dakika sürdüğü ifadeniz kafa karıştırıcı olsa da - böyle bir terminal yüklemesi ile hesaplamaları uyku() ile kesmek gerekir işlev, aksi takdirde terminal kesin olarak askıda kalacaktır

MT4'te hata ayıklayıcı olmaması nedeniyle, şüpheli kod bölümlerine Print()'i yerleştirin ve karşılanıp karşılanmayan kod bölümlerini ve koşulları yakalayın, aksi takdirde hiçbir şey


Üzgünüm, öyle söylemedim, Print sadece İnternette çalışır. başlayamıyorum

Evet, her işlevin sonunda, her şeyin yolunda olup olmadığını kontrol etmek için bununla ilgili bir mesajla print koyuyorum. Ve tüm mesajlar (tüm işlevler) başlatmanın sonuna kadar %100 çalıştı, başlangıca gidemiyorum!

Cevabınız için şimdiden teşekkür ederiz!

 
Teşekkürler, daha öğreneceğim çok şey var.
artmedia70 :
Her iki işlevin kodunu kontrol edin ve yürütme hızı açısından ve özellikle görevleriniz için optimizasyon için bunları tek bir işlevde birleştirin...
 
BBSL :


Üzgünüm, öyle söylemedim, Print sadece İnternette çalışır. başlayamıyorum

Evet, her işlevin sonunda, her şeyin yolunda olup olmadığını kontrol etmek için bununla ilgili bir mesajla print koyuyorum. Ve tüm mesajlar (tüm işlevler) başlatmanın sonuna kadar %100 çalıştı, başlangıca gidemiyorum!

Cevabınız için şimdiden teşekkür ederiz!

Yani açıkçası terminalde bir kene yok. Onlar. ya bağlı değil ya da çevrimdışı bir grafik üzerinde çalışıyorsunuz ya da init'te IsExpertEnabled() öğesini kontrol edin ve izin verilmiyorsa danışmanları açın.

Neden: