Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 801
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
anlamıyorum sorun ne?
int start()
{
bool i;
int ticket;
double Pricem;
datetime Timen;
string Symb=Symbol();
ticket=OrderSend(Symb,OP_SELL,0.1,Bid,3,Ask+4*Point,Ask-12*Point);
i=OrderSelect(0,SELECT_BY_POS);
while(true)
{
RefreshRates();
Timen=OrderCloseTime();
if(Timen>0)
{
Pricem=OrderClosePrice();
Alert(Pricem);
Alert("ордер закрылся");
Sleep(30000);
}
Sleep(10);
}
return;
}
MQL4 kullanarak tüm açık çizelgeleri kapatma sorununu çözüyorum. Farklı döviz çiftlerine ve aşağıdaki kod koduna sahip 3 açık grafik vardır:
Komut dosyası çalıştırıldığında, üç çizelgeden yalnızca biri kapanır ve işte günlükten alınan çıktılar:
Yani, bir çizelge kapatıldığında, mevcut olan bir başkası gibi görünmelidir, ancak:
1. İlk çizelgeyi kapattıktan sonra, ChartID işlevi, mevcut tablonun yerine kapalı grafiğin kimliğini döndürür.
2. ChartClose() işlevi 2. ve 3. yinelemelerde true değerini döndürür, yani zaten kapalı olan pencereyi başarıyla kapatır...
Birisi bana hatanın nerede olduğunu ve bu sorunun nasıl çözüleceğini söyleyebilir mi?
anlamıyorum sorun ne?
Bir kapanış mesajı görünmelidir. Emir açılır, durur, kapanır ve bu kadar! Hata nerede?
OrderSelect() öğesinin while döngüsü içinde olması gerektiğine inanıyorum ve ayrıca konum numarası yanlış olacaktır, çünkü kapattıktan sonra farklı olacaktır - bu durumda biletle seçim yapmak daha iyidir
MQL4 kullanarak tüm açık çizelgeleri kapatma sorununu çözüyorum. Farklı döviz çiftlerine ve aşağıdaki kod koduna sahip 3 açık grafik vardır:
Komut dosyası çalıştırıldığında, üç çizelgeden yalnızca biri kapanır ve işte günlükten alınan çıktılar:
Yani, bir çizelge kapatıldığında, mevcut olan bir başkası gibi görünmelidir, ancak:
1. İlk çizelgeyi kapattıktan sonra, ChartID işlevi, mevcut tablonun yerine kapalı grafiğin kimliğini döndürür.
2. ChartClose() işlevi 2. ve 3. yinelemelerde true değerini döndürür, yani zaten kapalı olan pencereyi başarıyla kapatır...
Birisi bana hatanın nerede olduğunu ve bu sorunun nasıl çözüleceğini söyleyebilir mi?
pako , bazen çalışıyor, bazen çalışmıyor, nedenini anlamıyorum... hata veriyor:
2014.12.11 17:52:12.456 'C:\..................ex4' içinde 0x09295000 olarak okunan erişim ihlali
Belki de senaryonun atıldığı tabloyu kapatmaya çalıştığı için?
Komut dosyasını soldaki ilk çizelgeye koyarsanız PS düzgün çalışır. Ve eğer başka bir şey varsa, o zaman bir hata oluşur
pako , bazen çalışıyor, bazen çalışmıyor, nedenini anlamıyorum... hata veriyor:
2014.12.11 17:52:12.456 'C:\..................ex4' içinde 0x09295000 olarak okunan erişim ihlali
Belki de senaryonun atıldığı tabloyu kapatmaya çalıştığı için?
Komut dosyasını soldaki ilk çizelgeye koyarsanız PS düzgün çalışır. Ve eğer diğerinde ise, o zaman bir hata oluşur
beyler çözmeme yardım edin
sorun şu ki, bir emri kayıpsız olarak aktarma işlevi, onu en çift olarak ayarlarsam ve tüm açık emirlerin kayıpsız olarak aktarılmasına izin verirsem düzgün çalışmaya başlamaz
yenileri çeviriyor her şey yolunda, ancak beş karakterde sadece sıfıra çeviriyor, ancak +1 puan olması gerekiyor, ancak en ilginç şey, hemen beş karaktere ayarlarsam, o zaman iyi çalışıyor
ve yeni ve beş karakter ile ve tüm emirleri normal olarak çevirir.Böyle bir çalışmanın nedeni nedir, yürütmenin doğru olması ve uzmanın çalışması hangi pencereye attığıma bağlı olmaması için bu işlevlerde nelere dikkat edilmelidir üç veya beş karakter
Çok teşekkürler .
}
//==================================================================================================
// функция перевода ордеров стоп лоса в без убыток по всем открытым ордерам
//==================================================================================================
if(_Simbol==false)//если false то по всем ордерам открытым
{
for(int i=0;i<OrdersTotal();i++)//цикл перебора ордеров
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))//будем искать следующие
{
if(OrderType()==OP_BUY) //если тип бай
{
double bid=MarketInfo(OrderSymbol(),MODE_BID);//последний известный бид инструмента
double point=MarketInfo(OrderSymbol(),MODE_POINT);//чему равен пункт инструмента
if(OrderStopLoss()<OrderOpenPrice())//если стоп лос меньше цены открытия
{
if(bid-Dist_Perivoda*point>OrderOpenPrice())//бид-профит*пункт больше цены открытия
{//модифицируем стоп лос
bool ord_modifik=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+NormalizeDouble(Level_Zahiti*point,Digits),OrderTakeProfit(),0,clrNONE);
if(!ord_modifik)//если не получилось
Comment(GetLastError());//номер ошибки в угол
}
}
}
if(OrderType()==OP_SELL)//если тип селл
{
double ask=MarketInfo(OrderSymbol(),MODE_ASK);//последний известный аск инструмента
double point=MarketInfo(OrderSymbol(),MODE_POINT);//чему равен пункт инструмента
if(OrderStopLoss()==0||OrderStopLoss()>OrderOpenPrice())//если стоп лос больше цены открытия или равен нолю
{
if(ask+Dist_Perivoda*point<OrderOpenPrice())//аск +профит*пункт меньше цены открытия
{//модифицируем стоп лос
bool ord_modifik=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-NormalizeDouble(Level_Zahiti*point,Digits),OrderTakeProfit(),0,clrNONE);
if(!ord_modifik)//если не получилось
Comment(GetLastError());//номер ошибки в угол
}
}
}
}
}
}
Kod için teşekkür ederim, genel olarak özü açıktır, ancak bazen hala hata veriyor.
Grafik kimliklerini gösteren işlevlerle denendi. Belgelerden ChartFirst() nedir tamamen anlaşılmaz, herhangi bir şekilde yorumlayabilirsiniz - bu, soldan sırayla ilk tablo veya tüm açık olanların ilk açılışı (zamana göre) veya hatta ilki anlamına gelir. terminalde bir tanesi açıldı (şimdi açık olma olasılığı pratikte sıfırdır, bu nedenle kapatmanın bir anlamı yoktur). En son sürüme daha yatkınım, tk. Bu işlevin şu anda açık olan grafiğin kimliğini döndürdüğünü hiç görmedim.
Kod için teşekkür ederim, genel olarak özü açıktır, ancak bazen hala hata veriyor.
Grafik kimliklerini gösteren işlevlerle denendi. Belgelerden ChartFirst() nedir tamamen anlaşılmaz, herhangi bir şekilde yorumlayabilirsiniz - bu, soldan sırayla ilk tablo veya tüm açıkların ilk açıklığı (zamana göre) veya hatta ilk açık anlamına gelir. terminalde açıldı (şimdi açık olma olasılığı pratikte sıfırdır, bu nedenle kapatmanın bir anlamı yoktur). En son sürüme daha yatkınım, tk. Bu işlevin şu anda açık olan grafiğin kimliğini döndürdüğünü hiç görmedim.
Grafikİlk
İstemci terminalinin ilk grafiğinin tanımlayıcısını döndürür.
Bunun en soldaki grafik olduğunu anlıyorum