[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 5. - sayfa 203

 
Merhaba, lütfen bana komutu (varsa), rastgele bir sayının 0 veya 1 seçimini söyleyin, şimdiden teşekkürler
 
hoz :


Pekala, yeni başlayanlar için, gerektiğinde parantez takmaya alışın. Bunun gibi bir şey:

Genel olarak, sabit bir değil, bir zaman aralığınız olmalıdır. değerler. Mantığınız hiç doğru değil. 1 saat VEYA 3 saat değil, 1 saatten 3 saate!!!
Teşekkür ederim hatayı anladım.
 
stater :
Merhaba, lütfen bana komutu (varsa), rastgele bir sayının 0 veya 1 seçimini söyleyin, şimdiden teşekkürler
int x =MathRand() % 2;
 

Expert Advisor test edilirken kod yürütme hataları ortaya çıktı:
- for(i=0;i<OrdersTotal();i++) döngü operatörünün yürütülmesi bir sonraki onay işaretiyle kesintiye uğrar (aşağıda Kalın yazı tipiyle vurgulanmıştır),
- satın alma siparişleri rastgele seçilir ve kapatılır.

Lütfen bana nedenini nasıl bulacağımı ve düzelteceğimi söyler misiniz?
Programın kodu ve testçi günlüğünden alınan rapor verilir.

Program kodu.

//+------------------------------------------- --------------------+
//| Poligon1.mq4 |
//| Telif hakkı 2012, MetaQuotes Software Corp. |
//|Döngü operatörünün test edilmesi. |
//+------------------------------------------- --------------------+
#property telif hakkı "Telif hakkı 2012, MetaQuotes Software Corp."
#özellik bağlantısı ""
//+------------------------------------------- --------------------+
//|Bildirilen değişkenler |
//+------------------------------------------- --------------------+
int Mn=357;//Sihirli sayı
int i;//Yineleme sayacı göstergesi
çift PriTP;//TP serisi
int Tick;//Tick sayacı
//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int init()
{
//----Siparişleri ayarlama
OrderSend(Symbol(),OP_BUY,0.5,Ask,0,Bid-350*Puan,Ask+350*Puan,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,1,Ask,0,Bid-250*Puan,Ask+250*Puan,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,1.5,Ask,0,Bid-150*Puan,Ask+150*Puan,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,2.5,Ask,0,Bid-150*Puan,Ask+150*Puan,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,3.5,Ask,0,Bid-150*Puan,Ask+150*Puan,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUYLIMIT,1,Ask-150*Puan,0,Bid-400*Puan,
Sor+250*Nokta,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_SELLSTOP,3,Ask-300*Puan,0,Bid+150*Puan,
Ask-750*Nokta,NULL,Mn,0,CLR_NONE);//
//----
PriTP=Teklif;//PriTP
Print("Kc0:"," OrdersTotal=",OrdersTotal());//Mesaj
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| uzman sıfırlama işlevi |
//+------------------------------------------- --------------------+
int tanım()
{
//----

//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int başlangıç()
{
//----Tık sayacı
Tik++;//Tik
//---- SATIN AL emirlerini kapat
for(i=0;i<OrdersTotal();i++)//Döngü başlatma
{
Print("X1:"," Tick=",Tick," i=",i);//Mesaj
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)//siparişi seçin
{
if(OrderSymbol()==Symbol())//Symbol
{
if(OrderMagicNumber()==Mn)//Kimlik numarası
{
if(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)//Şu anda seçili olan siparişin işlem tipi
{
OrderClose(OrderTicket(),OrderLots(),Bid,0,CLR_NONE);//Pozisyonu kapat
}//Kapalı if(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)
}//Kapalı if(OrderMagicNumber()==Mn)
}//Kapalı if(OrderSymbol()==Symbol()
}//Kapalı if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
}//Kapalı for(i=0;i<OrdersTotal();i++)
//----
dönüş(0);
}

Test kullanıcısı günlüğünden girişler.

2013.03.01 12:12:57 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Kene=5 i=1
2013.03.01 12:12:57 2012.09.03 00:00 Poligon1 EURUSD,M15: Кс1: Tick =5 i=0
2013.03.01 12:12:33 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Kene=4 i=1
2013.03.01 12:12:33 2012.09.03 00:00 Poligon1 EURUSD,M15: Кс1: Tick =4 i=0
2013.03.01 12:12:09 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Kene=3 i=1
2013.03.01 12:12:09 2012.09.03 00:00 Poligon1 EURUSD,M15: #4 kapat 2.50 EURUSD 1.25773 sl: 1.25616 tp: 1.25923 1.25770 fiyattan
2013.03.01 12:12:09 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick =3 i=0
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Kene=2 i=2
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Kene=2 i=1
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kapat #2 1.25773 sl'den 1.00 EURUSD satın al: 1.25516 tp: 1.26023, 1.25768 fiyatından
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Кс1: Tick =2 i=0
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=1 i=3
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: #5 kapat 3.50 EURUSD 1.25773 sl: 1.25616 tp: 1.25923 1.25766 fiyattan
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=1 i=2
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: #3 kapat 1.50 EURUSD 1.25773 sl: 1.25616 tp: 1.25923 1.25766 fiyattan
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Кс1: Tick=1 i=1
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kapat #1 0.50 EURUSD'yi 1.25773 sl'den al: 1.25416 tp: 1.26123 1.25766'dan
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Кс1: Tick =1 i=0
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Кс0: Sipariş Toplamı=7
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: açık #7 sat stop 3.00 EURUSD 1.25473 sl: 1.25916 tp: 1.25023 tamam
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: açık #6 satın alma limiti 1.00 EURUSD, 1.25623 sl: 1.25366 tp: 1.26023 tamam
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: açık #5 1.25773 sl'den 3.50 EURUSD satın al: 1.25616 tp: 1.25923 tamam
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: açık #4 1.25773 sl'den 2.50 EURUSD satın al: 1.25616 tp: 1.25923 tamam
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: açık #3 1.25773 sl'den 1.50 EURUSD satın al: 1.25616 tp: 1.25923 tamam
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: #2 açık 1.00 EURUSD 1.25773 sl: 1.25516 tp: 1.26023 tamam
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Açık #1, 1.25773 sl'de 0.50 EURUSD satın al: 1.25416 tp: 1.26123 tamam
2013.03.01 12:11:21 Poligon1 testi başladı
2013.03.01 12:11:21 Poligon1 EURUSD,M15: başarıyla yüklendi

Samimi olarak. shurkin

 
Shurkin :

Expert Advisor test edilirken kod yürütme hataları ortaya çıktı:
- for(i=0;i<OrdersTotal();i++) döngü operatörünün yürütülmesi bir sonraki onay işaretiyle kesintiye uğrar (aşağıda Kalın yazı tipiyle vurgulanır),
- satın alma siparişleri rastgele seçilir ve kapatılır.

Samimi olarak. shurkin


1. init() işlevinde emir açamazsınız.(Test cihazında çalışmaya devam edecek, ancak demoda çalışmayacak)

2. Emirleri kapattığınızda, yaptığınız gibi tam tersini değil, sondan başa saymanız gerekir.

 
Shurkin :

Expert Advisor test edilirken kod yürütme hataları ortaya çıktı:
- for(i=0;i<OrdersTotal();i++) döngü operatörünün yürütülmesi bir sonraki onay işaretiyle kesintiye uğrar (aşağıda Kalın yazı tipiyle vurgulanır),
- satın alma siparişleri rastgele seçilir ve kapatılır.

Lütfen bana nedenini nasıl bulacağımı ve düzelteceğimi söyler misiniz?
Programın kodu ve testçi günlüğünden alınan rapor verilir.

Program kodu.

//+------------------------------------------- --------------------+
//| Poligon1.mq4 |
//| Telif hakkı 2012, MetaQuotes Software Corp. |
//|Döngü operatörünün test edilmesi. |
//+------------------------------------------- --------------------+
#property telif hakkı "Telif hakkı 2012, MetaQuotes Software Corp."
#özellik bağlantısı ""
//+------------------------------------------- --------------------+
//|Bildirilen değişkenler |
//+------------------------------------------- --------------------+
int Mn=357;//Sihirli sayı
int i;//Yineleme sayacı göstergesi
çift PriTP;//TP serisi
int Tick;//Tick sayacı
//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int init()
{
//----Siparişleri ayarlama
OrderSend(Symbol(),OP_BUY,0.5,Ask,0,Bid-350*Puan,Ask+350*Puan,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,1,Ask,0,Bid-250*Puan,Ask+250*Puan,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,1.5,Ask,0,Bid-150*Puan,Ask+150*Puan,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,2.5,Ask,0,Bid-150*Puan,Ask+150*Puan,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,3.5,Ask,0,Bid-150*Puan,Ask+150*Puan,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUYLIMIT,1,Ask-150*Puan,0,Bid-400*Puan,
Sor+250*Nokta,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_SELLSTOP,3,Ask-300*Puan,0,Bid+150*Puan,
Ask-750*Nokta,NULL,Mn,0,CLR_NONE);//
//----
PriTP=Teklif;//PriTP
Print("Kc0:"," OrdersTotal=",OrdersTotal());//Mesaj
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| uzman sıfırlama işlevi |
//+------------------------------------------- --------------------+
int tanım()
{
//----

//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int başlangıç()
{
//----Tık sayacı
Tik++;//Tik
//---- SATIN AL emirlerini kapat
for(i=0;i<OrdersTotal();i++)//Döngü başlatma
{
Print("X1:"," Tick=",Tick," i=",i);//Mesaj
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)//siparişi seçin
{
if(OrderSymbol()==Symbol())//Symbol
{
if(OrderMagicNumber()==Mn)//Kimlik numarası
{
if(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)//Şu anda seçili olan siparişin işlem tipi
{
OrderClose(OrderTicket(),OrderLots(),Bid,0,CLR_NONE);//Pozisyonu kapat
}//Kapalı if(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)
}//Kapalı if(OrderMagicNumber()==Mn)
}//Kapalı if(OrderSymbol()==Symbol()
}//Kapalı if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
}//Kapalı for(i=0;i<OrdersTotal();i++)
//----
dönüş(0);
}

Test kullanıcısı günlüğünden girişler.

2013.03.01 12:12:57 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Kene=5 i=1
2013.03.01 12:12:57 2012.09.03 00:00 Poligon1 EURUSD,M15: Кс1: Tick =5 i=0
2013.03.01 12:12:33 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Kene=4 i=1
2013.03.01 12:12:33 2012.09.03 00:00 Poligon1 EURUSD,M15: Кс1: Tick =4 i=0
2013.03.01 12:12:09 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Kene=3 i=1
2013.03.01 12:12:09 2012.09.03 00:00 Poligon1 EURUSD,M15: #4 kapat 2.50 EURUSD 1.25773 sl: 1.25616 tp: 1.25923 1.25770 fiyattan
2013.03.01 12:12:09 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick =3 i=0
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Kene=2 i=2
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Kene=2 i=1
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kapat #2 1.25773 sl'den 1.00 EURUSD satın al: 1.25516 tp: 1.26023, 1.25768 fiyatından
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Кс1: Tick =2 i=0
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=1 i=3
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: #5 kapat 3.50 EURUSD 1.25773 sl: 1.25616 tp: 1.25923 1.25766 fiyattan
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=1 i=2
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kapat #3 1.50 EURUSD'yi 1.25773 sl'den satın alın: 1.25616 tp: 1.25923, 1.25766'dan
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Кс1: Tick=1 i=1
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kapat #1 1.25773 sl'den 0.50 EURUSD satın al: 1.25416 tp: 1.26123 1.25766 fiyattan
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Кс1: Tick =1 i=0
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Кс0: Sipariş Toplamı=7
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: açık #7 sat stop 3.00 EURUSD 1.25473 sl: 1.25916 tp: 1.25023 tamam
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: açık #6 satın alma limiti 1.00 EURUSD, 1.25623 sl: 1.25366 tp: 1.26023 tamam
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: açık #5 1.25773 sl'den 3.50 EURUSD satın al: 1.25616 tp: 1.25923 tamam
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: açık #4 1.25773 sl'den 2.50 EURUSD satın al: 1.25616 tp: 1.25923 tamam
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: açık #3 1.25773 sl'den 1.50 EURUSD satın al: 1.25616 tp: 1.25923 tamam
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: #2 açık 1.00 EURUSD 1.25773 sl: 1.25516 tp: 1.26023 tamam
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Açık #1, 1.25773 sl'de 0.50 EURUSD satın al: 1.25416 tp: 1.26123 tamam
2013.03.01 12:11:21 Poligon1 testi başladı
2013.03.01 12:11:21 Poligon1 EURUSD,M15: başarıyla yüklendi

Samimi olarak. shurkin

Tüm ayak örtüsüne bakmadım (giriş alanının üst kısmındaki SRC düğmesini kullanarak eklemeniz gerekiyor) - tüm sayfaya yayılmış kodu karıştırmak hoş değil, ama ilk gözüme çarpan şey hemen for(i=0; i< OrdersTotal() ; i++) satırıydı . Kapatmak için bir ters döngü kullanmanız gerekir: for(i= OrdersTotal()-1 ; i >=0 ; i -- )
 
Roger :
int x =MathRand() % 2;


Ve neden başka bir sayı değil de aniden 0 veya 1 döndürsün? Sonuçta, yardıma göre MathRand () işlevi 0 ile 32767 arasında bir sözde rasgele tamsayı döndürür.
 
hoz :

Ve neden başka bir sayı değil de aniden 0 veya 1 döndürsün? Sonuçta, yardıma göre MathRand () işlevi 0 ile 32767 arasında bir sözde rasgele tamsayı döndürür.

Bu bölümün geri kalanı ! Aritmetik işlemlere ve baskınıza bakın!

Yapıştır ve dönüşümlü olarak yalnızca iki sonuç göreceksiniz:

   int x = MathRand () % 2 ;
   Print ( "x =" ,x);
 
Hepiniz hoşgeldiniz! Söyle bana, lütfen, danışmanı nasıl sakinleştireceğimi , piyasaya girme koşulları oluştuğunda, günlük dosyasına "Sipariş işe yaradı!" yazmaya başlar. ve bunu dakikada birkaç düzine kez yapar, bunun sonucunda günlük dosyası kozmik olarak devasa hale gelir. Poz kapanana kadar değil, sadece bir kez yazabilmem için nasıl yapılır, çünkü birkaç saat askıda kalabilir...
 
Allis :
Hepiniz hoşgeldiniz! Söyle bana, lütfen, danışmanı nasıl sakinleştireceğimi, piyasaya girme koşulları oluştuğunda, günlük dosyasına "Sipariş işe yaradı!" yazmaya başlar. ve bunu dakikada birkaç düzine kez yapar, bunun sonucunda günlük dosyası kozmik olarak devasa hale gelir. Poz kapanana kadar değil, sadece bir kez yazabilmem için nasıl yapılır, çünkü birkaç saat askıda kalabilir...
Merhaba Allis ! Kene ile okuma yapılmayan yerlerde baskının kaydedilmesi gerekir! Bir hata varsa çıktısını alıyorum, açılırsa açtığı dergiye yazılacak, hem de sadece bir kez!