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

 
gyfto :

Bir çocuk sorum var. Değişkenler kod başlığında bildirilir. Teorik olarak, küreseldirler. Ama neyin farklı olduğunu anlamıyorum

itibaren

, bu değişken kod başlığında bildirilmişse. Teoride, değişkenin kapsamı. Ancak her iki durumda da işlevin içinde görünür. Test edildi (komut dosyası):

- Herhangi bir fark görmedi. Farklarını açıklayabilir misiniz, yoksa anlamıyorum.

Ekstra statik var. Ayrıca onsuz çalışacaktır. Fonksiyonların içinde statiği bildirmek mantıklıdır. Kapsam yalnızca fonksiyon bloğudur.
 
Zhunko :
Fonksiyonların içinde statiği bildirmek mantıklıdır. Kapsam yalnızca fonksiyon bloğudur.


Aynı şekilde çalışır:

 int a = 10 ;
int start(){
   Alert ( StringConcatenate ( "st: a = " , a)); //st: a = 10
   f1(); Alert ( StringConcatenate ( "f1: a = " , a)); //f1: a = 10
   f2(); Alert ( StringConcatenate ( "f2: a = " , a)); //f2: a = 10
}
void f1(){
   int a = 11 ;
   return ;
}
void f2(){
   static int a = 12 ;
   return ;
}

Hangi durumda fark hissedilir? ALXIMIKS , cevap için de teşekkürler.

 

Merhaba!

Bana iphone/ipad'de kurulu mt4'e ek gösterge/robotun nasıl kurulacağını söyle? Prensipte bu mümkün mü? Windows ile her şey basit, ancak Apple'ın mobil ürünlerinde her şey o kadar açık değil.

Mantık bunun mümkün olduğunu belirtir. Sonuçta, bir dizi gösterge önceden yüklenmiştir. Ancak dosya yapısı farklı olduğu için neyin ve nereye kopyalanacağı belirsizdir. Kimse böyle bir sorunla karşılaşmadı mı?

Şimdiden teşekkürler.

 

Hareketli ortalamalara dayalı bir gösterge yapıyorum. Buradaki fikir, verilen noktalardaki küçük hareketleri kesmektir. Diyelim ki 50 puanlık bir filtre ayarladık. Gösterge azalıyor, ancak düşüş 50 puandan az, bu yüzden dünün ortalama değerini alıp yazıyoruz, seviyesini mevcut tarih için belirliyoruz. Bir sonraki çubukta farkı kontrol ediyoruz, mevcut değer eksi kaydedilen değer, toplam 50 puandan fazla değilse, mevcut değeri statik değişkende saklanan seviyeye ayarlıyoruz. Değer aşılırsa, değer güncel hale gelir, yani sıfır kaymalı hareketli ortalamaya benzer. Çeşitli varyasyonlar denedim, ancak henüz doğru çözümü bulamadım.

Algılama kolaylığı için, sadece azalmayı çizmek için kodu ekliyorum. Sorun, göstergenin büyümeye dayanmasıdır. Ve asıl mesele şu ki, test cihazında çalıştırdığınızda, filtrenin ötesine geçmemesine rağmen, gösterge değişikliklerini görsel olarak görüyorum. Bir yerde "MA_otshet" yazılı değerinin değerinin kaybolduğunu varsayıyorum.

 #property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red 
//--- input parameters
//--- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle ( 0 , DRAW_LINE , 0 , 1 );
   SetIndexBuffer ( 0 ,ExtMapBuffer1);
   IndicatorDigits ( Digits + 1 );
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
     int counted_bars= IndicatorCounted (),                      
    limit;
     double
    raznica,raznica_static,MA_0_t,MA_1_t;
   static double MA_otshet;   //здесь хранится запись значения MA_otshet
   
   for ( int i= 0 ;i< Bars ;i++)
   {  
      MA_0_t= iMA ( NULL , 0 , 7 , 0 , MODE_EMA , PRICE_CLOSE ,i+ 0 );  
      MA_1_t= iMA ( NULL , 0 , 7 , 0 , MODE_EMA , PRICE_CLOSE ,i+ 1 ); 
      raznica=MA_0_t-MA_1_t; //разница между сегодня и вчера по скользящей средней
      raznica_static=MA_0_t-MA_otshet; //разница между сегодня и MA_otshet

       if (raznica > - 0.005 && raznica <= 0 ) // если raznica не превышает заданное число 
          {
          MA_otshet=MA_1_t; // записываем значение MA_otshet
          }
       if (raznica_static > - 0.005 && raznica_static <= 0 ) //если raznica_static не превышает заданное число
          {
          ExtMapBuffer1[i]=MA_otshet;   // то рисуем значение индикатора, как записанный MA_otshet
          }
       if (raznica_static < - 0.005 ) // если raznica превышает заданное число
          {
          ExtMapBuffer1[i]=MA_0_t; // то рисуем значение по текущей цене
          }
   } 
   return ( 0 );
  }
//+------------------------------------------------------------------+
 

tünaydın. bana yardım et lütfen.

tüm emirlerin 2355'te kapanması ve cuma ticaretinin 2200'de bitmesi gerekiyor, bu yüzden ticarette bir sıkışma var

Ders kitabında saat kısmında bir script buldum lütfen yardım edin lütfen günün parametre numarasını ekleyin yani cuma 2155 ve normal günlerde 2355'te kapansın diye yada varsa link paylaşabilirim hazır çözümler

 //--------------------------------------------------------------------
// timeevents.mq4
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------- 1 --
extern double Time_Cls = 16.10 ;          // Время закрытия ордеров
bool Flag_Time = false ;                  // Флаг, сообщения ещё не было 
//--------------------------------------------------------------- 2 --
int start ()                            // Спец. функция start
  {
   int    Cur_Hour = Hour () ;             // Серверное время в часах
   double Cur_Min = Minute () ;           // Серверное время в минутах
   double Cur_time = Cur_Hour + Cur_Min 100 ; // Текущее время
   Alert ( Cur_time ) ;
   if ( Cur_time >= Time_Cls )             // Если наступило время события
      Executor () ;                      //.. то выполняем задуманное
   return ;                             // Выход из start()
  }
//--------------------------------------------------------------- 3 --
int Executor ()                         // Пользовательская функция
  {
   if ( Flag_Time == false )               // Если ещё не было сообщения..
     {                                 // .. то сообщаем (1 раз)
      Alert ( " Время важных новостей. Закройте ордера. " ) ;
      Flag_Time = true ;                  // Теперь сообщение уже было
     }
   return ;                             // Выход из польз. функции
  }

//------------------------------------------------ --------------- 4 --

 
r772ra :
Kolayca!!!


TEŞEKKÜR. Ama bana söyleme. Sadece 1 güne ihtiyacım var. Yani, son iş günü için kârla ilgili bilgileri görüntüleyin

Değişkenler bildirilir. Çalışmıyor. Hepsi sıfır.

for (p=0; p<OrdersHistoryTotal(); p++) {

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {

if (StrToTime(TimeToStr(TimeCurrent(), TIME_DATE))<OrderCloseTime() && (OrderType()==OP_BUY || OrderType()==OP_SELL) )

p0+=OrderProfit()+OrderCommission()+OrderSwap();

}

}

double r0=p0*100/AccountBalance();

 
Zolotai :


TEŞEKKÜR. Ama bana söyleme. Sadece 1 güne ihtiyacım var. Yani, son iş günü için kârla ilgili bilgileri görüntüleyin

Değişkenler bildirilir. Çalışmıyor. Hepsi sıfır.

for (p=0; p<OrdersHistoryTotal(); p++) {

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {

if (StrToTime(TimeToStr(TimeCurrent(), TIME_DATE))<OrderCloseTime() && (OrderType()==OP_BUY || OrderType()==OP_SELL) )

p0+=OrderProfit()+OrderCommission()+OrderSwap();

}

}

double r0=p0*100/AccountBalance();


Bu EA, MM_Light kitaplığına sahiptir ve şu işlevi içerir:

 //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Считаем итоги работы по своим ордерам                                      |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
double fCalculate_Pribul ( int fi_OP = - 2 ,               // тип (BUY\SELL) учитываемых ордеров
                           datetime fdt_TimeBegin = 0 ,   // момент времени, с которого производим расчёт
                           string fs_Comment = "" )       // комментарий ордеров
{
     double    ld_Pribul = 0.0 ;
     int       history_total = OrdersHistoryTotal ();
//----
     for ( int li_ORD = 0 ; li_ORD < history_total; li_ORD++)
    {
         if (!fCheck_MyOrders (li_ORD, fi_OP, MODE_HISTORY )) continue ;
         if (fdt_TimeBegin > OrderCloseTime ()) continue ;
         if (fs_Comment != "" ) { if ( StringFind ( OrderComment (), fs_Comment) < 0 ) continue ;}
        ld_Pribul += ( OrderProfit () + OrderSwap () + OrderCommission ());
    }
//----
     return (ld_Pribul);
}
İlkeyi anlamak zor değil. Mevcut gün için kar/zararı hesaplamak için, ona şu değeri iletmeniz gerekir: fCalculate_Pribul (-2, iTime (Symbol(), PERIOD_D1, 0), "").
 
sannin :

tünaydın. bana yardım et lütfen.

tüm emirlerin 2355'te kapanması ve cuma ticaretinin 2200'de bitmesi gerekiyor, bu yüzden ticarette bir sıkışma var

Ders kitabında saat kısmında bir script buldum lütfen yardım edin lütfen günün parametre numarasını ekleyin yani cuma 2155 ve normal günlerde 2355'te kapansın diye yada varsa link paylaşabilirim hazır çözümler

//------------------------------------------------ --------------- 4 --

Hazırlıksız, yani kod elbette dizde yazıyor, ama çalışması gerekiyor, en azından sen anlayabilirsin

 int start() {
switch ( DayOfWeek ()){ // если пятница,суббота, и т.д.
 case 4 : //пятница
 case 5 : //суббота на всякий случай
 case 6 : //воскресенье на всякий случай
             if (( Hour ()== 22 && Minute ()>= 00 ) || Hour ()> 22 ){
                 //   Выполняем какое то действие  в пятницу после 22:00
             }
             break ;
 case 0 : //понедельник
 case 1 : //вторник
 case 2 : //среда
 case 3 : //четверг
             if ( Hour ()> 23 || ( Hour ()== 23 && Minute ()> 55 )){
                 // все остальные действия в нормальные рабочии дни ПОСЛЕ 23:55
             }
               break ;
   default :   { //все остальные действия в нормальные рабочии дни до 23:55
  
             }
 }                   
}
 
SetIndexStyle ( 1 , DRAW_LINE , STYLE_DASH , 0 );
Bu kısımda çizgi kalınlığı nerede belirtilir? Hatta utandım. :(
 
Link_x :
Bu kısımda çizgi kalınlığı nerede gösterilir? Hatta utandım. :(
Son parametre.
Neden: