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

 
rigonich :

Bu işlev yerel değişkenler kullanır, bu nedenle onu ayrı bir işlev olarak iki kez çalıştırmanız, aynı işlevde arka arkaya iki döngü yapmanız veya A'yı global bir değişken olarak bildirmeniz gerekmez. Sigara için kaçarım ama şimdilik bir dene, işe yaramazsa kapıyı çal, döndüğümde çözeriz.


aşağıdakileri ekleyene kadar çalıştı

if (OrderSelect( (LastClosetPoz (),SELECT_BY_TICKET)==true)) Print(" Kaybı durdur ", OrderStopLoss());

yemin eder

')' - yanlış parametre sayımı G:\Program_Files_2\MT4-demo\uzmanlar\000.mq4 (57, 60)

Neye ihtiyacı olduğunu anlayamıyorum.

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

ANLAMAK

==true öğesini kaldırmanız gerekir....

bu garip, çünkü ders kitabı örneklerinde hep böyle yazılır ...

ve durağın değerini 4. haneye YUVARLADI...

 
lottamer :


ORADA!!!! küçük bir hata oldu... Ticket değil, LastClosetPoz() ve Sec_LastClosetPoz()'u yazdırmak gerekiyordu.

Benim versiyonumun en zarif olmadığına eminim... ama işe yarıyor... Ama iki döngüyü bir fonksiyona nasıl ekleyeceğim... Bilmiyorum... Denedim... Hatalar vardı. .. canı cehenneme! (eğer senin için zor değilse göster - benim için yararlı olacak, değilse - peki, tamam...) yine de teşekkürler.

Ancak, 35. kapalı anlaşmanın biletini bulmam gerekirse ... yaklaşımımla sorun yaşayacağımı hissediyorum :)))) hahahh

neyse ki, bu henüz ufukta bile öngörülmedi ... maksimum 3 ...



int Bilet1, Bilet2;
//+------------------------------------------- --------------------+
int fLastClosetPos()
{
int Tot=OrdersHistoryTotal(),A,i;Ticket1=-1;Ticket2=-1;datetime time=0;
if(top>0)
{
for(i=0;i<OrdersHistoryTotal();i++)
{
if( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)==true)
{
if(OrderSymbol()==Symbol())
{
if(OrderCloseTime()>zaman)
{
time=OrderCloseTime();Ticket1=OrderTicket();
}
}
}
yoksa devam;
}
}
Tot=OrdersHistoryTotal();A=Ticket1;time=0;
if(top>0)
{
for(i=0;i<OrdersHistoryTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
{
if(OrderTicket()==A)devam et;
if(OrderSymbol()==Symbol())
{
if(OrderCloseTime()>zaman)
{
time=OrderCloseTime();Ticket2=OrderTicket();
}
}
}
yoksa devam;
}
}
dönüş(0);
}
//+------------------------------------------- --------------------+
PS Ve 35. kapalı anlaşmayı belirlemek için iç içe bir döngü (yani döngü içinde bir döngü) kullanmanız gerekir.
 
rigonich :


int Bilet1, Bilet2;
//+------------------------------------------- --------------------+
int fLastClosetPos()
{
int Tot=OrdersHistoryTotal(),A,i;Ticket1=-1;Ticket2=-1;datetime time=0;
if(top>0)
{
for(i=0;i<OrdersHistoryTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
{
if(OrderSymbol()==Symbol())
{
if(OrderCloseTime()>zaman)
{
time=OrderCloseTime();Ticket1=OrderTicket();
}
}
}
yoksa devam;
}
}
Tot=OrdersHistoryTotal();A=Ticket1;time=0;
if(top>0)
{
for(i=0;i<OrdersHistoryTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
{
if(OrderTicket()==A)devam et;
if(OrderSymbol()==Symbol())
{
if(OrderCloseTime()>zaman)
{
time=OrderCloseTime();Ticket2=OrderTicket();
}
}
}
yoksa devam;
}
}
dönüş(0);
}
//+------------------------------------------- --------------------+


sıfır basıyor... çalışmıyor... Artık kazmayacağım, çünkü döngülerin basitçe birbiri ardına yerleştirildiği açık - hacim açıkça azalmadı ..... ve zaten bir çalışan sürüm. ayrıca, ilk seçenekte - siparişleri karşılaştırabilirim... ama burada ikincisinin nerede olduğunu bile göremiyorum.. ve birincisi sıfıra eşit..

Beyni AÇIKÇA geliştiren bazı numaralardan sonra, bu kod da işe yaradı! :)) Teşekkür ederim

 
lottamer :


aşağıdakileri ekleyene kadar çalıştı

if ( Print("Zararı durdur", OrderStopLoss()); ) Print("Zararı durdur", OrderStopLoss());

yemin eder

')' - yanlış parametre sayımı G:\Program_Files_2\MT4-demo\uzmanlar\000.mq4 (57, 60)

Neye ihtiyacı olduğunu anlayamıyorum.


Yine 45, bu formda OrderSelect (LastClosetPoz (),SELECT_BY_TICKET) varsayılan olarak bekleyen ve açık emirler arasından seçim yapar ancak bu emir yoktur. OrderSelect (LastClosetPoz (),SELECT_BY_TICKET, MODE_HISTORY ) koyun.
 
lottamer :


sıfır basıyor... çalışmıyor... Artık kazmayacağım, çünkü döngülerin basitçe birbirinin altına yerleştirildiği açık - hacim açıkça azalmadı ..... ve zaten bir çalışan sürüm. ayrıca, ilk seçenekte - siparişleri karşılaştırabilirim... ama burada ikincisinin nerede olduğunu bile göremiyorum.. ve birincisi sıfıra eşit..

Beyni AÇIKÇA geliştiren bazı numaralardan sonra, bu kod da işe yaradı! :)) Teşekkür ederim


Fonksiyonu çağırdıktan sonra Ticket1 ve Ticket2 değişkenlerini yazdırmanız yeterlidir.
 

rigonik

söyle lütfen, hangi dosyada glob yazıyor. değişkenler? Böylece başka bir terminale hızlı bir şekilde aktarabilirsiniz.

 
rigonich :

Yine 45, bu formda OrderSelect(LastClosetPoz (),SELECT_BY_TICKET) varsayılan olarak bekleyen ve açık emirler arasından seçim yapar ancak bu emir orada değildir. OrderSelect (LastClosetPoz (),SELECT_BY_TICKET, MODE_HISTORY ) koyun.


hayır....düşük...MODS..yalnızca SELECT_BY_POS ile çalışır. Ve biletin kendisi! o kesinlikle bireyseldir, bu yüzden nerede olduğunu belirtmenize bile gerek yoktur.

(Cevabı orada okuyun.. Çözümü bitiriyordum)

------- Parametreler:

dizin - İkinci parametreye bağlı olarak sipariş endeksi veya sipariş bileti.
seçme - Bayrakların seçilmesi. Aşağıdaki değerlerden herhangi biri olabilir:
SELECT_BY_POS - sipariş havuzundaki dizin,
SELECT_BY_TICKET - dizin, sipariş biletidir.
havuz - Opsiyonel sipariş havuzu indeksi. Seçilen parametre SELECT_BY_POS olduğunda kullanılır. Aşağıdaki değerlerden herhangi biri olabilir:
MODE_TRADES (varsayılan)- işlem havuzundan seçilen emir (açılan ve bekleyen emirler),
MODE_HISTORY - geçmiş havuzundan seçilen sipariş (kapalı ve iptal edilen sipariş ).
 
lottamer :


hayır....düşük...MODS..yalnızca SELECT_BY_POS ile çalışır. Ve biletin kendisi! o kesinlikle bireyseldir, bu yüzden nerede olduğunu belirtmenize bile gerek yoktur.

------- Parametreler:

dizin - İkinci parametreye bağlı olarak sipariş endeksi veya sipariş bileti.
seçme - Bayrakların seçilmesi. Aşağıdaki değerlerden herhangi biri olabilir:
SELECT_BY_POS - sipariş havuzundaki dizin,
SELECT_BY_TICKET - dizin, sipariş biletidir.
havuz - Opsiyonel sipariş havuzu indeksi. Seçilen parametre SELECT_BY_POS olduğunda kullanılır. Aşağıdaki değerlerden herhangi biri olabilir:
MODE_TRADES (varsayılan)- işlem havuzundan seçilen emir (açılan ve bekleyen emirler),
MODE_HISTORY - geçmiş havuzundan seçilen sipariş (kapalı ve iptal edilen sipariş).


Üzgünüm, bildirdim, haklısın, sadece senin satırında if ( Print(" Stoploss ", OrderStopLoss()); ) Print("Stoploss", OrderStopLoss()); koşul yoktur, ancak bunun yerine bir operatör eklenir.
 
Desead :

Programcı değilim ama bazen en basit şeyleri kendim yazarım. Herhangi bir dilde basit bir robot yazabilirsiniz ve bu hiç sorun değil. Ve bazı fonksiyonları dll şeklinde düzenlemek ve sonra onları µl'den çağırmak istemedim, metatrader'ı çağırmadan tüm robotu kendi arayüzü ile yazmak istedim. Neyse ki, şu anda bunun çok fazla zorlanmadan yapılabileceği birçok farklı görsel dil bulduk.


Apaçık. MT tesliminde, dll oluşturmak için bir proje olarak tasarlanmış, C\C++ dilinde dll yazma örnekleri vardır.

Dizin: Directory_where_MT_is_located\experts\samples. Alın ve ihtiyaçlarınıza göre düzenleyin. Bunu anlamak için derin bir C++ bilgisine ihtiyacınız yok. C'nin temellerini ve sözdizimini bilmek yeterlidir.

Lütfen unutmayın: proje bir .def dosyası ile olmalıdır, aksi takdirde dll'yi dahil etmeyin. Bir örnekte böyle bir proje gerekli.
 
xant:

rigonich

подскажите пожалуйста, в какой файл записываются глоб. переменные? Чтобы можно было быстро перебрасывать на другой терминал. 

Bilmiyorum araştırdım bulamadım ama muhtemelen servis --> global değişkenleri terminalde açıp oradan kopyalayıp deneyebilirsiniz.

Ancak genel olarak, bu, birkaç terminalin çalışmasının senkronizasyonundan kaynaklanmaktadır, bu yönde arama yapmaya çalışın, bana bu sitede veya makalelerde veya kod tabanında benzer bir şey gördüm gibi görünüyor.

Neden: