[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 595
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
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?
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);
}
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?
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.
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...
:(
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
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
Hmm .. zaman çerçevesi değişikliğini atlamanın bir yolu yok mu?