Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 1069

 
CloseAllBuy() tek bir yerde çağrılır: OnTick() işlevinde if(Bid>buycloseprice) CloseAllBuy(); Ve bu durum, EA yeniden açıldığında ve kapanma döneminde de gelmedi, ancak CloseAllBuy() işlevi, Expert Advisor yeniden açıldığında hala çalışıyordu.
 
rapid_minus :
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.
Bir kod olacak mı? buycloseprice kim, nereden geldi, nasıl başlatıldı, nerede değişti, buradan belli değil...
 
İşte bir kod parçası:
 
Nedense SRC'nin takılı olup olmadığını göremiyorum. Değilse, lütfen bana bildirin, tekrar edeceğim.
 
Soru: Lütfen bana bu durumda global değişkenin nasıl özel olarak uygulanacağını söyleyin. hiç düşünmüyorum. Teşekkür ederim.
 
rapid_minus :
İşte bir kod parçası:

göremiyorum

hızlı_eksi :
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.

 
Şu metinle tekrar ediyorum: RefreshRates();
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ı();
}
}
}
 
O zaman koddaki hatam nerede?
 
rapid_minus :
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 ?

 
Sanırım anladım - hata, global buycloseprice'ı belirleyip hemen ona 0.0 değerini vermem. Ve daha sonra bir pozisyon açarken belirli bir değer alsa da terminal kapatıldığında bu değer kaybolur ve açıldığında orijinal değerini, yani. 0.0 ve buna göre if(Bid>buycloseprice) koşulu gözlemlenir ve kapatma komutu gönderilir. Ancak bu değişkeni global terminale nasıl aktaracağımı anlamıyorum.