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

 
Artyom Trishkin :

Kimse sana "loshara" demedi, boşuna öylesin. Ancak 4-6 satırlık kod da şaşırtıcıdır - sonuçta, bir kişi bir şey öğrendiğine göre, zaten bir şey denemeli, zaten bir şeyler yazmaya çalıştı ve bunu 4-6 satırda açıkça görüyor. Uyum sağlamak.

Ne yapmaya çalıştığınızı gösterin - anlamaya çalışın.

Alternatif, basitleştirilmiş bir versiyon sunabilirim - belirli bir seviyenin fiyat geçişini tiklerle aramayın, ancak MA (1) ile arayın - o zaman 1. çubukta MA ve 0 çubuğunda MA geçiş göstergesi olarak hizmet edecektir. ihtiyacınız olan seviye.


Uzun süre cevap veremediğim için üzgünüm. Sadece şaşkınlıkla ortaya çıktığına sevindim, alevlendim. Soruma gelince, fiyata ulaştığında normal bir emir açacak ve bu fiyatı geçtikten sonra bir daha açılmayacak bir kod yazmayı başardım. Ama ben şöyle yaptım:
çift b = 5;
int başlangıç()
{
çift teklif = Teklif;
if (teklif==0.7777 && b==5)
{
b=b+1;
OrderSend (Symbol(), OP_BUY, 0.1, Sor, 0,0,0);
}

dönüş;

Bunun bir "anaokulu" yöntemi olduğunu zaten anladım ve onunla çalışmak imkansız çünkü çok fazla nüans var ve hiç pratik değil. Kodun hangi durumda çalışmayacağını veya çalışması için nasıl değiştirebileceğinizi söyleyebilir misiniz? Ps "MA (1) ile arayın - daha sonra çubuk 1'deki MA ve çubuk 0'daki MA, ihtiyacınız olan seviyeyi geçmenin bir göstergesi olarak hizmet edecektir." malzeme


 
maxon777 :

Uzun süre cevap veremediğim için üzgünüm. Sadece şaşkınlıkla ortaya çıktığına sevindim, alevlendim. Soruma gelince, fiyata ulaştığında normal bir emir açacak ve bu fiyatı geçtikten sonra bir daha açılmayacak bir kod yazmayı başardım. Ama ben şöyle yaptım:
çift b = 5;
int başlangıç()
{
çift teklif = Teklif;
if (teklif==0.7777 && b==5)
{
b=b+1;
OrderSend(Symbol(), OP_BUY, 0.1, Sor, 0,0,0);
}

dönüş;

Bunun bir "anaokulu" yöntemi olduğunu zaten anladım ve onunla çalışmak imkansız çünkü çok fazla nüans var ve hiç pratik değil. Kodun hangi durumda çalışmayacağını veya çalışması için nasıl değiştirebileceğinizi söyleyebilir misiniz? Ps "MA (1) ile arayın - daha sonra çubuk 1'deki MA ve çubuk 0'daki MA, ihtiyacınız olan seviyeyi geçmenin bir göstergesi olarak hizmet edecektir." malzeme



İki sayının eşitliği için karşılaştırma, double yazın, çok iyi bir işlem değil.

bunun gibi, NormalizeDouble (A - B, 5)==0, yani muhtemelen.

 

Herkese iyi akşamlar!

Lütfen yardım edin, koddaki hatayı bulamıyorum.

Paritemde bir kar olup olmadığını belirlemem gerekiyor, varsa, ticarete devam etmeyin ve danışmanı kapatın, değilse, o zaman

bir gecikme ayarlayın.

Sorun şu ki, Expert Advisor başlatıldığında hemen siliniyor, yani. ExpertRemove() henüz kar olmamasına rağmen çalışıyor.

Aşağıda kodun bir parçasıdır:

geçersiz OnTick()

{

if (TakeProfit()>0)

{

ExpertRemove();

}

if(TakeProfit()<=0)

{

burada bir gecikme koyduk

}

}

//+------------------------------------------- --------------------+

////////Burada kârlı kapalı siparişler var mı diye bakıyoruz!!!!!!!!

int TakeProfit()

{

int sayı = 0;

for(int i=OrdersHistoryTotal()-1; i>=0; i--)

{

if (OrderSelect (i,SELECT_BY_POS,MODE_HISTORY) == true && OrderMagicNumber() == Magic && OrderSymbol () == Symbol () && OrderProfit()>0.0)

{

say++;

}

}

dönüş(sayım);




 
yaaarik777 :

Herkese iyi akşamlar!

Lütfen yardım edin, koddaki hatayı bulamıyorum.

Paritemde bir kar olup olmadığını belirlemem gerekiyor, varsa, ticarete devam etmeyin ve danışmanı kapatın, değilse, o zaman

bir gecikme ayarlayın.

Sorun şu ki, Expert Advisor başlatıldığında hemen siliniyor, yani. Henüz kar olmamasına rağmen ExpertRemove() çalışıyor.

Aşağıda kodun bir parçasıdır:

////////karlı kapanan var mı diye bakıyoruz!!!!!!!!

int TakeProfit()

{

int sayı = 0;

for(int i=OrdersHistoryTotal()-1; i>=0; i--)

{

if (OrderSelect (i,SELECT_BY_POS,MODE_HISTORY) == true && OrderMagicNumber() == Magic && OrderSymbol () == Symbol () && OrderProfit()>0.0)

{

say++;

}

}

dönüş(sayım);

Bu kodla ne arıyorsunuz?

Özellikle kapalı pozisyona değil, tüm geçmişe göre kâra bakar ve tüm geçmiş artı ise, o zaman herhangi bir senaryoda OrderProfit()>0 çıktısında alırsınız.

 
Vitaly Muzichenko :

Bu kodla ne arıyorsunuz?

Özellikle kapalı pozisyona değil, tarih boyunca kâra bakar ve tarih boyunca artı ise, o zaman herhangi bir senaryoda OrderProfit()>0 çıktısında alırsınız.


ama danışmanın çalıştığı andan itibaren bütünde değil, kapalı olanlarda nasıl görünmesini sağlar?

yakalayamıyorum.

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

 
yaaarik777 :


ama danışmanın çalıştığı andan itibaren bütünde değil, kapalı olanlarda nasıl görünmesini sağlar?

yakalayamıyorum.

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

Expert Advisor başlatma saatinden sonra kapatılan son kapatılan pozisyonu veya bu gündeki son kapatılan pozisyonu bulun ve kârını görün: OrderProfit()+OrderCommission()+OrderSwap()
 
yaaarik777 :


ama danışmanın çalıştığı andan itibaren bütünde değil, kapalı olanlarda nasıl görünmesini sağlar?

yakalayamıyorum.

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


Danışmanın çalışma anını nasıl belirlersiniz?

öyle öneriyorum;

 double TakeProfit ()
{
 datetime момент работы советника= 0 ;
 double p= 0 ;
   for ( int i= OrdersHistoryTotal ()- 1 ; i>= 0 ; i--){
     if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )){
       if ( OrderMagicNumber () == Magic){
           if ( OrderSymbol () == Symbol ()){
             if (момент работы советника< OrderCloseTime ()){
               p+= OrderProfit ()+ OrderCommission ()+ OrderSwap ();
            }
          }
        }
      }
    }
 return (p);
}
   
 
Artyom Trishkin :
Expert Advisor başlatma saatinden sonra kapatılan son kapatılan pozisyonu veya bu gündeki son kapatılan pozisyonu bulun ve kârını görün: OrderProfit()+OrderCommission()+OrderSwap()


neden danışmanın lansman zamanından sonra? tüm kapalı pozisyonları arıyor.

danışmanın başından itibaren araması gerekir, daha önce değil.

 
yaaarik777 :


neden danışmanın lansman zamanından sonra? tüm kapalı pozisyonları arıyor.

danışmanın başından itibaren araması gerekir, daha önce değil.


Biraz düşünürseniz, o zaman "başlangıçtan ve öteden", danışmanın lansman zamanından tam olarak sonra olacaktır;)

Kulaklar arası organı kullanmak için tembel olmayın.

 

Merhaba.

Dosyadaki verileri bir histogram biçiminde görüntülemek için lütfen yardım edin.

"file.txt" dosyasında bir tarih belirli bir sayıya karşılık gelir.

Bir dosyadan veri alıyorum ve yazdırıyorum,