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

 
Artyom Trishkin :

Ö! Teşekkür ederim. Sabah kendisi tahmin edemedi... Ancak yine de dizilerin doldurulup doldurulmadığını kontrol etmek gerekiyor. İlk dörtte görmedim ve ilk beşte, tarihsel veri eksikliği nedeniyle veriler genellikle ilk kez doldurulmaz.

not. Daha fazla uyumanız gerekiyor - bu yöndeki düşünceler işe yarayacak.

Peki, bir döngüye koyabilirsin

do while ( CopyOpen ( _Symbol , PERIOD_CURRENT , 1 , 15 , openCandle) < 0 );

ya da

do while ( CopyOpen ( _Symbol , PERIOD_CURRENT , 1 , 15 , openCandle) < 15 );

böylece tam olarak istenen miktar kopyalandı.


not; Ben biraz çay doldururken, CopyRates() ve bir dizi MqlRates oranları[] yapısını kullanmak için başka bir düşünce geldi, ancak bir şeyi yeniden yazmak tembellik.

 
Alexey Viktorov :

Peki, bir döngüye koyabilirsin

do while ( CopyOpen ( _Symbol , PERIOD_CURRENT , 1 , 15 , openCandle) < 0 );

ya da

do while ( CopyOpen ( _Symbol , PERIOD_CURRENT , 1 , 15 , openCandle) < 15 );

böylece tam olarak istenen miktar kopyalandı.


not; Ben biraz çay doldururken, CopyRates() ve bir dizi MqlRates oranları[] yapısını kullanmak için başka bir düşünce geldi, ancak bir şeyi yeniden yazmak tembellik.

Önerdiğim bu değil miydi?
 
giannis1386 :
Güzel gün. Kollarım eğri. lütfen satmak için zararı durdurma kontrolü eklememe yardım edin (slevel). ve sonra fiyatı yakalamaya çalışır.
int start()
{
//+--------------------------------------------------------------------+
//|   -= stop loss в без убыток =-                                      |
//+--------------------------------------------------------------------+
bool    result;
double stop;
int     cmd,error;
for ( int i= 0 ;i< OrdersTotal ();i++)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderProfit ()>pOPCS)
{
cmd= OrderType ();
double blevel= OrderStopLoss ()< Bid - Point *TS;
double slevel= OrderStopLoss ()> Ask + Point *TS;
//---
if (cmd== OP_BUY || cmd== OP_SELL )
{
while ( true )
{
if (cmd== OP_BUY && blevel) stop= Bid - Point *TS;
else                       stop= Ask + Point *TS;
result= OrderModify ( OrderTicket (), OrderOpenPrice (),stop, 0 , 0 ,Orange);
if (result!= TRUE ) { error= GetLastError (); Print ( "LastError = " ,error); }
else error= 0 ;
if (error== 135 ) RefreshRates ();
else break ;
}
}
}
}

Mantığınız garip. Ama garip mantığa bakmasanız bile, o zaman:

Burada Satın Al için kontrol edilen iki koşul ve Satış için diğer her şey var.

if (cmd== OP_BUY && blevel ) stop= Bid - Point *TS;
else                        stop= Ask + Point *TS;
 
Artyom Trishkin :

Mantığınız garip. Ama garip mantığa bakmasanız bile, o zaman:

Burada Satın Al için kontrol edilen iki koşul ve Satış için diğer her şey var.

if (cmd== OP_BUY && blevel ) stop= Bid - Point *TS;
else                        stop= Ask + Point *TS;

Sell slevel = OrderStopLoss ()> Ask + Point *TS;

ancak programlamada boom boom olmadığı için mantıklı bir şey olmadı. hafta toplama forumları. tüm girişimler, Selovskiy durağının fiyatla birlikte çalışmasıyla sona erdi.

neden garip mantık?) kod tamamen benim değil. elimden geldiğince yeniden yaptım

 
giannis1386 :

Sell slevel = OrderStopLoss ()> Ask + Point *TS;

ancak programlamada boom boom olmadığı için mantıklı bir şey olmadı. hafta toplama forumları. tüm girişimler, Selovskiy durağının fiyatla birlikte çalışmasıyla sona erdi.

neden garip mantık?) kod tamamen benim değil. elimden geldiğince yeniden yaptım

Ve önce bir kalemle bir kağıda, Satın Alma durağını ve Satış durağını değiştirmeniz gereken koşulları yazarsınız.

Ve ancak o zaman, ne yazıldığını anladıktan sonra, kağıda yazılanları koda yazın.

 
Artyom Trishkin :

Ve önce bir kalemle bir kağıda, Satın Alma durağını ve Satış durağını değiştirmeniz gereken koşulları yazarsınız.

Ve ancak o zaman, ne yazıldığını anladıktan sonra, kağıda yazılanları koda yazın.

slevel= OrderStopLoss ()> Sor + Puan *TS; Eh, burada köy için gibi. yoksa doğru değil mi? Ben bu işte acemiyim.
 
giannis1386 :
slevel= OrderStopLoss ()> Sor + Puan *TS; Eh, burada köy için gibi. yoksa doğru değil mi? Ben bu işte acemiyim.

Bu durumda yazılanları anlıyor musunuz? Bu, double türündeki bir değişkene sıfır veya bir atamadır.

Bununla ne elde etmek istiyorsun?

 
Artyom Trishkin :

Bu durumda yazılanları anlıyor musunuz? Bu, double türündeki bir değişkene sıfır veya bir atamadır.

Bununla ne elde etmek istiyorsun?

işte okuduklarım.

durumu kontrol et - SL'yi ileri geri hareket ettirmeyin, sadece bir yönde hareket ettirin

Örneğin, bir SATIN AL emri için formülünüz

OrderStopLoss ()< teklif noktası*TrailingStop

bu örnekte, köy için perçinlenmiş

 
giannis1386 :

işte okuduklarım.

durumu kontrol et - SL'yi ileri geri hareket ettirmeyin, sadece bir yönde hareket ettirin

Örneğin, bir SATIN AL emri için formülünüz

OrderStopLoss ()< teklif noktası*TrailingStop

bu örnekte, köy için perçinlenmiş

Yani böyle ihtiyacınız var:

Rusça'da... durdurma emri, Teklif fiyatından takip eden durdurma mesafesinin boyutundan küçükse, o zaman ... eylemleriniz

Ve bu mantıksal ifadenin sonucunu bir değişkene atarsınız - yani ya sıfır ya da bir.

 
Artyom Trishkin :

Yani böyle ihtiyacınız var:

Rusça'da... durdurma emri, Teklif fiyatından takip eden durdurma mesafesinin boyutundan küçükse, o zaman ... eylemleriniz

Ve bu mantıksal ifadenin sonucunu bir değişkene atarsınız - yani ya sıfır ya da bir.

tamamen kafam karıştı.

double blevel= OrderStopLoss ()< Teklif - Puan *TS; benim için çalışıyor. SL fiyatı sadece kârda takip eder.

double slevel= OrderStopLoss ()> Sor + Point *TS; ama bunu diğerine nasıl ekleyeceğimi bilmiyorum

Onlara bool gibi sahip değilim.