Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 1069
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
CloseAllBuy() tek bir yerde çağrılır: OnTick() işlevinde if(Bid>buycloseprice) CloseAllBuy(); Ve bu durum, EA tekrar açıldığında ve kapanma döneminde de gelmedi ve Expert Advisor tekrar açıldığında CloseAllBuy() işlevi hala çalışıyordu.
İşte bir kod parçası:
göremiyorum
Soru: Lütfen bana bu durumda global değişkenin nasıl özel olarak uygulanacağını söyler misiniz? hiç düşünmüyorum. Teşekkür ederim.
Belgeleri okuyun Terminalin global değişkenleri , metaeditörün yardımına bakın, orada daha hızlı güncellenir.
Alternatif olarak, önemli değişkenlerin ayarlarını ve değerlerini bir dosyaya dökebilir, ardından yüklerken oradan okuyabilirsiniz.
Ve çoğu zaman tüm bunlar olmadan yapabilirsiniz, kafanızı biraz kırın ve kodda doğru mantığı yapın.
toplam=SiparişToplam();
if(toplam>0)
{
for(int i=0; i<=SiparişlerToplam(); i++)
if(OrderSelect(i,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUY && OrderMagicNumber()==sihir)
{ YenilemeOranları();
if(Teklif>alış fiyatı) CloseAllBuy();
}
if(OrderType()==OP_SELL && OrderMagicNumber()==sihir)
{ YenilemeOranları();
if(Sor<sellcloseprice) CloseAllSell();
}
}
}
if((toplam==0) || (toplam>0 && OrderSelect(1,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()!=Symbol()))
{
Comment(" Açık pozisyon yok");
if(koşul && timeBar!=iTime(Symbol(),Period(),1))
{
Print("BY için Kriter-1 çıktı");
int poz_1 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
uyku(1000);
Yeniler();
int poz_2 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
uyku(1000);
Yeniler();
int poz_3 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
uyku(1000);
Yeniler();
int poz_4 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
uyku(1000);
Yeniler();
int poz_5 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
timeBar=iTime(Symbol(),Period(),1);
çift spread = (Sor-Teklif);
buyopentime = iTime(Symbol(),Period(),0);
buycloseprice = NormalizeDouble((iOpen(Symbol(), Period(), 0)+spread+75*Point), Digits);
Comment("Sihirli 510015 SATIN AL");
Print("KAPANIŞ FİYATI = ",satın alkapalıfiyat);
}
}
}
//+------------------------------------------- --------------------+*/
geçersiz CloseAllBuy()
{
bool fc;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==yanlış) kırılır;
if (OrderType()==OP_BUY)
{
fc=OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slip);
satın alkapat fiyat=0.0;
tc=SiparişKapatZamanı();
}
}
}
Metinde tekrar ediyorum:
buycloseprice'ın nereden geldiği, if(Bid>buycloseprice) CloseAllBuy(); koşulundan önce ona ne olduğu hala net değil. . Kodda yalnızca bunu gördüğüm için, - buycloseprice = NormalizeDouble((iOpen(Symbol(), Period(), 0)+spread+75*Point), Digits); sonrasında, ancak bu buycloseprice nerede bildirilir ve hangi değer başlatılır ?
Bu, bir satınalma emrinin tahmini kapanış fiyatıysa, o zaman mantık zaten burada bozulur, çünkü değer, çalıştıktan sonra değişkene aktarılır ve daha önce içinde ne olduğunu göstermediniz.
Şimdi biraz aritmetik, kodda böyle bir döngü var:
for(int i=0; i<=SiparişlerToplam(); i++)
Diyelim ki 5 sipariş var - 0'dan 4'e. Ve döngü 0'dan 5'e kadar sayıyor. Bu döngü doğru çalışacak mı?
Ayrıca, if(condition && timeBar!=iTime(Symbol(),Period(),1)), satırında koşul ve timeBar nereden geliyor ?