Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 52

 
ilnur17021992 :
Fiyat etiketinde ( OBJ_ARROW_LEFT_PRICE ) fiyat yerine kendi metninizi göstermeniz mümkün mü, mümkünse nasıl?
ObjectCreate (Name, OBJ_TEXT ,Window,aTime,aPrice);
 
Güzel gün! Birisi neden H4 ve M15 listelerindeki fiyatların eşleşmediğini açıklayabilir mi? M15'teki ekran görüntüsünde fiyat kırmızı çizgiyi geçti ( dikey çizginin solunda). Bir dakika sonra, fiyatın hala ondan çok uzak olduğu (satırın sağında) H4'ün bir ekran görüntüsü alındı.
Ancak bu programda, yalnızca diğer DC'nin mumdan bir gölgesi vardır (mum en sağdadır)
 
Equal :
Güzel gün! Birisi neden H4 ve M15 listelerindeki fiyatların eşleşmediğini açıklayabilir mi? M15'teki ekran görüntüsünde fiyat kırmızı çizgiyi geçti ( dikey çizginin solunda). Bir dakika sonra, fiyatın hala ondan çok uzak olduğu (satırın sağında) H4'ün bir ekran görüntüsü alındı.
Ancak bu programda, yalnızca başka bir DC'nin mumdan bir gölgesi vardır (mum en sağdadır)
Farklı DC'lerdeki alıntıların farklı olması sizin için yeni mi? Evet, aynı DC'de demo ve gerçek için bile farklıdırlar! Bu ne sürpriz (:
 

Bunun gibi bir şey yazmaya çalışıyorum: IceFX DrawProfit

kod:

void start()
{
   for ( int i= 0 ;i< OrdersHistoryTotal ();i++)
   {
       if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY ) && OrderSymbol ()== Symbol () && OrderType ()<= 1 )
      History();
   }
}
  
void History()
{
   string Ticket= IntegerToString ( OrderTicket ());
   color col=Red;
   if ( OrderType ()== 0 )col=Blue;
   datetime a= OrderOpenTime ();
   double b= OrderOpenPrice ();
   datetime c= OrderCloseTime ();
   double d= OrderClosePrice ();
   double profit= OrderProfit ();
  
   ObjectCreate (Ticket+" Open ", OBJ_ARROW , 0 ,a,b);
   ObjectSet (Ticket+" Open ", OBJPROP_COLOR ,col);
   ObjectSet (Ticket+" Open ", OBJPROP_ARROWCODE , 1 );
      
   ObjectCreate (Ticket+"Line", OBJ_TREND , 0 ,a,b,c,d);
   ObjectSet (Ticket+"Line", OBJPROP_COLOR ,col);
   ObjectSet (Ticket+"Line", OBJPROP_WIDTH , 1 );
   ObjectSet (Ticket+"Line", OBJPROP_STYLE , STYLE_DOT );
   ObjectSet (Ticket+"Line", OBJPROP_RAY , 0 );
      
   ObjectCreate (Ticket+" Close ", OBJ_ARROW , 0 ,c,d);
   ObjectSet (Ticket+" Close ", OBJPROP_COLOR ,Green);
   ObjectSet (Ticket+" Close ", OBJPROP_ARROWCODE , 3 );
      
   ObjectCreate (Ticket+"Profit", OBJ_TEXT , 0 ,c,d);
   ObjectSet (Ticket+"Profit", OBJPROP_WIDTH , 2 );
   ObjectSetText (Ticket+"Profit", DoubleToString (profit, 2 ), 10 ,"Arial",White);
   ObjectSet (Ticket+"Profit", OBJPROP_PRICE1 ,d+ Point * 5 );
   ObjectSet (Ticket+"Profit", OBJPROP_TIME1 ,c+ 10000 );      
}

Her şey çalışıyor, ancak şu anda bir sipariş paketini kapsayan ve sonuç olarak kâr birbiriyle örtüşen bir ızgara Uzman Danışman kullanıyorum, bu kapalı paketin kârının özetlenmesini ve yalnızca görüntülenen miktarın (olduğu gibi) IceFX DrawProfit göstergesinde uygulanır ) ve şu anda sahip olduğum gibi her sipariş için ayrı ayrı değil. Çözmeme yardım et :)


Dosyalar:
 
Vitalie Postolache :
Farklı DC'lerdeki alıntıların farklı olması sizin için yeni mi? Evet, aynı DC'de demo ve gerçek için bile farklıdırlar! Bu ne sürpriz (:
Bir başkasında sürpriz. Sonuçta, bu bir ve aynı gerçek hesap ve fiyat sadece başka bir zaman dilimine geçerken değişir (eşleşmiyor).
Diğer DC'de de, programı değiştirirken gerçek bir hesapta her şey yolunda! Farklı fiyatların farklı olması anlaşılabilir, birinin aynı anda iki fiyatı olduğu, dakikalar için saatin farklı olduğu (çok farklı) net değil. Bunun böyle olmaması gerektiğini anlıyorum, ama sorun nerede olabilir. Bu arada mum, bir sonrakinin açılmasından yaklaşık bir saat sonra "düzeltildi".
 
ilnur17021992 :

Bunun gibi bir şey yazmaya çalışıyorum: IceFX DrawProfit

kod:

void start()
{
   for ( int i= 0 ;i< OrdersHistoryTotal ();i++)
   {
       if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY ) && OrderSymbol ()== Symbol () && OrderType ()<= 1 )
      History();
   }
}
  
void History()
{
   string Ticket= IntegerToString ( OrderTicket ());
   color col=Red;
   if ( OrderType ()== 0 )col=Blue;
   datetime a= OrderOpenTime ();
   double b= OrderOpenPrice ();
   datetime c= OrderCloseTime ();
   double d= OrderClosePrice ();
   double profit= OrderProfit ();
  
   ObjectCreate (Ticket+" Open ", OBJ_ARROW , 0 ,a,b);
   ObjectSet (Ticket+" Open ", OBJPROP_COLOR ,col);
   ObjectSet (Ticket+" Open ", OBJPROP_ARROWCODE , 1 );
      
   ObjectCreate (Ticket+"Line", OBJ_TREND , 0 ,a,b,c,d);
   ObjectSet (Ticket+"Line", OBJPROP_COLOR ,col);
   ObjectSet (Ticket+"Line", OBJPROP_WIDTH , 1 );
   ObjectSet (Ticket+"Line", OBJPROP_STYLE , STYLE_DOT );
   ObjectSet (Ticket+"Line", OBJPROP_RAY , 0 );
      
   ObjectCreate (Ticket+" Close ", OBJ_ARROW , 0 ,c,d);
   ObjectSet (Ticket+" Close ", OBJPROP_COLOR ,Green);
   ObjectSet (Ticket+" Close ", OBJPROP_ARROWCODE , 3 );
      
   ObjectCreate (Ticket+"Profit", OBJ_TEXT , 0 ,c,d);
   ObjectSet (Ticket+"Profit", OBJPROP_WIDTH , 2 );
   ObjectSetText (Ticket+"Profit", DoubleToString (profit, 2 ), 10 ,"Arial",White);
   ObjectSet (Ticket+"Profit", OBJPROP_PRICE1 ,d+ Point * 5 );
   ObjectSet (Ticket+"Profit", OBJPROP_TIME1 ,c+ 10000 );      
}

Her şey çalışıyor, ancak şu anda bir sipariş paketini kapsayan ve sonuç olarak kâr birbiriyle örtüşen bir ızgara Uzman Danışman kullanıyorum, bu kapalı paketin kârının özetlenmesini ve yalnızca görüntülenen miktarın (olduğu gibi) IceFX DrawProfit göstergesinde uygulanır ) ve şu anda sahip olduğum gibi her sipariş için ayrı ayrı değil. Çözmeme yardım et :)


Kar ayrı bir döngüde hesaplanır
 
Alekseu Fedotov :
Kar ayrı bir döngüde hesaplanır
Yani? Belirli siparişlerin bir grup olduğu ve kârlarının özetlenmesi gerektiği nasıl belirlenir?
 
ilnur17021992 :
Yani? Belirli siparişlerin bir grup olduğu ve kârlarının özetlenmesi gerektiği nasıl belirlenir?
Ve ne şekilde, bir grup tarafından bir işlev aracılığıyla veya bir şekilde farklı bir şekilde kapatılırlar?
 
Vitaly Muzichenko :
Ve ne şekilde, bir grup tarafından bir işlev aracılığıyla veya bir şekilde farklı bir şekilde kapatılırlar?
Siparişler ızgara robotu tarafından açılır, tüm grup için hesaplar ve ortak bir TP yerleştirir ve buna göre kapatılır.


Ekran görüntüsü eklendi:
 
ilnur17021992 :
Siparişler ızgara robotu tarafından açılır, tüm grup için hesaplar ve ortak bir TP yerleştirir ve buna göre kapatılır.

Ekran görüntüsü eklendi:

Aşağı yukarı şöyle:

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int TotalPos=- 1 ;
void OnTick ()
{
 // остальной код

//--
   if ( OrdersTotal ()!=TotalPos) {  // не мучаем каждый тик
   for ( int i= OrdersHistoryTotal ()- 1 ; i>= 0 ; i--) {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )) {
     if ( OrderSymbol ()== Symbol () && OrderType ()<= 1 ) {
      History();

      ...
     }
  }}} TotalPos= OrdersTotal ();  // запомним количество

//--
}

//+------------------------------------------------------------------+
//| Create Object istory                                             |
//+------------------------------------------------------------------+
void History() {
   string Ticket=( string ) OrderTicket ();
   color col=Red;
   if ( OrderType ()== 0 )col=Blue;
   datetime a= OrderOpenTime ();
   double b= OrderOpenPrice ();
   datetime c= OrderCloseTime ();
   double d= OrderClosePrice ();
   double prSep= OrderProfit ()+ OrderCommission ()+ OrderSwap ();
   double prAll= 0 ;
   int     cn= 0 ;
   string hTicket;
   for ( int i= OrdersHistoryTotal ()- 1 ; i>= 0 ; i--) {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )) {
     if ( OrderSymbol ()== Symbol () && OrderType ()<= 1 ) {
       datetime ct= OrderCloseTime ();
       // 60 секунд разницы между закрытием первой и последней в сетке
       if (c<=ct+ 60 && c>=ct- 60 ) {
        prAll+= OrderProfit ()+ OrderCommission ()+ OrderSwap ();
        hTicket=( string ) OrderTicket ();
        cn++;
      }
   }}}
   ObjectCreate (Ticket+ "Open" , OBJ_ARROW , 0 ,a,b);
   ObjectSet (Ticket+ "Open" , OBJPROP_COLOR ,col);
   ObjectSet (Ticket+ "Open" , OBJPROP_ARROWCODE , 1 );
      
   ObjectCreate (Ticket+ "Line" , OBJ_TREND , 0 ,a,b,c,d);
   ObjectSet (Ticket+ "Line" , OBJPROP_COLOR ,col);
   ObjectSet (Ticket+ "Line" , OBJPROP_WIDTH , 1 );
   ObjectSet (Ticket+ "Line" , OBJPROP_STYLE , STYLE_DOT );
   ObjectSet (Ticket+ "Line" , OBJPROP_RAY , 0 );
      
   ObjectCreate (Ticket+ "Close" , OBJ_ARROW , 0 ,c,d);
   ObjectSet (Ticket+ "Close" , OBJPROP_COLOR ,Green);
   ObjectSet (Ticket+ "Close" , OBJPROP_ARROWCODE , 3 );
  
   Ticket=cn> 1 ?hTicket:Ticket;
   ObjectCreate (Ticket+ "Profit" , OBJ_TEXT , 0 ,c,d);
   ObjectSet (Ticket+ "Profit" , OBJPROP_ANCHOR , 0 );
   ObjectSetText (Ticket+ "Profit" , DoubleToString (prAll, 2 ), 10 , "Arial" , /*White*/ clrBlack );
   ObjectSet (Ticket+ "Profit" , OBJPROP_PRICE1 ,d);
   ObjectSet (Ticket+ "Profit" , OBJPROP_TIME1 ,c+ Period ()* 60 * 2 );
}