1. Danışmanın çalışmasındaki önemli olayları işlerken SMS bildirimlerinin uygulanması hakkında
2. 12-00 PND'den 18-00 PTN'ye kadar (haftalık işlem seansının başlangıcı ve bitişi hakkında SMS bildirimi essno :) ile işlemlerin açılması ve kapanmasının uygulanması hakkında).
3. Ticaretin tamamlanmasından sonra e-posta bildiriminin uygulanması üzerine (18-00 PTN) - haftalık bir ticaret seansı için danışmanın çalışmaları hakkında bir rapor göndermek, test cihazında bir program ve pozisyon açılış tarihlerini gösteren, kapanış tarihler, pozisyon fiyatları, pozisyon kapatma sonuçlarına göre kar/zarar. Yoksa raporlar txt formatında mı olacak?
Bana hangi işlevlerin veya komut dosyalarının bunu uyguladığını söyle? Bütün bunlar nasıl kodlanır, belki bununla ilgili bir konu vardı - sms ve e-posta bildirimleri ve raporları.
https://www.mql5.com/ru/articles/1454
İşte böyle bir şey, sadece kolaylaştırmak için)))
https://www.mql5.com/ru/forum/53920
Burada forumda iyi bir SMS bildirim algoritması tartışıldı - danışman bir e-posta gönderir ve e-posta operatörü mektubun metnini içeren bir SMS gönderir. Ustaca olan her şey basittir. Orada, yalnızca cep telefonunun kaydedilmesi gerekir. Zaten daha kolay hale geldi.
Gidip okuyacağım, benzer bir fonksiyon buldum - SendMail ().İlginç bir şekilde karmaşık mı?
Bu uzun zamandır norm oldu. SMS yerine push mesajlarını kullanın, SendMail() zaten sizin tarafınızdan bulundu.
İşin aslı şu ki, sadece bir veya iki sipariş kaldı.
Tüm siparişler silinene kadar bu işleve bir çağrı döngüsü yaptı.
Teorik olarak, sipariş bir satın alma içinse, o zaman Bid tarafından kapatılmalıdır ve fiyatın şu an ne olduğu önemli değildir.
Herhangi bir fiyattan Bid'de kapanmalıdır.
Ve bu işlevi zaten binlerce kez uyguladıysanız, fiyat bir şekilde kapanmalıdır.
Yoksa bir şey anlamadım?
Silerken günlükte herhangi bir hata var mı?
Fiyat, döngü sırasında yeterli bir mesafe hareket edebilir. Ask ve Bid, zorla (RefreshRates() çağrılırken) veya yeni bir onay işlenirken güncellenen sabitlerdir. Bu nedenle, döngünün her yinelemesinden sonra RefreshRates()'i arayın ve ne olduğunu görün.
Valerius : İşin aslı şu ki, sadece bir veya iki sipariş kaldı. Tüm siparişler silinene kadar bu işleve bir çağrı döngüsü yapıldı. Teorik olarak, sipariş bir satın alma içinse, o zaman Bid tarafından kapatılmalıdır ve fiyatın şu an ne olduğu önemli değildir. Herhangi bir fiyattan Bid'de kapanmalıdır. Ve bu işlevi zaten binlerce kez uyguladıysanız, fiyat bir şekilde kapanmalıdır. Yoksa bir şey anlamadım?
Deneyin 1) sonucu ekranda hemen görmek için Yazdır'ı Uyarı ile değiştirin - daha hızlı 2) Burada bir hata kodu alırsınız. Çıktısını alın ve bakın 3) OrderSelect işlevininhata kodunu alın ve yazdırın ve hemen OrderSymbol(), OpderType(), OrderTicket()
Deneyin 1) sonucu ekranda hemen görmek için Yazdır'ı Uyarı ile değiştirin - daha hızlı 2) Burada bir hata kodu alırsınız. Çıktısını alın ve bakın 3) OrderSelect işlevininhata kodunu alın ve yazdırın ve hemen OrderSymbol(), OpderType(), OrderTicket()
Ayrıca RefreshRates()'i de denedim. Hiçbirşey değişmedi. Uyarı - baskı ile aynı, çıkıyor - yanlış parametreler.
Hata 3.
Bu sabah kalktım, danışmanın çalıştığını gördüm ve bütün gece tüm siparişleri silme işlevine bir çağrı gösterdi.
Vuruş sayacı birkaç milyon isabet gösterdi. Yani siparişler silinmez.
Ayrıca tüm siparişlerin uzaklığı için bir çek var, sigorta gibi. Emirler varsa, o zaman bir itiraz var
işlevleri silin. Program döngüler. Yani tüm siparişler silinene kadar döngüden çıkılmaz.
Ve 2 döviz çiftinde böyle çöpler. Zaten kafasını kırdı. Ne yapalım?
error() işlevi, yalnızca bir hata kodu içeren bir yazı görüntüler. Bu fonksiyonla ilgili herhangi bir sorun yok, birçok danışmanda var ve asla değiştirmiyorum.
Yani kesinlikle onunla ilgili değil.
Ve işte fonksiyonun kendisi:
//====================================================================int error( int errr)
{
string descr;
switch (errr)
{
// Коды ошибок, возвращаемые торговым сервером или клиентским терминалом:case0 : descr= "" ; return ( 0 );
case1 : descr= "Нет ошибки, но результат не известен" ; break ;
case2 : descr= "Общая ошибка" ; break ;
case3 : descr= "Неправильные параметры" ; break ;
case4 : descr= "Торговый сервер занят" ; break ;
case5 : descr= "Старая версия клиентского терминала" ; break ;
case6 : descr= "Нет связи с торговым сервером" ; break ;
case7 : descr= "Недостаточно прав" ; break ;
case8 : descr= "Слишком частые запросы" ; break ;
case9 : descr= "Недопустимая операция нарушающая функционирование сервера" ; break ;
case64 : descr= "Счет заблокирован" ; break ;
case65 : descr= "Неправильный номер счета" ; break ;
case128 : descr= "Истек срок ожидания совершения сделки" ; break ;
case129 : descr= "Неправильная цена" ; break ;
case130 : descr= "Неправильные стопы" ; break ;
case131 : descr= "Неправильный объем" ; break ;
case132 : descr= "Рынок закрыт" ; break ;
case133 : descr= "Торговля запрещена" ; break ;
case134 : descr= "Недостаточно денег для совершения операции" ; break ;
case135 : descr= "Цена изменилась" ; break ;
case136 : descr= "Нет цен" ; break ;
case137 : descr= "Брокер занят" ; break ;
case138 : descr= "Новые цены" ; break ;
case139 : descr= "Ордер заблокирован и уже обрабатывается" ; break ;
case140 : descr= "Разрешена только покупка" ; break ;
case141 : descr= "Слишком много запросов" ; break ;
case145 : descr= "Модификация запрещена, так как ордер слишком близок к рынку" ; break ;
case146 : descr= "Подсистема торговли занята" ; break ;
case147 : descr= "Использование даты истечения ордера запрещено брокером" ; break ;
case148 : descr= "Количество открытых и отложенных ордеров достигло предела, установленного брокером" ; break ;
case149 : descr= "Попытка открыть противоположную позицию к уже существующей, если хеджирование запрещено" ; break ;
case150 : descr= "Попытка закрыть позицию по инструменту в противоречии с правилом FIFO" ; break ;
case4000 : /*descr= "Нет ошибки";*/return ( 0 );
case4001 : descr= "Неправильный указатель функции" ; break ;
case4002 : descr= "Индекс массива - вне диапазона" ; break ;
case4003 : descr= "Нет памяти для стека функций" ; break ;
case4004 : descr= "Переполнение стека после рекурсивного вызова" ; break ;
case4005 : descr= "На стеке нет памяти для передачи параметров" ; break ;
case4006 : descr= "Нет памяти для строкового параметра" ; break ;
case4007 : descr= "Нет памяти для временной строки" ; break ;
case4008 : descr= "Неинициализированная строка" ; break ;
case4009 : descr= "Неинициализированная строка в массиве" ; break ;
case4010 : descr= "Нет памяти для строкового массива" ; break ;
case4011 : descr= "Слишком длинная строка" ; break ;
case4012 : descr= "Остаток от деления на ноль" ; break ;
case4013 : descr= "Деление на ноль" ; break ;
case4014 : descr= "Неизвестная команда" ; break ;
case4015 : descr= "Неправильный переход" ; break ;
case4016 : descr= "Неинициализированный массив" ; break ;
case4017 : descr= "Вызовы DLL не разрешены" ; break ;
case4018 : descr= "Невозможно загрузить библиотеку" ; break ;
case4019 : descr= "Невозможно вызвать функцию" ; break ;
case4020 : descr= "Вызовы внешних библиотечных функций не разрешены" ; break ;
case4021 : descr= "Недостаточно памяти для строки, возвращаемой из функции" ; break ;
case4022 : descr= "Система занята" ; break ;
case4050 : descr= "Неправильное количество параметров функции" ; break ;
case4051 : descr= "Недопустимое значение параметра функции" ; break ;
case4052 : descr= "Внутренняя ошибка строковой функции" ; break ;
case4053 : descr= "Ошибка массива" ; break ;
case4054 : descr= "Неправильное использование массива-таймсерии" ; break ;
case4055 : descr= "Ошибка пользовательского индикатора" ; break ;
case4056 : descr= "Массивы несовместимы" ; break ;
case4057 : descr= "Ошибка обработки глобальныех переменных" ; break ;
case4058 : descr= "Глобальная переменная не обнаружена" ; break ;
case4059 : descr= "Функция не разрешена в тестовом режиме" ; break ;
case4060 : descr= "Функция не подтверждена" ; break ;
case4061 : descr= "Ошибка отправки почты" ; break ;
case4062 : descr= "Ожидается параметр типа string" ; break ;
case4063 : descr= "Ожидается параметр типа integer" ; break ;
case4064 : descr= "Ожидается параметр типа double" ; break ;
case4065 : descr= "В качестве параметра ожидается массив" ; break ;
case4066 : descr= "Запрошенные исторические данные в состоянии обновления" ; break ;
case4099 : descr= "Конец файла" ; break ;
case4100 : descr= "Ошибка при работе с файлом" ; break ;
case4101 : descr= "Неправильное имя файла" ; break ;
case4102 : descr= "Слишком много открытых файлов" ; break ;
case4103 : descr= "Невозможно открыть файл" ; break ;
case4104 : descr= "Несовместимый режим доступа к файлу" ; break ;
case4105 : descr= "Ни один ордер не выбран" ; break ;
case4106 : descr= "Неизвестный символ" ; break ;
case4107 : descr= "Неправильный параметр цены для торговой функции" ; break ;
case4108 : descr= "Неверный номер тикета" ; break ;
case4109 : descr= "Торговля не разрешена" ; break ;
case4110 : descr= "Длинные позиции не разрешены" ; break ;
case4111 : descr= "Короткие позиции не разрешены" ; break ;
case4200 : descr= "Объект уже существует" ; break ;
case4201 : descr= "Запрошено неизвестное свойство объекта" ; break ;
case4202 : descr= "Объект не существует" ; break ;
case4203 : descr= "Неизвестный тип объекта" ; break ;
case4204 : descr= "Нет имени объекта" ; break ;
case4205 : descr= "Ошибка координат объекта" ; break ;
case4206 : descr= "Не найдено указанное подокно" ; break ;
case4207 : descr= "Ошибка при работе с объектом" ; break ;
}
Comment ( "Ошибка! " ,descr);
Print ( "Ошибка! " ,descr);
return (errr);
}
Merhaba,
Aşağıdaki bilgileri arıyorum:
1. Danışmanın çalışmasındaki önemli olayları işlerken SMS bildirimlerinin uygulanması hakkında
2. 12-00 PND'den 18-00 PTN'ye kadar (haftalık işlem seansının başlangıcı ve bitişi hakkında SMS bildirimi essno :) ile işlemlerin açılması ve kapanmasının uygulanması hakkında).
3. Ticaretin tamamlanmasından sonra e-posta bildiriminin uygulanması üzerine (18-00 PTN) - haftalık bir ticaret seansı için danışmanın çalışmaları hakkında bir rapor göndermek, test cihazında bir program ve pozisyon açılış tarihlerini gösteren, kapanış tarihler, pozisyon fiyatları, pozisyon kapatma sonuçlarına göre kar/zarar. Yoksa raporlar txt formatında mı olacak?
Bana hangi işlevlerin veya komut dosyalarının bunu uyguladığını söyle? Bütün bunlar nasıl kodlanır, belki bununla ilgili bir konu vardı - sms ve e-posta bildirimleri ve raporları.
https://www.mql5.com/ru/articles/1454
İşte böyle bir şey, sadece kolaylaştırmak için)))
https://www.mql5.com/ru/forum/53920
Burada forumda iyi bir SMS bildirim algoritması tartışıldı - danışman bir e-posta gönderir ve e-posta operatörü mektubun metnini içeren bir SMS gönderir. Ustaca olan her şey basittir. Orada, yalnızca cep telefonunun kaydedilmesi gerekir. Zaten daha kolay hale geldi.
Gidip okuyacağım, benzer bir fonksiyon buldum - SendMail ().İlginç bir şekilde karmaşık mı?
Herkese iyi günler!
Aşağıdaki kodu yaptım - tüm siparişleri bir kerede silmek.
Sorun şu ki, neredeyse tüm siparişler kapalı. Ancak 1-2 sipariş silinmemiş olarak kalır.
Ve bu fonksiyonu ne kadar çağırsam da bu fonksiyon kalan emirleri kapatmıyor.
Hata çıkıyor - doğru fiyat değil.
Yeniden alıntılar düşündüm, ancak bu işlev zaten 500.000 kez çağrıldıysa, o zaman ne tür bir alıntı olabilir.
Ve yanlış fiyat ne olabilir?
Diğer danışmanlarda böyle bir saçmalık yoktu.
Herkese iyi günler!
Aşağıdaki kodu yaptım - tüm siparişleri bir kerede silmek.
Sorun şu ki, neredeyse tüm siparişler kapalı. Ancak 1-2 sipariş silinmemiş olarak kalır.
Ve bu fonksiyonu ne kadar çağırsam da bu fonksiyon kalan emirleri kapatmıyor.
Hata çıkıyor - doğru fiyat değil.
Yeniden alıntılar düşündüm, ancak bu işlev zaten 500.000 kez çağrıldıysa, o zaman ne tür bir alıntı olabilir.
Ve yanlış fiyat ne olabilir?
Diğer danışmanlarda böyle bir saçmalık yoktu.
Çok fazla sipariş varsa, fiyatın modasının geçmesi için zaman vardır. RefreshRates() ekleyin ve iyi olmalı.
İşin aslı şu ki, sadece bir veya iki sipariş kaldı.
Tüm siparişler silinene kadar bu işleve bir çağrı döngüsü yapıldı.
Teorik olarak, sipariş bir satın alma içinse, o zaman Bid tarafından kapatılmalıdır ve fiyatın şu an ne olduğu önemli değildir.
Herhangi bir fiyattan Bid'de kapanmalıdır.
Ve bu işlevi zaten binlerce kez uyguladıysanız, fiyat bir şekilde kapanmalıdır.
Yoksa bir şey anlamadım?
İşin aslı şu ki, sadece bir veya iki sipariş kaldı.
Tüm siparişler silinene kadar bu işleve bir çağrı döngüsü yaptı.
Teorik olarak, sipariş bir satın alma içinse, o zaman Bid tarafından kapatılmalıdır ve fiyatın şu an ne olduğu önemli değildir.
Herhangi bir fiyattan Bid'de kapanmalıdır.
Ve bu işlevi zaten binlerce kez uyguladıysanız, fiyat bir şekilde kapanmalıdır.
Yoksa bir şey anlamadım?
Silerken günlükte herhangi bir hata var mı?
Fiyat, döngü sırasında yeterli bir mesafe hareket edebilir. Ask ve Bid, zorla (RefreshRates() çağrılırken) veya yeni bir onay işlenirken güncellenen sabitlerdir. Bu nedenle, döngünün her yinelemesinden sonra RefreshRates()'i arayın ve ne olduğunu görün.
İşin aslı şu ki, sadece bir veya iki sipariş kaldı.
Tüm siparişler silinene kadar bu işleve bir çağrı döngüsü yapıldı.
Teorik olarak, sipariş bir satın alma içinse, o zaman Bid tarafından kapatılmalıdır ve fiyatın şu an ne olduğu önemli değildir.
Herhangi bir fiyattan Bid'de kapanmalıdır.
Ve bu işlevi zaten binlerce kez uyguladıysanız, fiyat bir şekilde kapanmalıdır.
Yoksa bir şey anlamadım?
Deneyin 1) sonucu ekranda hemen görmek için Yazdır'ı Uyarı ile değiştirin - daha hızlı 2) Burada bir hata kodu alırsınız. Çıktısını alın ve bakın 3) OrderSelect işlevinin hata kodunu alın ve yazdırın ve hemen OrderSymbol(), OpderType(), OrderTicket()
Deneyin 1) sonucu ekranda hemen görmek için Yazdır'ı Uyarı ile değiştirin - daha hızlı 2) Burada bir hata kodu alırsınız. Çıktısını alın ve bakın 3) OrderSelect işlevinin hata kodunu alın ve yazdırın ve hemen OrderSymbol(), OpderType(), OrderTicket()
Ayrıca RefreshRates()'i de denedim. Hiçbirşey değişmedi. Uyarı - baskı ile aynı, çıkıyor - yanlış parametreler.
Hata 3.
Bu sabah kalktım, danışmanın çalıştığını gördüm ve bütün gece tüm siparişleri silme işlevine bir çağrı gösterdi.
Vuruş sayacı birkaç milyon isabet gösterdi. Yani siparişler silinmez.
Ayrıca tüm siparişlerin uzaklığı için bir çek var, sigorta gibi. Emirler varsa, o zaman bir itiraz var
işlevleri silin. Program döngüler. Yani tüm siparişler silinene kadar döngüden çıkılmaz.
Ve 2 döviz çiftinde böyle çöpler. Zaten kafasını kırdı. Ne yapalım?
Ayrıca RefreshRates()'i de denedim. Hiçbirşey değişmedi. Uyarı - baskı ile aynı, çıkıyor - yanlış parametreler.
Hata 3.
Bu sabah kalktım, danışmanın çalıştığını gördüm ve bütün gece tüm siparişleri silme işlevine bir çağrı gösterdi.
Vuruş sayacı birkaç milyon isabet gösterdi. Yani siparişler silinmez.
Ayrıca tüm siparişlerin uzaklığı için bir çek var, sigorta gibi. Emirler varsa, o zaman bir itiraz var
işlevleri silin. Program döngüler. Yani tüm siparişler silinene kadar döngüden çıkılmaz.
Ve 2 döviz çiftinde böyle çöpler. Zaten kafasını kırdı. Ne yapalım?
error() işlevi nedir
Sorunun o olması mümkündür.
error() işlevi nedir
Sorunun o olması mümkündür.
error() işlevi, yalnızca bir hata kodu içeren bir yazı görüntüler. Bu fonksiyonla ilgili herhangi bir sorun yok, birçok danışmanda var ve asla değiştirmiyorum.
Yani kesinlikle onunla ilgili değil.
Ve işte fonksiyonun kendisi: