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

 
Alexey Viktorov :
Kabul ediyorum. Ancak bunun "Hesap Geçmişi" değil "Ticaret" penceresi olduğunu anlamak için yine de denemeniz gerekir. Dikkatsizlik ve tembellikten dolayı kafa kaslarımı zorlamadan bunun "Hesap Geçmişi" penceresi olduğuna karar verdim.

Olur. Affedilebilir.

 

Beş haneli işareti okumanın sakıncalı olması nedeniyle grafikte standart teklif satırını devre dışı bıraktım, üst köşeye 4 hane koydum ama bazen fiyat düşüyor ve bu da yine rahatsızlık yaratıyor :-)

Label nesnesini fiyatla birlikte hareket ettirmek istiyorum, çerçeveden dolayı OBJ_ARROW_RIGHT_PRICE doğru fiyat etiketini sevmiyorum.

Ancak bazı nedenlerden dolayı teklif fiyatına göre konumlandırma çalışmıyor, etiket sol üst köşede görüntüleniyor


 //+------------------------------------------------------------------+
//|                                              CandleTimeStationary|
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+

#property indicator_chart_window
#property strict

//---- input parameters
input color Clock_Color = clrCrimson ;

string objname= "Bid" ;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
{
         ObjectCreate ( 0 , objname, OBJ_LABEL , 0 , 0 , 0 );
        
    

         return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
void OnDeinit ( const int reason) { ObjectDelete ( 0 , objname); } 

//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total, const int prev_calculated, const datetime & time[], const double & open[], const double & high[], const double & low[], const double & close[], const long & tick_volume[], const long & volume[], const int & spreads[])
{

         ObjectSetDouble ( 0 , objname, OBJPROP_PRICE , SymbolInfoDouble ( Symbol (), SYMBOL_BID ));     
         ObjectSetString ( 0 , objname, OBJPROP_TEXT , DoubleToString ( SymbolInfoDouble ( Symbol (), SYMBOL_BID ), _Digits - 1 ));
         ObjectSetInteger ( 0 , objname, OBJPROP_FONTSIZE , 12 );
         ObjectSetInteger ( 0 , objname, OBJPROP_COLOR , Clock_Color);
         ObjectSetString ( 0 , objname, OBJPROP_FONT , "Verdana" );
        
         return (rates_total);
}
 
psyman :

Beş haneli işareti okumanın sakıncalı olması nedeniyle grafikte standart teklif satırını devre dışı bıraktım, üst köşeye 4 hane koydum ama bazen fiyat düşüyor ve bu da yine rahatsızlık yaratıyor :-)

Label nesnesini fiyatla birlikte hareket ettirmek istiyorum, çerçeveden dolayı OBJ_ARROW_RIGHT_PRICE doğru fiyat etiketini sevmiyorum.

Ancak bazı nedenlerden dolayı teklif fiyatına göre konumlandırma çalışmıyor, etiket sol üst köşede görüntüleniyor


OBJ_LABEL için konum raporu piksel olarak verilir.

ChartTimePriceToXY ( 0 , 0 , TimeCurrent (), Bid , x, y); // x, y добавьте в переменные, тип int
ObjectSetInteger ( 0 , objname, OBJPROP_YDISTANCE , ulong (y)); //если на эту строчку будет предупреждение в компиляторе то, значит ulong ненужен
//ObjectSetDouble(0, objname, OBJPROP_PRICE, SymbolInfoDouble(Symbol(), SYMBOL_BID));
ObjectSetString ( 0 , objname, OBJPROP_TEXT , DoubleToString ( Bid , _Digits - 1 ));
 
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+

double Znomer()
{
zn= 0 ; // z-число
psd= 0 ; // кол. положительных сделок
usd= 0 ; // количество отрицательных сделок 
ww= 0 ; // боол переменная 
nn= 0 ; // боол переменная
C= 0 ; // C = количество чередований между отрицательными и положительными сделками
index= OrdersHistoryTotal (); 
if ( OrdersHistoryTotal ()> 302 ) index= 301 ; // берём не более 301 сделки
if (index< 30 ) return ( 1 ); // берём не менее 30
count= OrdersHistoryTotal (); // считаем от скольки 
prom=count-index; // выделяем только последние сделки
if (prom< 0 ) prom= 0 ; // исключаем ошибки

for ( i=count;i>prom;i--)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )== true )
{
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic)
{ // далее магия
pribul= OrderProfit (); 
if (ww== 0 &&pribul> 1 ){C++;ww= 1 ;nn= 0 ;} // подсчитываем смену тенденции
if (nn== 0 &&pribul< 1 ){C++;ww= 0 ;nn= 1 ;} // подсчитываем смену тенденции 
if (pribul> 1 ){psd++;} //прибыльные сделки
if (pribul< 1 ){usd++;} // убыточные сделки

}
}
}
/*/*
Величина Z = (A * (C — 0.5) — B)/ ((B*(B — C))/(C -1))^(1/2), где:
A = количество анализируемых сделок;
B = 2*количество прибыльных сделок * количество убыточных сделок;
C = количество чередований в выборке (чередованием считается каждая пара сделок, 
когда прибыльная сделка сменяет убыточную либо наоборот).
*/
zn = (index*(C- 0.5 )-( 2 *psd*usd))/
(((( 2 *psd*usd)*(( 2 *psd*usd)-C))/
(C- 1 ))*(((( 2 *psd*usd)*(( 2 *psd*usd)-C))/
(C- 1 ))* 0.5 ));



return (zn);
}

Hesaptaki boşaltma eğilimini hesaplamak için basit bir kod çizmeye karar verdim. Bunu yapmak için basit bir Z-skor formülü aldım ve onu mq4 koduna aktarmaya çalıştım.
Her şeyi doğru yazdım, ancak Print üzerinden basit bir çıktıya başlar başlamaz danışman hemen çalışmıyor. Derlerken hata yok.
Beynimi zaten basit bir kodla kırdım.

Yardım edersen teşekkürler!

 
Aliaksei Karalkou :

Hesaptaki boşaltma eğilimini hesaplamak için basit bir kod çizmeye karar verdim. Bunu yapmak için basit bir Z-skor formülü aldım ve onu mq4 koduna aktarmaya çalıştım.
Her şeyi doğru yazdım, ancak Print üzerinden basit bir çıktıya başlar başlamaz danışman hemen çalışmıyor. Derleme sırasında herhangi bir hata yoktur.
Beynimi zaten basit bir kodla kırdım.

Yardım edersen teşekkürler!

Bir danışman için çalışma iznini kontrol edin. Ve baskıdaki çıktı nerede? Bu kod parçası bir şey döndürüyor gibi görünüyor, çünkü hata yok, o zaman sorun bu kod parçasının dışında. Bu parçada, 0'a bölünmenin gerçekleşebilmesi dışında

 
Ilya Prozumentov :

OBJ_LABEL için konum raporu piksel olarak verilir.

İlya, teşekkürler, işe yaradı.

Yalnızca bir sonraki aşamaya geçerken - pencerenin yeniden boyutlandırılması dikkate alındığında, derleyici bir veri türü dönüştürme uyarısı verir:

 int width = ChartGetInteger ( 0 , CHART_WIDTH_IN_PIXELS , 0 );

tür dönüştürme nedeniyle olası veri kaybı 4 hane+.mq5 36 on dört


İşlev int türünü döndürmesine rağmen.


 
psyman :

İlya, teşekkürler, işe yaradı.

Yalnızca bir sonraki aşamaya geçerken - pencerenin yeniden boyutlandırılması dikkate alındığında, derleyici bir veri türü dönüştürme uyarısı verir:

tür dönüştürme nedeniyle olası veri kaybı 4 hane+.mq5 36 on dört


İşlev int türünü döndürmesine rağmen.


İşlev, uzun türünü döndürür
 
novichok2018 :

ha?! Ve siparişin kapatıldığı nerede görülebilir?

"Ticaret" penceresindeki yeşil bir TP, mevcut fiyatın TP'den -100 pip'in ötesine geçmediği veya daha doğrusu TP'den 100 pip içinde olduğu anlamına gelir.

teşekkür etmek!
 
Artyom Trishkin :
İşlev, uzun türünü döndürür

Bu gibi durumlarda ne yapılması önerilir, değişkenin türünü değiştirin veya olduğu gibi bırakın?

 
psyman :

Bu gibi durumlarda ne yapılması önerilir, değişkenin türünü değiştirin veya olduğu gibi bırakın?

 int width = ( int ) ChartGetInteger ( 0 , CHART_WIDTH_IN_PIXELS , 0 );
Neden: