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

 
Wanderer1000 :
MetaTrader 4 yüklendi, bir demo hesabı açıldı. Emirleri açıp kapamaya çalıştım. Şimdi, "eski emri kapatıp yeni bir tane açmak için 2 mumluk bir fark gerekir" gibi bilgileri kullanarak, fiyat yükseldiğinde bir satış emri ve fiyat düştüğünde bir satın alma emrini terminalin kendisinin başlatmasını nasıl sağlayabilirim?
Bir danışman yazın , muhtemelen)
 
nadya :

iyi akşamlar. Soru, işlemin bir kısmını kapatırken, danışman olduğu gibi, yeni bir biletle yeni bir işlem açar. Ve yeni düzenin büyüsü aynı mı kalıyor?


Evet
 

TÜM İŞLEMLERİN NEDEN SADECE SATIN ALMA ÜZERİNDE YAPILDIĞINI BİRİ AÇIKLAYABİLİR Mİ??? SATIŞ'ta tek bir işlem değil, SAT'ta if()'den önceki bayrak göstergesi bir nedenden dolayı her zaman 1'e eşittir, NEDEN ???? ayarlarda uzun ve kısa.

VE AYRICA TÜM DANIŞMANLARIMDA DANIŞMAN NEDEN GİRİLMESİ MÜMKÜN OLDUĞU GÖREVLERİ GEÇİYOR? İÇERİDE VE İÇERİDE DEĞİL!

İşte kod ( değişkenlerin bildirimi kesildi):
double upfr,dnfr=0.0;//son fraktalların seviyeleri
int bayrak=0;

int start() // fraktal bozulduğunda açılır ve s mumlarından sonra kapanır
{
if(iFractals(Symbol(),PERIOD_H1,MODE_UPPER,4)!=0)
{
upfr=iFractals(Symbol(),PERIOD_H1,MODE_UPPER,4);
}
if(iFractals(Symbol(),PERIOD_H1,MODE_UPPER,4)==0)
{
upfr=0;
}
if(iFractals(Symbol(),PERIOD_H1,MODE_LOWER,4)!=0)
{
dnfr=iFractals(Symbol(),PERIOD_H1,MODE_LOWER,4);
}
if(iFractals(Symbol(),PERIOD_H1,MODE_LOWER,4)==0)
{
dnfr=0;
}
// SİPARİŞLERİ KIRARAK AÇMAK
H=iYüksek(Symbol(),PERIOD_H1,1);
L=iLow(Symbol(),PERIOD_H1,1);
tOpen=iTime(Symbol(),PERIOD_H1,1);
if(H>upfr && flag==0) //yukarı fraktal ve yukarı fraktal seviyesi aşılırsa
{
tKapat=tAç+s*süre*60;
OrderSend(Symbol(),OP_BUY,lot,Sor,slippage,NULL,NULL);
bayrak=1;
}
if(L<dnfr)
Print(L," -L dnfr- ",dnfr," flag- ",bayrak);
if(L<dnfr && flag==0)//fraktal aşağıdaysa ve fraktal seviye düşürülürse
{
tKapat=tAç+s*süre*60;
OrderSend(Symbol(),OP_SELL,lot,Teklif,slippage,NULL,NULL);
bayrak=1;
}
//SÜRE GEÇTİKTEN SONRA SİPARİŞLERİ KAPATMAK
if(Time[1]>=tClose && flag==1)// planlanan zaman geçtiyse
{
Print("KAPATMA İŞLEVİ");
VeyaKapat();
bayrak=0;
upfr=0;
dnfr=0;
}
dönüş(0);
}

Dosyalar:
 

Bununla karşı karşıya...

Bir danışmanı silerken, bekleyen emirleri de silmelidir.

iki seçenek var

1. Basitçe her şeyi kaldırır..

int deinit()
{
int i;
//----
for(i=OrdersTotal()-1; i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if (OrderType() == OP_BUYSTOP)
{
OrderDelete(OrderTicket());
}
if (OrderType() == OP_SELLSTOP)
{
OrderDelete(OrderTicket());
}
}
}


//----
return(0);
}

2. Seçici olarak...

int deinit()
{

OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES);
OrderDelete(ticket1);
OrderSelect(ticket2,SELECT_BY_TICKET,MODE_TRADES);
OrderDelete(ticket2);

return(0);
}

Öyleyse, demodaki püf noktası - her iki durumda da bir patlama ile çalışıyor .. Ama gerçek hayatta ... bir nedenden dolayı yalnızca bekleyen bir parti kaldırılıyor ... Asıl soru, nedenini kim bilebilir?

 
DOCTORS :

Bununla karşı karşıya...

Bir danışmanı silerken, bekleyen emirleri de silmelidir.

iki seçenek var

1. Basitçe her şeyi kaldırır..

int deinit()
{
int i;
//----
for(i=OrdersTotal()-1; i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if (OrderType() == OP_BUYSTOP)
{
OrderDelete(OrderTicket());
}
if (OrderType() == OP_SELLSTOP)
{
OrderDelete(OrderTicket());
}
}
}


//----
return(0);
}

2. Seçici olarak...

int deinit()
{

OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES);
OrderDelete(ticket1);
OrderSelect(ticket2,SELECT_BY_TICKET,MODE_TRADES);
OrderDelete(ticket2);

return(0);
}

Öyleyse, demodaki püf noktası - her iki durumda da bir patlama ile çalışıyor .. Ama gerçek hayatta ... bir nedenden dolayı yalnızca bekleyen bir parti kaldırılıyor ... Asıl soru, nedenini kim bilebilir?

IMHO "başarısız":

deinit() özel işlevinin yürütme süresi 2,5 saniyelik bir süre ile sınırlıdır. Özel deinit() işlevine gömülü kod belirtilen süreden daha uzun süre çalıştırılırsa, istemci terminali özel deinit() işlevinin ve bir bütün olarak programın çalışmasını zorla sonlandıracaktır.

 
ilunga :

IMHO "başarısız":

deinit() özel işlevinin yürütme süresi 2,5 saniyelik bir süre ile sınırlıdır. Özel deinit() işlevine gömülü kod belirtilen süreden daha uzun süre çalıştırılırsa, istemci terminali özel deinit() işlevinin ve bir bütün olarak programın çalışmasını zorla sonlandıracaktır.

:(

Onlar. umut yok? Kabaca söylemek gerekirse, başlangıçta bekleyen hesapları kapatmak için bir komut dosyası başlatıyoruz..ve sonra baykuşu kapatıyoruz... Harika otomatik ticaret...

Ve bir soru daha - https://forum.mql4.com/ru/42300/page588 bekleyen asistan yüklendi

Daha sonra zaman dilimi değiştirilirken bazı sebeplerden dolayı siparişler siliniyor...

 
DOCTORS :

:(

Onlar. umut yok? Kabaca söylemek gerekirse, başlangıçta bekleyen hesapları kapatmak için bir komut dosyası başlatıyoruz..ve sonra baykuşu kapatıyoruz... Harika otomatik ticaret...

Ve bir soru daha - yüklenen asistan ertelendi https://forum.mql4.com/en/42300/page588

Daha sonra zaman dilimi değiştirilirken bazı sebeplerden dolayı siparişler siliniyor...

ya bir komut dosyası ya da başka bir şekilde danışmana işi tamamlaması için bir komut verin (örneğin, bir global değişken aracılığıyla)

zaman çerçevesi değişikliği = EA'nın yeniden yüklenmesi

 
ilunga :

ya bir komut dosyası ya da başka bir şekilde danışmana işi tamamlaması için bir komut verin (örneğin, global bir değişken aracılığıyla)

zaman çerçevesi değişikliği = EA'nın yeniden yüklenmesi

Değişken işler - çok teşekkür ederim!
Hmm .. zaman çerçevesi değişikliğini atlamanın bir yolu yok mu?
 
Forum kullanıcıları, lütfen siparişlerin değiştirilmesine yardımcı olun
 
Böyle bir soru: Görsel test modunda, gösterge çizgileri yalnızca testin sonunda çizilir, bu herkes için geçerli mi yoksa yanlış bir şey mi yapıyorum?