Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 2

 
gyfto :


Aşağıdaki sorum var. Türkiye'de init () içinde terminali asan bir blok var (bunu dll'ye aktarmak istiyorum). Tabii ki, günlüğe bakmak imkansız - terminal sadece Ctrl + Alt + Delete ile kapatılır. İzleme amacıyla (ve bloğa dahil edilen döngülerin geçiş zamanını ölçmek için) yazdırmak yardımcı olmaz - baskı hiçbir şey yazmaz, günlük bile oluşturulmaz. Aynı amaç için FileOpen/FileWrite aracılığıyla çalışıyorum - dosya yalnızca oluşturuluyor (0 Kb) ve sessiz. FileOpen'den sonra, sonraki satıra FileWrite koydum - etkisi yok. Hangi yöne kazılacak?

Bunu kullanmayı deneyin. Yardımcı olmazsa, hataları aramak için, belirtilen başlatma bloğunu bayrak aracılığıyla bir kerelik başlatma için geçici olarak başlangıca taşıyabilir ve günlükleri ondan "çekmeyi" deneyebilirsiniz.
 
gyfto :


Konuyu alıp kapattım... Kötü biri.

Aşağıdaki sorum var. Türkiye'de init () içinde terminali asan bir blok var (bunu dll'ye aktarmak istiyorum). Tabii ki, günlük görüntülenemez - terminal yalnızca Ctrl + Alt + Delete ile kapatılır. İzleme amacıyla (ve bloğa dahil edilen döngülerin geçiş zamanını ölçmek için) yazdırmak yardımcı olmaz - baskı hiçbir şey yazmaz, günlük bile oluşturulmaz. Aynı hedefle FileOpen / FileWrite üzerinden çalışıyorum - dosya yalnızca oluşturulur (0 Kb) ve sessizdir. FileOpen'den sonra, sonraki satıra FileWrite koydum - etkisi yok. Hangi yöne kazılacak?


Bak, gizli niteliklerde değil mi?


Değmez.
 
TarasBY :
Bunu kullanmayı deneyin. Yardımcı olmazsa, hataları aramak için, belirtilen başlatma bloğunu bayrak aracılığıyla bir kerelik başlatma için geçici olarak başlangıca taşıyabilir ve günlükleri ondan "çekmeyi" deneyebilirsiniz.


Ne başlangıçta bir kerelik başlatma, ne bir başlatma işleminde çalışır, ne Print ne de FileWrite. Bu kod parçasını ekliyorum (başka bir çıkış yolu göremiyorum), bir ayak örtüsü olduğu için burada yayınlamıyorum. Tüm arabellek bildirimlerini gösterge arabelleği olarak kaldırdım ve tüm çağrıları yerleşik teknik göstergelere boyadım, onları dll'ye aktarmaya hazırlanıyorum. RAM'i dizilerle doldurmayı çoktan düşündüm, bu yüzden hesapladım, en büyük diziye sahibim, artı diğerleri, elli ve birkaç metre çıkıyor. Hayır, eğer bloğun girişindeki ilk satırda bile yazmıyorsa... - kafamı karıştıran da bu. Ekli sürüm, FileWrite ile doğrudur.
Dosyalar:
eflfcaj.mq4  10 kb
 
gyfto :

Ne başlangıçta bir kerelik başlatma, ne bir başlatma işleminde çalışır, ne Print ne de FileWrite. Bu kod parçasını ekliyorum (başka bir çıkış yolu göremiyorum), bir ayak örtüsü olduğu için burada yayınlamıyorum. Tüm arabellek bildirimlerini gösterge arabelleği olarak kaldırdım ve tüm çağrıları yerleşik teknik göstergelere boyadım, onları dll'ye aktarmaya hazırlanıyorum. RAM'i dizilerle doldurmayı çoktan düşündüm, bu yüzden hesapladım, en büyük diziye sahibim, artı diğerleri, elli ve birkaç metre çıkıyor. Hayır, eğer bloğun girişindeki ilk satırda bile yazmıyorsa... - kafamı karıştıran da bu. Ekli sürüm, FileWrite ile doğrudur.

Kod stili yok. Boşluk yok, farklı seviyelerde parantezler, arka arkaya birkaç işlem, tek bir yorum yok ... Kabus! :-))

Bunu kendin anlıyor musun?

 
MT4 ile sorunu çözmeye yardımcı olun. Özel bir gösterge çağrıldığında, giriş parametreleri ve renkleri pencerede görüntülenmez (hızlı bir şekilde yanıp söner ve kaybolurlar). Nasıl düzeltilir? MT4 yeniden düzenlendi, yardımcı olmadı.
 
gyfto :


Aldım ve konuyu kapattım... Kötü biri.


= :)
 
gyfto :

Ne başlangıçta bir kerelik başlatma, ne bir başlatma işleminde çalışır, ne Print ne de FileWrite. Bu kod parçasını ekliyorum (başka bir çıkış yolu göremiyorum), bir ayak örtüsü olduğu için burada yayınlamıyorum. Tüm arabellek bildirimlerini gösterge arabelleği olarak kaldırdım ve tüm çağrıları yerleşik teknik göstergelere boyadım, onları dll'ye aktarmaya hazırlanıyorum. RAM'i dizilerle doldurmayı çoktan düşündüm, bu yüzden hesapladım, en büyük diziye sahibim, artı diğerleri, elli ve birkaç metre çıkıyor. Hayır, eğer bloğun girişindeki ilk satırda bile yazmıyorsa... - kafamı karıştıran da bu. Ekli sürüm, FileWrite ile doğrudur.

Vadim'e katılıyorum - kodun okunması zor. Bu kodu, her birinde bir dosyaya yazdırma veya yazma çıktısı veren işlevsel bloklara ayırmaya çalışın. Ve kodun yürütülmesini "yavaşlatan" bir yapıda çalıştırın, örneğin şöyle:

 void SteppingThrough()
{
     int   li_Time = TimeLocal (), li_N = 0 ;
     bool lb_work = true , lb_break = false ;
     while ( IsStopped () == false )
    {
         if (lb_work)
        {
             switch (li_N)
            {
                 case 0 :
                     //---- Block 1
                    lb_work = false ;
                    li_N++;
                     break ;
                 case 1 :
                     //---- Block 2
                    lb_work = false ;
                    li_N++;
                     break ;
                 case N:
                     //---- Block N
                    lb_break = true ;
                    li_N++;
                     break ;
            }
             if (lb_break) break ;
        }
         if ( TimeLocal () > li_Time) {li_Time = TimeLocal (); lb_work = true ;}
    }
}

1 saniye içinde sonraki bloğun yürütülmesinde gecikme. - bu süre terminalin günlüğü yazdırması için yeterli olmalıdır.

 
 

Kim 2, "STOP ile son pozu kapatmak için bayrak" ve diğeri TAKE ile çok benzer işlevlere sahiptir.

işte kod

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

gördüğünüz gibi çok benziyorlar.

Ama nedense sadece STOP kapanışı benim için çalışıyor.

SL=  isCloseLastPosByStop( "" , - 1 , - 1 );
TP=  isCloseLastPosByTake( "" , - 1 , - 1 );

Print (SL, "_" ,TP); 

Pozu ellerimle açıyorum, kısa bir ÇEKİM koyuyorum. Çalışıyor - ancak EA BİR basmıyor, ancak SIFIR basmaya devam ediyor.

Ancak STOP'u kapatmak doğru yazdırılır: eğer stop = 1 ise, stop değilse = 0....

lütfen çözmeme yardım et....

 
lottamer :

Kim 2, "STOP ile son pozu kapatmak için bayrak" ve diğeri TAKE ile çok benzer işlevlere sahiptir.

işte kod

gördüğünüz gibi çok benziyorlar.

Ama nedense sadece STOP kapanışı benim için çalışıyor.

Pozu ellerimle açıyorum, kısa bir ÇEKİM koyuyorum. Çalışıyor - eno Advisor ONE yazdırmaz, ancak SIFIR yazdırmaya devam eder.

Ancak STOP ile kapatma doğru yazdırılır: eğer stop =1 ise, stop değilse =0...

lütfen çözmeme yardım et....


Durdurma emrinin açık bir pozisyonda hangi fiyata sahip olduğuna ve hangi fiyattan kapatıldığına dikkatlice bakın. İgor'un işlevinde, karşılaştırılan bu fiyatlardır, ancak kayma dikkate alınmaz.
Neden: