Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 52
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Fiyat etiketinde ( OBJ_ARROW_LEFT_PRICE ) fiyat yerine kendi metninizi göstermeniz mümkün mü, mümkünse nasıl?
Ancak bu programda, yalnızca diğer DC'nin mumdan bir gölgesi vardır (mum en sağdadır)
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)
Bunun gibi bir şey yazmaya çalışıyorum: IceFX DrawProfit
kod:
{
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 :)
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:
{
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
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?
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.
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 );
}