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

 
xant :

Başka bir teorik soru.

Expert Advisor'da tanımlandıklarında değişkenler sıfır değerine sahiptir. EA'nın bir hafta çalıştığını, değişkenlerin değerlerini değiştirdiğini ve şimdi EA kodunda değişiklik yapmam gerektiğini varsayalım. Değişiklikler yapıyorum, yeniden derliyorum, ticarete başlıyorum. Soru şu: global değişkenler hangi değerlere sahip olacak? Sıfır mı yoksa derlemeden öncekiler mi?


İşlevleri kullanırken, derlemeden öncekiler. değerlerini değiştirmek için terminaldeki servis sekmesine gitmeniz gerekir.Orada, global değişkenler sekmesine gidin ve değişkenlerin değerlerini ihtiyacınız olanlarla manuel olarak değiştirin (0)
 

rigonik

Harika! Sonunda ihtiyacım olanı aldım!

Hepinize ve hatta Taras'a teşekkürler! )))

 
Bir soru daha. Global değişkenlerin değerleri hangi klasörde saklanır? Terminali başka bir bilgisayara aktarıyorum dersek, her seferinde her şeyi tamamen kopyalamamak için dosyayı globalden aktarmam gerekecek. değişkenler, diğer terminalin değerlerini alması için.
 

MİSTİK!!!

Bugün nasılsın?

-------------------------------------------------- ----------------------------


pp_sell=(-(FiyatOpenLastClosePos()-PriceCloseLastPos())*100000); // EUR para birimleri için


print(pp_sell);

-------------------------------------------------- ----------------------------------

Son SATIŞ anlaşmasının karı 10 olduğundan, beklendiği gibi -10 yazdırılır

AMA BASKI VE değişkenler ARASINDA DEĞİŞMEYEN BAZI KOŞULLAR EDERSENİZ, örneğin bunun gibi

-------------------------------------------------- --------------------------


pp_sell=(-(FiyatOpenLastClosePos()-PriceCloseLastPos())*100000); // EUR para birimleri için


if ( Hour()>=10 && Hour()<20)

{

if (Stoch_1>Stoch_2) return(0);

başka {

if ( OrdersTotal()==0 )

{ PlaySound("ok.wav");

if ( GetTypeLastClosePos()==1) Yazdır (pp_sell);

}

Yazdır("___");

}

}

dönüş(0);

}

-------------------------------------------------- ----------------------------------

o zaman her şey çalışır, ancak -9 yazdırır !!!!

sır ne?

 
ve bir anlaşmayı yeniden açarken, sonuç 1pp sabit bir farkla tekrarlanır. !!!! yani, son ticaretin karı ne olursa olsun - ilk seçenek, ikincisinden 1 fazla yazdırılır!
 
lottamer :


evet bu anı çok iyi biliyorum...

lütfen tarihin son anlaşmasının bileti için bir istek içeren bir parça yazın ... ve ben mantığını ondan yakalayacağım ...



int fLastClosetPos()
{
int Tot=OrdersHistoryTotal(),Ticket=-1; tarihsaat=0;
eğer(toplam>0)
{
for(int i=0;i<OrdersHistoryTotal();i++)
{
if( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)==true)
{
if(OrderSymbol()==Symbol())
{
if(OrderCloseTime()>zaman)
{
time=OrderCloseTime();Ticket=OrderTicket();
}
}
}
yoksa devam;
}
}
bilet iadesi);
}

 
lottamer :

MİSTİK!!!

Bugün nasılsın?

-------------------------------------------------- ----------------------------


pp_sell=(-(FiyatOpenLastClosePos()-PriceCloseLastPos())*100000); // EUR para birimleri için


print(pp_sell);

-------------------------------------------------- ----------------------------------

Olması gerektiği gibi -10 yazdırır, çünkü son SATIŞ işleminin karı 10

AMA BASKI VE değişkenler ARASINDA DEĞİŞMEYEN BAZI KOŞULLAR EDERSENİZ, örneğin bunun gibi

-------------------------------------------------- --------------------------


pp_sell=(-(FiyatOpenLastClosePos()-PriceCloseLastPos())*100000); // EUR para birimleri için


if ( Hour()>=10 && Hour()<20)

{

if (Stoch_1>Stoch_2) return(0);

başka {

if (OrdersTotal()==0)

{ PlaySound("ok.wav");

if ( GetTypeLastClosePos()==1) Yazdır (pp_sell);

}

Yazdır("___");

}

}

dönüş(0);

}

-------------------------------------------------- ----------------------------------

o zaman her şey çalışır, ancak -9 yazdırır !!!!

sır ne?


Normalleştirilmemiş çiftlerle çalışıyorsunuz. bu gibi durumlarda, hesaplama hataları birikir ve sonunda önemli hale gelebilir. HİÇBİR ŞEYİ DEĞİŞTİRMEYEN KOŞULLAR girdiğinizi düşündüğünüz için aslında bilgisayarı gereksiz hesaplamalar yapmaya zorluyorsunuz ve koşullarınız   HİÇBİR ŞEY DEĞİŞMEZ .

Ve PriceOpenLastClosePos() ve PriceCloseLastPos() işlevlerinin aynı konum için değerler döndürdüğünden emin misiniz?

 
rigonich :


int fLastClosetPos()

{
int Tot=OrdersHistoryTotal(),Ticket=-1; tarihsaat=0;
if(top>0)
{
for(int i=0;i<OrdersHistoryTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
{
if(OrderSymbol()==Symbol())
{
if(OrderCloseTime()>zaman)
{
time=OrderCloseTime();Ticket=OrderTicket();
}
}
}
yoksa devam;
}
}
bilet iadesi);
}


if(OrderCloseTime()>time) ile başlayarak... o zaman neyin geldiği belli değil... ama neyse...

bir bilet yazdırır, ancak yalnızca sonuncusu. Ve sondan bir önceki ile ne yapmalı? İkinci biletin bundan nasıl çıktığını anlamıyorum?

ilk önce Print LastClosetPoz() yazıyorum

2. (i) al? OrderSelect(2,SELECT_BY_POS,MODE_HISTORY)....??

LastClosetPoz(2) yazdır ?? açıkçası bir hata, ama mantıklı olurdu :)))

Ticket=OrderTicket(); satırında OrderTicket yerine deniyorum. kapatılan anlaşmanın diğer parametrelerini koyun ( tei ayağının kapanışını açma fiyatı ) - vermez. baskı birimi

 
rigonich :

Normalleştirilmemiş çiftlerle çalışıyorsunuz. bu gibi durumlarda, hesaplama hataları birikir ve sonunda önemli hale gelebilir. HİÇBİR ŞEYİ DEĞİŞTİRMEYEN KOŞULLAR girdiğinizi düşündüğünüz için aslında bilgisayarı gereksiz hesaplamalar yapmaya zorluyorsunuz ve koşullarınız   HİÇBİR ŞEY DEĞİŞMEZ .


Bir bilgisayarın %10'luk hatayı 4 satırda toplaması şişman değil mi??? :))))))))))) (büyük sayılarda - %10'dan az)

1) kapalı düzen sabitse ve tüm parametreleri "yüzmez"se kaydedilecek ne var?

2) koşulların, çıktı parametresinin hesaplanmasıyla hiçbir ilgisi yoktu. Onlar sadece bir engeldi - içeri girmesine izin ver, içeri girmesine izin verme ...

3) ve o zaman neden sonuç bir danışmanın çalışması içinde değil de birinden diğerine kayar?

 
lottamer :


if(OrderCloseTime()>time) ile başlayarak... o zaman neyin geldiği belli değil... ama neyse...

bir bilet yazdırır, ancak yalnızca sonuncusu. Ve sondan bir önceki ile ne yapmalı? İkinci bilet takip edildiğinde bunun nasıl olduğunu anlamıyorum?

2. (i) al? OrderSelect(2,SELECT_BY_POS,MODE_HISTORY)....??

1. Lütfen tarihten son anlaşmanın bileti için bir istek içeren bir parça yazın.. --Sorunuz.

2. Sondan bir önceki olanı bulmak için, sonuncunun biletini hatırlamanız (örneğin, bir değişkende, diyelim ki A), döngüyü tekrar çalıştırmanız ve bu sırayı "atlamanız" gerekir. çizgi

if(OrderSymbol()==Symbol()) öğesini if(OrderSymbol()==Symbol()&& OrderTicket()!=A ) öğesine ekleyin veya if( Ticket()!=A)continue;

Piyasa ve bekleyen emirler birlikte dikkate alındığından ve ikincisinin bir kapanış fiyatı olmadığından, emrin endeksinin her zaman kapatıldığı ile eşleşmeyeceğini zaten açıkladım. kapalı sipariş, tüm siparişler arasında döngü yapılır ve en uzun kapanış süresine sahip sipariş aranır, yani, son kapatılanın bir indeksi olabilir, örneğin, 3 ve sondan bir önceki - 7.

Neden: