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

 
artmedia70 :

Ve burada tam olarak neyi yeniden çizmek istediğinizi özellikle anlamalısınız.

Tüm gösterge arabelleklerini tamamen yeniden hesaplamak gerekli olabilir.
Göstergenin davranışını ve dahili değişkenlerindeki harici bir değişikliğe tepkisini denemeniz gerekir.

Dürüst olmak gerekirse hiç denemedim (yapmıyorum... Neyse yalan söylüyorum tabii ki yaptım ve birçok kez olaylara tepki veren, gerekeni çizen göstergeler yaptım. Ama başlangıçta kullandım. tamponları çizmek için standart olmayan bir yaklaşım). Bir şey çizen bir test göstergesi yapın (en yakın çubuklarda ekranda en az birkaç nokta) ve olaylar aracılığıyla tamponunun değerini değiştirmeye çalışın. Değişirse, göstergeniz üzerinde çalışmanın bir yolu budur, değilse, tamamen farklı bir yaklaşım düşünmeniz gerekir. Gerekli olay algılandıktan sonra tüm hesaplamaları zamanlayıcıya aktarmanız veya doğrudan OnChartEvent() içinde bir yeniden hesaplama döngüsü yapmanız gerekebilir...

Kısacası - deneylere ihtiyaç var ...

Teşekkür ederim!

 
artmedia70 :

Bazı nedenlerden dolayı, TakeProfit'in görünümü toplamı kesintiye uğratmaz. Tarihteki tüm eksileri sayar.
 
Neron_plus34 :
Bazı nedenlerden dolayı, TakeProfit'in görünümü toplamı kesintiye uğratmaz. Tarihteki tüm eksileri sayar.
Döngüyü genişletin.
 
artmedia70 :
Döngüyü genişletin.
Teşekkürler Çalışıyor.
 

Merhaba... Oradan indirdiğim MT4 üzerinde ForexClub'da işlem yapıyordum... InstaForex'te başka bir hesap açmaya karar verdim... fakat başka bir hesaba bağlandığımda hisse senedi fiyatları ekranında "güncellemeleri bekliyorum" yazıyor. ... İstenen ekranı açmak için tekrar " grafiği aç " seçeneğini seçmem gerekiyor... Üreticiden MT4'ü buradan indirmeyi denedim ama sonra ticaret hesaplarına bağlanamıyorum.... bağlantı yok... neyi yanlış yapıyorum? bana yardım et lütfen....

 
Forexman77 :

Teşekkürler, yaptım!

Ve çizgiyi sürükledikten sonra göstergenin nasıl yeniden çizileceğini.

 // Определение LastBar по расположению StopLine на графике
bool fNewStopLine(){
   bool New;
   int StopBar, Error;
   double Shift;
   datetime StopLine;
   if ( ObjectFind ( "StopLine" )== 0 ){                 // Есть стоп-линия
      StopLine=ObjectGet( "StopLine" ,OBJPROP_TIME1); // Время стоп-линии
      StopBar=iBarShift( NULL , 0 ,StopLine);           // Бар стоп-линии
      LastBar=StopBar+ 1 ;                           // Бар окончания построения
       if ( StopBar<=БарОкончания ){                 //    правее или на последнем баре
         LastBar=БарОкончания;                     // Перенести на нулевой бар
         StopBar=LastBar- 1 ;
         StopLine=Time[StopBar];
         if ( ! ObjectMove ( "StopLine" , 0 ,StopLine, 0 ) ){
             if ( !РежимОтладки ) PlaySound ( "alert.wav" );
             Print ( "***   StopLine - объект не перемещен, ошибка " + GetLastError ());
      }  }
       if ( StopLine!=OldStopLine ){                 // Новая стоп-линия
         ReInit();                                 // Повторная инициализация
         ClearScreen();                             // Очистить экран
         Shift= 0.01 *(WindowPriceMax()-WindowPriceMin())*СдвигИндикатораТиков;
         Error=fArrow( "TickIndicator" , "" , 0 ,StopBar // Сформировать индикатор тика
                     ,WindowPriceMin()+Shift, 0 , 0 , 0 , 0
                     ,ЗнакИндикатораТиков,ЦветИндикатораТиков,РазмерИндикатораТиков);
         OldStopLine=StopLine;                     // Стоп-линия обработана
         New= true ;                                 // Выполнить построение заново
      }
       else {                                         // Нет новой стоп-линии
         New= false ;                                 // Построение заново не выполнять
   }  }
   else {                                           // Нет стоп-линии
      New= false ;                                   // Построение заново не выполнять
      Error=fObjectDelete( "TickIndicator" );         // Удалить индикатор тика
   }
   return (New);
}
 
tara :

Teşekkür ederim!
 

Bir sorunla karşılaştı. Tek bir göstergeye dayanarak kendi göstergemi yapıyorum ama orada amacını anlamadığım birkaç satır var ve aynı zamanda bu satırlar dll kütüphanesi tarafından kullanılıyor. Bu satırların ne için olduğunu kendi kelimelerinizle açıklayabilir misiniz? Ve onları dll kütüphanesini kullanmadan nasıl yeniden yapabilirim? Bu satırları aşağıda vurguladım:

 #import "user32.dll"
         int   RegisterWindowMessageA ( string lpString); 
         int   PostMessageA           ( int hWnd, int Msg, int wParam, int lParam);
                
#define WM_COMMAND                     0x0111
#import

             int MT4InternalMsg;
             int hwnd;
             string sn; 
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- create timer
   EventSetTimer ( 60 );

   if (MT4InternalMsg == 0 )  
         {
         MT4InternalMsg = RegisterWindowMessageA( "MetaTrader4_Internal_Message" ); 
    }       
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//--- destroy timer
   EventKillTimer ();
      
  }

//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer ()
  {
//---
                  hwnd = WindowHandle( Symbol (), 1 );
         if (PostMessageA(hwnd, 0x0111 , 0x822c , 0 ) == false )
          {
          hwnd = 0 ;
           return ;
          }
          PostMessageA(hwnd, MT4InternalMsg, 2 , 1 );    
  }
//+------------------------------------------------------------------+
 
1. Aynı anda iki veya daha fazla sipariş nasıl açılır?
2. Siparişin TP veya SL tarafından kapatıldığını nasıl bilebilirim ve bu olayla ilgili bir şey çağırabilir miyim?
3. Bir danışmanla gerçek ticaret sırasında ne gibi sorunlar ortaya çıkabilir? TP, SL, bekleyen vb. varsayılan olarak kullanılabilir mi? sunucuda? Bu durumda ne yapmalı? Ticaret günlüklerini güvenli bir şekilde nerede saklayabilirim ( global değişkenlerde , terminalde, dosyalarda vb.)?
 
smart_man :
1. Aynı anda iki veya daha fazla sipariş nasıl açılır?
2. Siparişin TP veya SL tarafından kapatıldığını nasıl bilebilirim ve bu olayla ilgili bir şey çağırabilir miyim?
3. Bir danışmanla gerçek ticaret sırasında ne gibi sorunlar ortaya çıkabilir? TP, SL, bekleyen vb. varsayılan olarak kullanılabilir mi? sunucuda? Bu durumda ne yapmalı? Ticaret günlüklerini güvenli bir şekilde nerede saklayabiliriz (global değişkenlerde, terminalde, dosyalarda vb.)?

Bazı yanıtları burada bulabilirsiniz: https://www.mql5.com/en/forum/131859