MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 239
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
Yardımınız için teşekkürler, ancak gerçek ticarette fiyatı nasıl alacağınız konusunda hiçbir fark yok mu? sonuçta, hem göstergeyi hem de danışmanı grafiğe atmanız gerekecek mi?
Gerçek olduğunda veri alabileceksiniz. Şans eseri gösterge çizgilerini silmezseniz ...
Gerçek olduğunda veri alabileceksiniz. Gösterge çizgilerini yanlışlıkla kaldırmazsanız...
Tx, başka bir sorum var. harika bir danışman olduğu ortaya çıktı. Ama bunu yapmanız gerekiyor.Genellikle çizgiyi geçtiğinde bu yönde ek bir emir açılır ve ardından kârla kapatılır.Karla kapattıktan sonra Ek emrin bir daha açılmadığından nasıl emin olunur? gösterge çizgisi güncellenene kadar?
Tünaydın! şu kodla ilgili biraz yardıma ihtiyacınız var:
11112222.txt dosyası 1 içeriyorsa SATIN AL'ı açar;
11112222.txt dosyasında -1 yazıyorsa SATIŞ açılır;
11112222.txt dosyası 0 içeriyorsa tüm siparişleri kapatır;
Yalnızca üç girişin olabileceği 11112222.txt dosyası verilmiştir: 1, -1 veya 0
nedense 11112222.txt dosyasında 0'da SATIN AL emri açılıyor ama emir kapatma kodu çalışmalı, hatanın ne olduğunu anlayamıyorum.
bu nedenle, danışman çalışırken bir sorun var, 11112222.txt dosyasını açmak neredeyse her zaman imkansız - dosyanın başka bir uygulama tarafından işgal edildiğini söylüyor, bu sorunu çözmek için her yeri dürttüm "FileClose(handle2); // bir metin dosyasını kapatma", ancak bu yardımcı olmuyor, ancak danışman 11112222.txt dosyasını açtıktan sonra içeriğini 1, -1 veya 0 için kontrol edin, ardından bu dosya periyodik olarak kullanıldığından hemen kapatın 1, -1 veya 0 yazmak için başka bir program tarafından.
int handle2 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения
if(handle2>0) // если в файле больше 0, то есть 1, то открывать BUY
{
Print(FileReadString(handle2));
FileClose(handle2); // закрытие текстового файла
//ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ
if(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер на покупку
{
OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0); // первым указывается ЛОСЬ, вторым ПРОФИТ
FileClose(handle2); // закрытие текстового файла
}
else
Print("NE USPESHNO!!!");
FileClose(handle2); // закрытие текстового файла
}
//=================================конец кода BUY=========================================
//=================================SELL=========================================
int handle3 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения
if(handle3<0)//если в текстовом файле меньше 0, то есть -1, то открывать SELL
{
Print(FileReadString(handle3));
FileClose(handle3); // закрытие текстового файла
if(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер на продажу
{
OrderSend(Symbol(), OP_SELL, 0.01, Bid, 3, 0, 0); // первым указывается ЛОСЬ, вторым ПРОФИТ
FileClose(handle3); // закрытие текстового файла
}
else
Print("NE USPESHNO!!!");
FileClose(handle3); // закрытие текстового файла
}
//=================================конец кода SELL=========================================
//=================================ЗАКРЫТИЕ ВСЕХ ОРДЕРОВ=========================================
int handle4 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения
if(handle4=0)//если в текстовом файле равно 0, то закрыть все ордера
{
Print(FileReadString(handle4));
FileClose(handle4); // закрытие текстового файла
//-----------------код закрывает все ордера--------------------
bool result;
int error;
while (OrdersTotal()>0)
{
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{ if(OrderType()==OP_BUY) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);
if(OrderType()==OP_SELL) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);
if (OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)
OrderDelete(OrderTicket());
if(result!=TRUE) { error=GetLastError();
Print("LastError = ",error, " ",Symbol()); }
else error=0; }
else Print( "Error when order select ", GetLastError());
FileClose(handle4); // закрытие текстового файла
}
//------------конец кода закрывающего ордера------------------
FileClose(handle4); // закрытие текстового файла
}
//=================================конец кода ЗАКРЫТИЕ ВСЕХ ОРДЕРОВ=========================================
Tünaydın! şu kodla ilgili biraz yardıma ihtiyacınız var:
11112222.txt dosyası 1 içeriyorsa SATIN AL'ı açar;
11112222.txt dosyasında -1 yazıyorsa SATIŞ açılır;
11112222.txt dosyası 0 içeriyorsa tüm siparişleri kapatır;
Yalnızca üç girişin olabileceği 11112222.txt dosyası verilmiştir: 1, -1 veya 0
nedense 11112222.txt dosyasında 0'da SATIN AL emri açılıyor ama emir kapatma kodu çalışmalı, hatanın ne olduğunu anlayamıyorum.
bu nedenle, danışman çalışırken bir sorun var, 11112222.txt dosyasını açmak neredeyse her zaman imkansız - dosyanın başka bir uygulama tarafından işgal edildiğini söylüyor, bu sorunu çözmek için her yeri dürttüm "FileClose(handle2); // bir metin dosyasını kapatma", ancak bu yardımcı olmuyor, ancak danışman 11112222.txt dosyasını açtıktan sonra içeriğini 1, -1 veya 0 için kontrol edin, ardından başka bir program bu dosyayı kullandığından hemen kapatın 1, -1 veya 0 yazmak için her saniye.
Çünkü dosya tanıtıcısı dosyanın içeriği değildir.
İlk önce dosyanın içeriğini okumanız ve ancak daha sonra koşulu ayarlamanız gerekir. Ve tam tersi, tutamaçta bir koşul var, ardından dosyayı okuyor ve kapatıyorsunuz.
Çünkü dosya tanıtıcısı dosyanın içeriği değildir.
İlk önce dosyanın içeriğini okumanız ve ancak daha sonra koşulu ayarlamanız gerekir. Ve tam tersi, tutamaçta bir koşul var, ardından dosyayı okuyor ve kapatıyorsunuz.
1) - Bu bölüm, 11112222.txt dosyasını buradan veri okumak için açar:
//=================================BUY=========================================
int handle2 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения
2) - Ardından, handle2>0 ise koşul gelir
if(handle2>0) // если в файле больше 0, то есть 1, то открывать BUY
{
3) - İşte anlamadığım bu kısım:
Print(FileReadString(handle2));
4) - Bu kısım dosyayı kapatır:
FileClose(handle2); // закрытие текстового файла
5) - Handle2>0 koşulu karşılandığından, yani 11112222.txt dosyası 1 içerdiğinden, bir satın alma emri açılır:
//ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ
if(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер на покупку
{
OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0); // первым указывается ЛОСЬ, вторым ПРОФИТ
FileClose(handle2); // закрытие текстового файла
}
else
Print("NE USPESHNO!!!");
FileClose(handle2); // закрытие текстового файла
}
//=================================конец кода BUY=========================================
Selamlar, siparişleri kapatmak için bir komut dosyası yazmaya çalışıyorum.
Dönüşümlü olarak birkaç sat ve al emri açarsanız ve bu emirle kapatmaya çalışırsanız, sadece birkaçı kapanır, geri kalanı 129 (Yanlış fiyat) hatası verir.
Örneğin, bir hata durumunda duraklama ile sipariş sayısı için 10 deneme * yapan bir komut dosyası oluşturmaya çalıştım.
Kural olarak, aynı hatanın 129 verildiği oldukça fazla sayıda girişimle göreviyle başa çıkıyor. Ama o denerken, birçok denemeyle, siparişleri kapatmak için manuel olarak kapatılabilir ve bu hataya neden olmaz, kapatılır.
Neyi yanlış yapıyorum?
Selamlar, siparişleri kapatmak için bir komut dosyası yazmaya çalışıyorum.
Dönüşümlü olarak birkaç sat ve al emri açarsanız ve bu emirle kapatmaya çalışırsanız, sadece birkaçı kapanır, geri kalanı 129 (Yanlış fiyat) hatası verir.
Örneğin, bir hata durumunda duraklama ile sipariş sayısı için 10 deneme * yapan bir komut dosyası oluşturmaya çalıştım.
Kural olarak, aynı hatanın 129 verildiği oldukça fazla sayıda girişimle göreviyle başa çıkıyor. Ama o denerken, birçok denemeyle, siparişleri kapatmak için manuel olarak kapatılabilir ve bu hataya neden olmaz, kapatılır.
Neyi yanlış yapıyorum?
Genel olarak, yazdıklarınızın gerçek bir hesapta işlem görmesine izin verilmemelidir, bu sadece test edenler içindir.
Genel olarak, yazdıklarınızın gerçek bir hesapta işlem görmesine izin verilmemelidir, bu sadece test edenler içindir.
Yardımcı oldu, teşekkürler.
Genel olarak, yazdıklarınızın gerçek bir hesapta işlem görmesine izin verilmemelidir, bu sadece test edenler içindir.
Neden "ticarete izin verilemiyor .." açıklayabilir misiniz?
Neden "ticarete izin verilemiyor .." açıklayabilir misiniz?
Hata denetimi yoktur ve aniden bir kapanma olursa ve sunucu kritik bir hata verirse, danışman sunucuyu zorlamaya devam eder ve bu, sonraki otomatik ticaret için DC'den bir yasak gibi kokar.