Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 852

 

Anlaşma açmıyor, söve nerede?

iRSI_handle= iRSI ( NULL , 0 , 15 , PRICE_OPEN );

double iRSI_buf[];

ArraySetAsSeries (iRSI_buf, true );

CopyBuffer (iRSI_handle, 0 , 0 , 20 ,iRSI_buf);

if (iRSI_buf[ 0 ]>60)

trader.Buy(Lot);
 
Askr :

Anlaşma açmıyor, söve nerede?

Cant numarası 1: Her tikte YENİ bir gösterge KOLU oluşturursunuz

Cant numarası 2: (muhtemelen) Lot değişkeninin hacmi yanlış.

Cant numarası 3: (muhtemelen) CTrade sınıfı için siparişlerin doldurma türü doldurulmamıştır.


Genel olarak, terminal (veya test cihazı) günlüğünde neler var?

 
Kirill Belousov :

tutarı 1 SL'den para birimindeki kayıpla çarpın

Ve kayıp 1 ise, örneğin BO'da.

Formüldeki değerleri yerine koyuyorum aynı sonuca yakın bile değil.

Sorun nedir?

 double lot= 1.0 ;
double koef_lot= 2.0 ;
int seriya = 15 ;
double depo= 0.0 ;
depo=(lot*(koef_lot*seriya- 1 ))/(koef_lot- 1 );
   Comment ( " depo " ,depo);
 
Vladimir Karputov :

Cant numarası 1: Her tikte YENİ bir gösterge KOLU oluşturursunuz

Cant numarası 2: (muhtemelen) Lot değişkeninin hacmi yanlış.

Cant numarası 3: (muhtemelen) CTrade sınıfı için siparişlerin doldurma türü doldurulmamıştır.


Genel olarak, terminal (veya test cihazı) günlüğünde neler var?

evet bu kod ontikteydi

 ArraySetAsSeries (iRSI_buf, true );

CopyBuffer (iRSI_handle, 0 , 0 , 20 ,iRSI_buf);

onit'e aktarıldı. Burada makaleler okudum - ve onlardan iş için bir fark olmadığını anladım, ancak bilette daha iyi. Ancak kendim için görünürlük açısından, her şeyi 1 blok ile aynı anda yapmak benim için daha uygun oldu, kendim için belirlediğim problemleri çözerken tamamen kendim içindeyim (öğreniyorum).

Sorun partideydi - değişken partiyi değil, iade parti fonksiyonunu ayarlamak gerekliydi (çünkü partiyi hesaplamak için bir fonksiyon vardı).

Şimdi lot işlevinde de bir kusur keşfettim - bir sürü ondalık basamaklı formun hesaplanması devam ediyor ve sonuç olarak işlem açılamıyor. Gereksiz karakterleri azaltmak ve sadece 2 bırakmak gerekir.

 //параметры
input double       StartLot= 0.1 ;
input double       StartEquityLot= 10000 ;

//переменные
double KoefLotEQUITY; //разница эквити
double Lot;

//функция расчета текущего торгового лота
double LotF( double Lot)
{
KoefLotEQUITY= AccountInfoDouble ( ACCOUNT_EQUITY )/ StartEquityLot;
Lot=StartLot*KoefLotEQUITY;
//функция минимального возможного лота
if (Lot< 0.01 )
{
Lot= 0.01 ;
}

return (Lot);
} 

NormalizeDouble ve DoubleToStr henüz çalışmıyor - bir işlevi bir işleve yuvalayamayacağınızı söylüyor. - ve aşağıda, çalışmalarını bir işlevle eklediğimde düzeltemediğim hatalar yazıyor.


 
Askr :

Bu kod ontic'teydi

onit'e aktarıldı. Burada makaleler okudum - ve onlardan iş için bir fark olmadığını anladım, ancak bilette daha iyi. Ancak kendim için görünürlük açısından, her şeyi 1 blok ile aynı anda yapmak benim için daha uygun oldu, kendim için belirlediğim problemleri çözerken tamamen kendim içindeyim (öğreniyorum).

Sorun partideydi - değişken partiyi değil, iade parti fonksiyonunu ayarlamak gerekliydi (çünkü partiyi hesaplamak için bir fonksiyon vardı).

Şimdi lot işlevinde de bir kusur keşfettim - bir sürü ondalık basamaklı formun hesaplanması devam ediyor ve sonuç olarak işlem açılamıyor. Gereksiz karakterleri azaltmak ve sadece 2 bırakmak gerekir.

NormalizeDouble ve DoubleToStr henüz çalışmıyor - bir işlevi bir işleve yuvalayamayacağınızı söylüyor. - ve aşağıda, çalışmalarını bir işlevle eklediğimde düzeltemediğim hatalar yazıyor.


MQL5'te, BİR KEZ ve YALNIZCA OnInit'te bir gösterge tanıtıcısı oluşturmanız ZORUNLUDUR. Bu bir aksiyomdur. OnTick'te her işarette bir gösterge tutamacı oluşturamazsınız - bu YANLIŞ.

Doğru parti normalleştirmesi, CSymbolInfo:: NormalizePrice ticaret sınıfındadır.

 
Vladimir Karputov :

MQL5'te, BİR KEZ ve YALNIZCA OnInit'te bir gösterge tanıtıcısı oluşturmanız ZORUNLUDUR. Bu bir aksiyomdur. OnTick'te her işarette bir gösterge tutamacı oluşturamazsınız - bu YANLIŞ.

Doğru parti normalleştirmesi, CSymbolInfo:: NormalizePrice ticaret sınıfındadır.

Yanlış, bununla tartışmıyorum. ANCAK!!! Ve her kene üzerinde oluşturursanız ne değişecek??? Değer bile değişmez.

 
Alexey Viktorov :

Yanlış, bununla tartışmıyorum. ANCAK!!! Ve her kene üzerinde oluşturursanız ne değişecek??? Değer bile değişmez.

Peki ya anlamı? Sadece senaryoya yapılacak ekstra iş ve hepsi bu.

 
Alexey Viktorov :

Yanlış, bununla tartışmıyorum. ANCAK!!! Ve her kene üzerinde oluşturursanız ne değişecek??? Değer bile değişmez.

Son makalelerimden birinde, MQL5'in MQL4 tarzı kodlamanın tuhaflıklarıyla etkili bir şekilde mücadele ettiğini gösterdim - her bir işarette tutamaçlar oluşturarak: bellek artık tüketilmiyor, ancak en azından çalışma hızı düşüyor. Ancak tekrar ediyorum: MQL5 dilinde MQL4 stilinde göstergeler oluşturmak yanlış bir yöntemdir. MQL5'e geçtiyseniz, programlama stilini yeniden oluşturmanız gerekir.

 
Konstantin Nikitin :

Peki ya anlamı? Sadece senaryoya yapılacak ekstra iş ve hepsi bu.

Tabii ki hiçbir anlamı yok. Davulcu için çok gizli bir soruydu: Neden burada zaten yeterince var olan nevrotikler gibi olun ve Caps Lock'u açın?

 

Yani sonuç aynı ama doğal olarak icra açısından yazılanlardan anladığım kadarıyla anlamsız ve çok daha yoğun.

Keşke makalede bunun hakkında yazmayı düşünmüş olsalardı, genel olarak aynı şeyi neden birkaç kez yaptığınız zaten açık.

Ama kendimi anlamak ve çalışmak ve düşündükten sonra optimize etmemek için yazmak gibi bir amacım vardı.