[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 898

 
Dimka-novitsek :
Aynı durum.
kodu gönder
 
arvis :
Belirli bir zamandan puan cinsinden karı hesaplamak için MT4'teki gösterge nasıl ayarlanır?

Ara sıra isterseniz kapanış fiyatında bu şekilde olur ama 21:00'den itibaren puan saymak isterseniz zamanla oynamanız gerekir ve orada karmaşık bir şey yok.

 double Profit; // или double Profit = 0;

 int start {

 double PrevCl

 double CurrCl

PrevCl = iClose( Symbol (), 0 , 2 );
CurrCl = iClose( Symbol (), 0 , 1 );

if (PrevCl > CurrCl){ 

if (Ask > signal) {

 Profit = (Ask - signal);

return (Profit); 

} 

 if (Bid < signal) {

 Profit = (signal - Bid);

return (Profit); 

    }
  } 
}
 

lütfen bana aşağıdaki kodu nasıl daha iyi hale getireceğimi söyleyin:

 double LastOpenOrder() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0 ;
   int l_ticket_20 = 0 ;
   for ( int l_pos_16 = OrdersTotal () - 1 ; l_pos_16 >= 0 ; l_pos_16--) {
       OrderSelect (l_pos_16, SELECT_BY_POS, MODE_TRADES);
       if (OrderSymbol() != Symbol () || OrderMagicNumber() != MagicNumber) continue ;
       if (OrderSymbol() == Symbol () && OrderMagicNumber() == MagicNumber && OrderType() == OP_SELL) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderOpenPrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}

böylece şöyle yapabilirim:

 if (LastOpenOrder - Bid >= 25 * Point ) CloseOrder;

Yani sadece bu son açık emri kapat, diğerlerine dokunma!

Şimdiden teşekkürler.

 

Bir Uzman Danışmana nasıl doğru bir şekilde kayıt yapılır ve içindeki göstergenin sonucu nasıl alınır?

double ROC = iCustom(NULL,0,"ROC",12, 0,0 ); - veri çıkışı yapmaz.

double ROC = iCustom(NULL,0,"ROC",12, 0,0,0 ); - veri çıkışı yapmaz.

double ROC = iCustom(NULL,0,"ROC",12, 0,0,0,0 ); - veri çıkışı yapmaz.

Gösterge: https://www.mql5.com/en/code/9340

 
DhP :

Bir Uzman Danışmana nasıl doğru bir şekilde kayıt yapılır ve içindeki göstergenin sonucu nasıl alınır?

double ROC = iCustom(NULL,0,"ROC",12, 0,0 ); - veri çıkışı yapmaz.

double ROC = iCustom(NULL,0,"ROC",12, 0,0,0 ); - veri çıkışı yapmaz.

double ROC = iCustom(NULL,0,"ROC",12, 0,0,0,0 ); - veri çıkışı yapmaz.

Gösterge: https://www.mql5.com/en/code/9340

şöyle daha doğru olur:

 double ROC = iCustom ( NULL , 0 , "ROC" , 0 , 0 );

ama bununla ne yapacaksın onu anlayamıyorum. Belki de anlamama gerek yok

 
belck :

Ara sıra isterseniz kapanış fiyatında bu şekilde olur ama 21:00'den itibaren puan saymak isterseniz zamanla oynamanız gerekir ve orada karmaşık bir şey yok.


Yardımın için teşekkürler, belck .

Söylesene, birkaç çift üzerinde işlem yapılırsa, aynı miktarda karı nasıl koruyabilirim? Ayrıca, kapatılan işlemler de dikkate alınmalıdır.

 
arvis :


Yardımın için teşekkürler, belck .

Söylesene, birkaç çiftte alım satım yapılırsa, aynı miktarda karı nasıl koruyabilirim? Ayrıca, kapatılan işlemler de dikkate alınmalıdır.

Bu soruya cevap vermek benim için zor.

Ama bir şey söyleyebilirim ki, tüm bunların çağrılması gerekiyor. örneğin son mumun kapanışını çağırırsanız

 int start {

 double PrevCl

 double CurrCl

PrevCl = iClose( Symbol (), 0 , 2 ); // то тут указываете какая валютная пара и по желанию период : PrevCl = iClose("EURUSD", PERIOD_H1, 2);
CurrCl = iClose( Symbol (), 0 , 1 ); // тут так же

if (PrevCl > CurrCl){ 

if (Ask > signal) {

 Profit = (Ask - signal);

return (Profit); 

} 

 if (Bid < signal) {

 Profit = (signal - Bid);

return (Profit); 

    }
  } 
}

Son açık emrin fiyatı şu şekilde adlandırılır:

 double LastOpenOrder() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0 ;
   int l_ticket_20 = 0 ;
   for ( int l_pos_16 = OrdersTotal () - 1 ; l_pos_16 >= 0 ; l_pos_16--) {
       OrderSelect (l_pos_16, SELECT_BY_POS, MODE_TRADES);
       if (OrderSymbol() != Symbol () || OrderMagicNumber() != MagicNumber) continue ;
       if (OrderSymbol() == Symbol () && OrderMagicNumber() == MagicNumber && OrderType() == OP_SELL) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderOpenPrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}
 
Her şey az çok net. Vakit ayırdığınız için çok teşekkür ederim, belck .
 
arvis :


Yardımın için teşekkürler, belck .

Söylesene, birkaç çift üzerinde işlem yapılırsa, aynı miktarda karı nasıl koruyabilirim? Ayrıca, kapatılan işlemler de dikkate alınmalıdır.

Bu arada, nasıl doğru sayılacağıyla da çok ilgileniyorum. ve sonra zaten böyle yapmaya başladım, ama anlıyorum ki kafam karışmaya başladı:

 double LastOpenPriceCloseOrder() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0 ;
   int l_ticket_20 = 0 ;
   for ( int l_pos_16 = OrdersHistoryTotal( )  - 1 ; l_pos_16 >= 0 ; l_pos_16--) {
       OrderSelect (l_pos_16, SELECT_BY_POS, MODE_TRADES);
       if (OrderSymbol() != Symbol () || OrderMagicNumber() != MagicNumber) continue ;
       if (OrderSymbol() == Symbol () && OrderMagicNumber() == MagicNumber && OrderType() == OP_BUY) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderOpenPrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}

ve

 double LastClosePriceCloseOrder() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0 ;
   int l_ticket_20 = 0 ;
   for ( int l_pos_16 = OrdersHistoryTotal( )  - 1 ; l_pos_16 >= 0 ; l_pos_16--) {
       OrderSelect (l_pos_16, SELECT_BY_POS, MODE_TRADES);
       if (OrderSymbol() != Symbol () || OrderMagicNumber() != MagicNumber) continue ;
       if (OrderSymbol() == Symbol () && OrderMagicNumber() == MagicNumber && OrderType() == OP_BUY) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderClosePrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}
 

İşte karşılaştığım kriterler:

- ve birden fazla sipariş kapatıldıysa, toplam karlı puanlarını hesaplamanız ve puanları tam olarak saymanız gerekir.

ve bana bu kodda nasıl doğru yapılacağını söyle:

LastBuyPrice = FindLastBuyPrice();     

if (Ask - LastBuyPrice >= 25 * Point) {
      for (int l_pos_16 = OrdersTotal()  - 1; l_pos_16 >= 0; l_pos_16--) {
 OrderSelect (l_pos_16, SELECT_BY_POS, MODE_TRADES);
       if (OrderSymbol() != Symbol () || OrderMagicNumber() != MagicNumberBuy) continue ;
       if (OrderSymbol() == Symbol () && OrderMagicNumber() == MagicNumberBuy && OrderType() == OP_BUY) {
         CloseThisSymbolAll();
         Print ( "Closed All due to Stop Out" );
         }
       }
     }


double FindLastBuyPrice() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0 ;
   int l_ticket_20 = 0 ;
   for ( int l_pos_16 = OrdersTotal () - 1 ; l_pos_16 >= 0 ; l_pos_16--) {
       OrderSelect (l_pos_16, SELECT_BY_POS, MODE_TRADES);
       if (OrderSymbol() != Symbol () || OrderMagicNumber() != MagicNumberBuy) continue ;
       if (OrderSymbol() == Symbol () && OrderMagicNumber() == MagicNumberBuy && OrderType() == OP_BUY) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderOpenPrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}