MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1216

 
Valeriy Yastremskiy :

Bayraklar veya emir türlerinin sayısının kontrolü veya bilet bir piyasa emrinin kapanış zamanının kontrolü ise, sıfıra eşit değilse, emir kapanmıştır ve emri açma bayrağı yanlıştır.

Programatik olarak nasıl?
 
AIGUL SALMANOVA :
Programatik olarak nasıl?
 if ( OrderSelect (Ticket, SELECT_BY_TICKET)== true )
        {
         if (OrderCloseTime()== 0 )               // Если наш рыночный ордер не закрыт
           {
             if (flagAlert == true )
               Alert ( "Наш рыночный ордер жив, Модифицируем его если нужно " , Text,Ticket, ". Ждём ответ.." );

            ModifyTral(); // Модифицируем если нужно
           }
         if (OrderCloseTime()!= 0 )               // Если наш рыночный ордер закрылся
           {
            OpnOr= false ;                     // Флаг открытия рыночного ордера после его закрытия делаем ЛОЖЬ
            Ticket= 0 ;                           // Тикет ордера рыночного, он может быть только один
           
             Alert ( "Наш рыночный ордер закрылся. Работа Советника продолжается " , "Прибыль/убыток = " ,OrderProfit(),
                   " Своп = " , OrderSwap(), " Комиссия = " , OrderCommission());
             return ;
           }
        }
       else
        { Alert ( "OrderSelect() нашего рыночного ордера вернул ошибку - " , GetLastError ()); return ;}
     }

Bilet muhasebesi için.

Bir sipariş açarken, bileti hatırlamanız gerekir.

 Alert ( "Попытка открыть Buy Ожидание ответа.." , "SL = " ,SL, "TP = " ,TP, "Lts = " ,Lts);
            Ticket= OrderSend (Symb,OP_BUY,Lts,Ask,slippage,SL,TP, "QstrBuy" ,Magic, 0 ,Blue); //Открытие Buy
             if (Ticket> 0 ) // Получилось :)
              {
               Alert ( Symbol (), "Открыт ордер Buy по цене " ,Ask, "Ticket = " ,Ticket);}
 
Valeriy Yastremskiy :

Dürüst olmak gerekirse, neye ihtiyacınız olduğu net değil. Neyin görüntülendiğini ve neye ihtiyacınız olduğunu nasıl anladığınızı formüllere yazın.

Son 4 tik arasında milisaniye cinsinden zamana ihtiyacınız var. Yeni bir onay işareti göründüğünde değerleri güncelleyin.

Gösterge, son işaretin ( GetTickCount() ) zamanını arabelleğe yazar.

EA, göstergeden değerler alır ve zaman farkını hesaplar.

 double buf1= iCustom ( Symbol (), 0 , "time" , 0 , 1 );
double buf2= iCustom ( Symbol (), 0 , "time" , 0 , 2 );
double buf3= iCustom ( Symbol (), 0 , "time" , 0 , 3 );
double buf4= iCustom ( Symbol (), 0 , "time" , 0 , 4 );
double delta1=buf1-buf2;
double delta2=buf2-buf3;
double delta3=buf3-buf4;
Alert (delta1, "   " ,delta2, "   " ,delta3);

Görünen o ki her şey düşünülmüş ama Alert resimdeki gibi değerleri tek tek veriyor.

Anlamıyor musun neden.


 
prom18 :

Son 4 tik arasında milisaniye cinsinden zamana ihtiyacınız var. Yeni bir onay işareti göründüğünde değerleri güncelleyin.

Gösterge, son işaretin (GetTickCount()) zamanını arabelleğe yazar.

EA, göstergeden değerler alır ve zaman farkını hesaplar.

Görünen o ki her şey düşünülmüş ama Alert resimdeki gibi değerleri tek tek veriyor.

Anlamıyor musun neden.


çünkü belgeleri okumuyorsun

GetTickCount ile ilgili yardımda bununla ilgili yazılmıştır - bu, sayacın tamsayı taşmasıdır

 
Maxim Kuznetsov :

çünkü belgeleri okumuyorsun

GetTickCount ile ilgili yardımda bununla ilgili yazılmıştır - bu, sayacın tamsayı taşmasıdır

uint'ten mi bahsediyorsun? Neden uyarıda çıkıyor? Oraya yazmadım.

 
prom18 :

uint'ten mi bahsediyorsun? Neden uyarıda çıkıyor? Oraya yazmadım.

ilk Uyarıda hesaplanan farkı yanlış gösteriyorsunuz (taşmaları hesaba katmadan),

kodda büyük bir tamsayı değerinin olduğu ikinci Uyarı, sağladığınız parçada değil :-)

 

Bu sadece nokta, kodda mevcut değil.

Göstergenin tüm kodu.

 #property   indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua
double x[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers( 1 );
   SetIndexStyle( 0 , DRAW_LINE );
   SetIndexBuffer ( 0 ,x);
   SetIndexDrawBegin( 0 , 0 );
   SetIndexLabel( 0 , "x" );
   SetIndexShift( 0 , 0 );
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   uint b= GetTickCount ();
   x[ 0 ]=b;
   Alert (b);
   for ( int j= ArraySize (x)- 1 ;j>= 1 ;j--){x[j]=x[j- 1 ];}
   return ( 0 );
  }
//+------------------------------------------------------------------+

Danışmanın tüm kodu.

 #property copyright ""
#property link        ""
#property version    "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- 
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//--- 
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   uint buf1= iCustom ( Symbol (), 0 , "time" , 0 , 1 );
   uint buf2= iCustom ( Symbol (), 0 , "time" , 0 , 2 );
   uint buf3= iCustom ( Symbol (), 0 , "time" , 0 , 3 );
   uint buf4= iCustom ( Symbol (), 0 , "time" , 0 , 4 );
   uint delta1=buf1-buf2;
   uint delta2=buf2-buf3;
   uint delta3=buf3-buf4;
   Alert (delta1, "   " ,delta2, "   " ,delta3);  
  }
//+------------------------------------------------------------------+
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
  • www.mql5.com
//| Expert initialization function                                   | //| Expert deinitialization function                                 | //| Expert tick function                                             | //| test1                                                            |...
 
prom18 :

Bu sadece nokta, kodda mevcut değil.

Göstergenin tüm kodu.

Danışmanın tüm kodu.

bakın daha neler bıraktınız.

time.mq4'e bakın - belki uyarı gönderir

 
prom18 :

Bu sadece nokta, kodda mevcut değil.

Göstergenin tüm kodu.

Danışmanın tüm kodu.

Uyarı yapısındaki göstergede. Uyarı (b) altında 5 satır;

 uint b= GetTickCount ();
   x[ 0 ]=b;
   Alert (b);

Görünüşe göre bu, sistem başladığından beri geçen milisaniye sayısıdır )

 

Hızlı işlem butonlarının durumu nasıl izlenir?

Yani, grafikte ya da değiller.

İstemi işlevi veya başka bir yöntem ne.