derlenmiş, herhangi bir çalışma zamanı hatası yoktu ve dosyada aşağıdaki çıktıyı üretti:
Denedim ";" ve ';' aynı sorunu aldım.
Kodum çalışıyor ve harika çalışıyor, dosya oluşturulur ve dosya her açıldığında, tüm bilgiler içine yazılır ve ardından dosya kapatılır. EA bir sipariş açana kadar her şey harika çalışıyor, ardından dosyaya hiçbir şey yazılmıyor.
WHRoeder : Birincisi bir dizge, ikincisi bir int (gerektiği gibi). Bahsedilen hata p 1. Birden çok sorun mu var?
Hata dosya tanıtıcısıdır, tanıtıcı her zaman 1'dir ve her zaman çalışır, ancak EA bir sipariş açtığında, bir sonraki onay işareti, yine 1 olmasına ve son yüzlerce onay için çalışmış olmasına rağmen Tutamaç geçersiz diyor. En son denediğimde sipariş açıldığında kolu yukarı çıkmaya başladı, 2, 3, 4 vb. oldu.
Aynı kod, neden 1 olarak kalmıyor bilmiyorum ve hala 1 olmasına rağmen hala hata veriyor.
tüm kodunuzu gönderin, böylece kendimiz deneyebilir ve düzeltmeye çalışabiliriz
sorunu kopyalayan kısa bir komut dosyası/EA oluşturun ve bunu yayınlayın
Teşekkürler RaptorUK, sorunu denemek ve düzeltmek için sorunu tam olarak kopyalayan bir EA oluşturmuştum. Temel olarak başlar, keneleri sayarak dosyaya yazdığı her tik dosyasını oluşturur. Yani dosya tik 1, tik 2 vb.
15. tıklandığında bir sipariş açılır, dosyada sipariş bilgisi görünür ve sonu (******) da görünür. Bundan sonra her tikte tik numarası (16, 17, vb.) ve siparişin durumu, yani siparişin hala açık olup olmadığı yazılmalıdır. Nedense 15'ten sonra EA dosyaya yazmıyor.
Tik 50'de siparişi kapatması gerekiyor ama bu önemli değil, önemli olan siparişi açtığında dosyaya yazmaya devam etmesi.
Windows 7 makinemde dosyalar C:\Users\{username}\AppData\Local\VirtualStore\Program Files (x86)\SIGTrader 4\experts\files konumunda oluşturulur
Appdata gizli bir klasördür.
Şimdiden teşekkürler
Kod:
//+------------------------------------------------------------------+//| log.mq4 |//| Copyright 2013, MetaQuotes Software Corp. |//| http://www.metaquotes.net |//+------------------------------------------------------------------+#property copyright "Copyright 2013, MetaQuotes Software Corp."#property link "http://www.metaquotes.net"externstring Nombre_archivo= "log" ;
externint Take_Profit= 6 ;
externint Stop_Loss= 35 ;
externint Deslizamiento= 4 ;
externdouble vol= 1 ;
int Handle, Qnt_Symb, ticket, err, abierta = 0 ;
string File_Name, larcor;
int cont= 1 ;
//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init()
{
//----
File_Name = StringConcatenate (Nombre_archivo, " - " , Symbol (), " - " , TimeToStr( TimeLocal (),TIME_DATE), " - " , TimeHour( TimeLocal ()), "." , TimeMinute( TimeLocal ()), "." , TimeSeconds( TimeLocal ()), ".txt" );
Handle= FileOpen (File_Name, FILE_CSV | FILE_WRITE , ';' ); //File openingif (Handle==- 1 ) // File opening fails
{
Alert ( "An error while opening the file. " , // Error message"May be the file is busy by the other applictiom" );
PlaySound ( "Bzrrr.wav" ); // Sound accompanimentreturn ; // Exir start()
}
FileClose ( Handle );
//----return ( 0 );
}
//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----//----return ( 0 );
}
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
//----double op, cl;
Print ( "Order open: " , abierta);
//Print("File: ", File_Name);
Handle= FileOpen (File_Name, FILE_CSV | FILE_READ | FILE_WRITE , ';' ); //File openingPrint ( "Handle: " , Handle);
if (Handle==- 1 ) // File opening fails
{
Alert ( "An error while opening the file. " , // Error message"May be the file is busy by the other applictiom" );
PlaySound ( "Bzrrr.wav" ); // Sound accompanimentreturn ; // Exir start()
}
FileSeek (Handle, 0 , SEEK_END );
Qnt_Symb= FileWrite (Handle, "**** INICIANDO TICK PAR " , Symbol (), ": " , TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " ****" );
Qnt_Symb= FileWrite (Handle, "************************************************************" );
Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , "Este es el tick num: " , cont);
if (cont == 15 ){
op = iOpen( NULL , 0 , 0 );
cl = iClose( NULL , 0 , 0 );
if (op < cl){
Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , "Estamos en LARGO, se abre compra" );
ticket = OrderSend ( Symbol (),OP_BUY,vol,Ask,Deslizamiento,Ask-Stop_Loss* Point ,Ask+Take_Profit* Point );
if (ticket == - 1 ){
err = GetLastError ();
Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , " Error No. " , err, " al tratar de abrir la orden" );
}
else {
Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , " Abierta orden " , ticket, ", hora: " , TimeToStr( TimeCurrent (),TIME_DATE|TIME_SECONDS));
abierta = 1 ;
}
}
else {
Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , "Estamos en CORTO, se abre venta" );
ticket = OrderSend ( Symbol (),OP_SELL,vol,Bid,Deslizamiento,Bid+Stop_Loss* Point ,Bid-Take_Profit* Point );
if (ticket == - 1 ){
err = GetLastError ();
Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , " Error No. " , err, " al tratar de abrir la orden" );
}
else {
Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , " Abierta orden " , ticket, ", hora: " , TimeToStr( TimeCurrent (),TIME_DATE|TIME_SECONDS));
abierta = 1 ;
}
}
}
if ((cont > 15 ) && (cont < 50 )){
if (ticket != - 1 ){
if ( OrderSelect (ticket, SELECT_BY_TICKET) == true ){
datetime horacierre = OrderCloseTime();
if (horacierre == 0 ){
Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , "Orden " , ticket, " en par " . Symbol (), " sigue abierta." );
}
else {
Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , "La orden " , ticket, " se cerro automaticamente a las " , TimeToStr(horacierre,TIME_DATE|TIME_SECONDS));
}
}
}
}
if (cont == 50 ){
if (abierta == 1 ){
if (larcor == "LARGO" ){
if (OrderClose(ticket,OrderLots(),Ask, 3 )){
Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , "Se cerro la orden " , ticket, " en LARGO" );
}
else {
Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , "No se pudo cerrar la orden " , ticket, " en LARGO" );
}
}
else {
if (OrderClose(ticket,OrderLots(),Bid, 3 )){
Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , "Se cerro la orden en CORTO" );
}
else {
Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , "No se pudo cerrar la orden " , ticket, " en CORTO" );
}
}
}
}
if (cont > 50 ){
Qnt_Symb= FileWrite (Handle,TimeToStr( TimeLocal (),TIME_DATE|TIME_SECONDS), " - " , "Fin de EA" );
}
Qnt_Symb= FileWrite (Handle, "***************************" );
Qnt_Symb= FileWrite (Handle, "**** FIN TICK PAR " , Symbol (), " ****" );
FileClose ( Handle );
cont++;
//----return ( 0 );
}
//+------------------------------------------------------------------+
Teşekkürler RaptorUK, sorunu denemek ve düzeltmek için sorunu tam olarak kopyalayan bir EA oluşturmuştum. Temel olarak başlar, keneleri sayarak dosyaya yazdığı her tik dosyasını oluşturur. Yani dosya tik 1, tik 2 vb.
15. tıklandığında bir sipariş açılır, dosyada sipariş bilgisi görünür ve sonu (******) da görünür. Bundan sonra her tikte tik numarası (16, 17, vb.) ve siparişin durumu, yani siparişin hala açık olup olmadığı yazılmalıdır. Nedense 15'ten sonra EA dosyaya yazmıyor.
50'de siparişi kapatması gerekiyor ama bu önemli değil, önemli olan siparişi açtığında dosyaya yazmaya devam etmesi.
Windows 7 makinemde dosyalar C:\Users\{username}\AppData\Local\VirtualStore\Program Files (x86)\SIGTrader 4\experts\files konumunda oluşturulur
Appdata gizli bir klasördür.
Şimdiden teşekkürler
Kod:
Kodunuz, test için kullandığım Broker ile işlem yapmayacaksınız, bu bir ECN "tipi" Broker. TP ve SL'yi ayarlayıp 0.0'a ayarlayacağım
WHRoeder :
Geçersiz son argüman - int değil
Lütfen ne demek istediğinizi detaylandırabilir misiniz?
Belgeler (bkz. FileOpen() ) sınırlayıcının tek tırnak içine alındığını gösterirken, kitap (bkz.
Ek olarak, aşağıdaki kod:
derlenmiş, herhangi bir çalışma zamanı hatası yoktu ve dosyada aşağıdaki çıktıyı üretti:
Üzgünüm, "parçalar" . . . **** END TICK USDCHF **** mesajını alıyor musunuz? yoksa ondan önce mi bitiyor?
Evet, dosya tamamlandı.
";" var ';' değil . . . aldığınız hata mesajı parametre 1'den bahsediyordu, bu dosya tanıtıcı değil mi?
Evet, başka biri geçersiz son parametre hakkında konuşuyordu, nedenini bilmiyorum. Yine de ";" değiştirdim için ';' ama aynı sorunu aldı.
Lütfen ne demek istediğinizi detaylandırabilir misiniz?
Belgeler (bkz. FileOpen() ) sınırlayıcının tek tırnak içine alındığını gösterirken, kitap (bkz.
Ek olarak, aşağıdaki kod:
derlenmiş, herhangi bir çalışma zamanı hatası yoktu ve dosyada aşağıdaki çıktıyı üretti:
Denedim ";" ve ';' aynı sorunu aldım.
Kodum çalışıyor ve harika çalışıyor, dosya oluşturulur ve dosya her açıldığında, tüm bilgiler içine yazılır ve ardından dosya kapatılır. EA bir sipariş açana kadar her şey harika çalışıyor, ardından dosyaya hiçbir şey yazılmıyor.
Birincisi bir dizge, ikincisi bir int (gerektiği gibi). Bahsedilen hata p 1. Birden çok sorun mu var?
Hata dosya tanıtıcısıdır, tanıtıcı her zaman 1'dir ve her zaman çalışır, ancak EA bir sipariş açtığında, bir sonraki onay işareti, yine 1 olmasına ve son yüzlerce onay için çalışmış olmasına rağmen Tutamaç geçersiz diyor. En son denediğimde sipariş açıldığında kolu yukarı çıkmaya başladı, 2, 3, 4 vb. oldu.
Aynı kod, neden 1 olarak kalmıyor bilmiyorum ve hala 1 olmasına rağmen hala hata veriyor.
Herhangi bir fikriniz var mı çocuklar?
Gönderdiğiniz kodda bir sorun göremiyorum.
Bu yüzden 2 seçenek görüyorum:
Gönderdiğiniz kodda bir sorun göremiyorum.
Bu yüzden 2 seçenek görüyorum:
Teşekkürler RaptorUK, sorunu denemek ve düzeltmek için sorunu tam olarak kopyalayan bir EA oluşturmuştum. Temel olarak başlar, keneleri sayarak dosyaya yazdığı her tik dosyasını oluşturur. Yani dosya tik 1, tik 2 vb.
15. tıklandığında bir sipariş açılır, dosyada sipariş bilgisi görünür ve sonu (******) da görünür. Bundan sonra her tikte tik numarası (16, 17, vb.) ve siparişin durumu, yani siparişin hala açık olup olmadığı yazılmalıdır. Nedense 15'ten sonra EA dosyaya yazmıyor.
Tik 50'de siparişi kapatması gerekiyor ama bu önemli değil, önemli olan siparişi açtığında dosyaya yazmaya devam etmesi.
Windows 7 makinemde dosyalar C:\Users\{username}\AppData\Local\VirtualStore\Program Files (x86)\SIGTrader 4\experts\files konumunda oluşturulur
Appdata gizli bir klasördür.
Şimdiden teşekkürler
Kod:
Teşekkürler RaptorUK, sorunu denemek ve düzeltmek için sorunu tam olarak kopyalayan bir EA oluşturmuştum. Temel olarak başlar, keneleri sayarak dosyaya yazdığı her tik dosyasını oluşturur. Yani dosya tik 1, tik 2 vb.
15. tıklandığında bir sipariş açılır, dosyada sipariş bilgisi görünür ve sonu (******) da görünür. Bundan sonra her tikte tik numarası (16, 17, vb.) ve siparişin durumu, yani siparişin hala açık olup olmadığı yazılmalıdır. Nedense 15'ten sonra EA dosyaya yazmıyor.
50'de siparişi kapatması gerekiyor ama bu önemli değil, önemli olan siparişi açtığında dosyaya yazmaya devam etmesi.
Windows 7 makinemde dosyalar C:\Users\{username}\AppData\Local\VirtualStore\Program Files (x86)\SIGTrader 4\experts\files konumunda oluşturulur
Appdata gizli bir klasördür.
Şimdiden teşekkürler
Kod: