Merhaba! Pro, söyle lütfen! Bir EA'da nasıl yazılır, böylece bir bahis kapatıldığında, EA aynı çubukta ters yönde yeni bir bahis alır ("çevirme" gibi). "Yeni bir çubuk açıldığında" modeline göre test ediyorum. Örneğin, bir danışman:
Bir istemci terminal penceresinde başlatıldığında, günlükte bir hata görünür:
Aynı zamanda, ayarlarda ( hizmet istemci terminalinin menüsü -> Ayarlar -> Posta sekmesi) aşağıdaki parametreler ayarlanır:
SMTP alanlarındaki üç nokta yerine oturum açma ve Kimden mesaj göndermek istediğim posta kutusunun adı ve Kime alanında mesajı göndermek istediğim posta kutusunun adı.
Bu durumda SMTPSunucusu alanında belirtilen port numarasıgerçekten 25:
Not: Ekran görüntüsü Posta sunucusundaki Yardım bölümünden alınmıştır. Ru .
Soru: Bu hata nedir ve nasıl kurtulur? Derleyici hataları algılamaz veGetLastError() işlevi 0 değerini döndürür.
s._S._ forumu kirletmemek adına şimdiden teşekkürler
Güzel gün. StandartSendMail fonksiyonu ile ilgili bir soru... Fonksiyonun nasıl çalıştığını anlamak için aşağıdaki scripti yazdım:
Bir istemci terminal penceresinde başlatıldığında, günlükte bir hata görünür:
Aynı zamanda, ayarlarda ( hizmet istemci terminalinin menüsü -> Ayarlar -> Posta sekmesi) aşağıdaki parametreler ayarlanır:
SMTP alanlarındaki üç nokta yerine oturum açma ve Kimden mesaj göndermek istediğim posta kutusunun adı ve Kime alanında mesajı göndermek istediğim posta kutusunun adı.
Bu durumda SMTPSunucusu alanında belirtilen port numarasıgerçekten 25:
Not: Ekran görüntüsü Posta sunucusundaki Yardım bölümünden alınmıştır. Ru .
Soru: Bu hata nedir ve nasıl kurtulur? Derleyici hataları algılamaz veGetLastError() işlevi 0 değerini döndürür.
s._S._ forumu kirletmemek adına şimdiden teşekkürler
Bağlantı noktasına ve şifrelemeye bakın. Belki 2525 koyulmalı?
//-----------------Закрытие по истории в безубыток--------------------//---------------------расчет по истории ордеров номера очередной итерации-----------------------------------------------
Iteration = 0 ; // зануляем инерации перед их учетом в цикле по истории
Sum_Loss = 0 ; // суммарный убыток по этим итерациямdatetime
Time_at_History_Current = 0 ,
Time_at_History_Previos = 0 ;
if ( OrdersHistoryTotal () != 0 )
{
for ( int counter = OrdersHistoryTotal ()- 1 ; counter >= 0 ; counter--)
{
OrderSelect (counter, SELECT_BY_POS, MODE_HISTORY);
if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNumber)
{
if ( OrderType () == OP_BUY || OrderType () == OP_SELL)
{
if ( OrderProfit () < 0 ) // если убыток по выбранному ордеру, то считаем суммарный и записываем время закрытия ордера// для последующего его анализа при подсчете количества итераций
{
double lastLoss = OrderProfit ();
Sum_Loss=Sum_Loss+lastLoss; // считаем общий убыток по закрытым подряд убыточным ордерам
Time_at_History_Current = OrderCloseTime ();
}
//Print(" Time_at_History_Current_в цикле = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS));//Print(" Time_at_History_Previos_в цикле = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));if (Time_at_History_Current != Time_at_History_Previos) // если они не равны, то считаем итерации и делаем их равными
{
Time_at_History_Previos = Time_at_History_Current ;
Iteration++;
//Print("Iteration at History в условии сравнения = ", Iteration);
}
else// они равны, то проверяем, дополнительно, наличие профита по выбранному следующему ордеру и выходим из цикла
{
if ( OrderProfit () >= 0 )
break ;
}
}
}
}
}
if (Sum_Loss < 0.0 ) { // Имеем убыток по закрытым позамdouble money = Lots;
BuyLots = GetBuyLotsSum();
SellLots = GetSellLotsSum();
if (BuyLots > SellLots)money = BuyLots * 10 ;
if (BuyLots < SellLots)money = SellLots * 10 ;
if ((( AccountEquity () + Sum_Loss + (Sum_Loss / money)) >= AccountBalance ()) && (((totalSell > 0 ) && (totalBuy < 1 )) || ((totalSell < 1 ) && (totalBuy > 0 )))) { // Достигли безубытка// Здесь какой-то код, который необходимо выполнить при достижении безубытка
CloseAllBuy();
CloseAllSell();
Sum_Loss = 0.0 ;
Anlaşma negatifte kapatıldığında, bir döngü açılacak ve bir sonraki sipariş sıfırdan fazla, yani pozitif bir bakiye, ancak negatiften daha az kapanırsa, o zaman bir ekleyeceğimiz hiçbir şey yapamam. artı eksi ve zaten daha küçük olan yeni bir negatif değer elde ederiz.
if ( OrderProfit () >= 0 && Sum_Loss < 0.0 )
double lastLoss_two = OrderProfit ();
Sum_Loss=Sum_Loss+lastLoss_two; // считаем общий убыток по закрытым подряд убыточным ордерам
Time_at_History_Current = OrderCloseTime ();
}
ve bir sinyalde negatiften fazlaysa, siparişi kapatırız ve döngüyü baştan başlatırız.
Durum şu ki, bu kod bir anlaşmayı kayıpla kapattığında, eksi bakiyeyi hatırlar ve bir artı ile bir anlaşmayı kapattığında ve aynı zamanda artı bakiyeden daha az olduğunda, Sum_Loss'u sıfırlar ve ihtiyacım var sıfırlamak için değil, biçmek için.
yani, şimdi şöyle çalışıyor:
kapalı bir emri kontrol eder, eğer kapalı bir emrin karı sıfırdan azsa, bu kar Sum_Loss'a eklenir ve açık bir anlaşmanın karı Sum_Loss'u geçene (daha fazla olacak) kadar, anlaşmaya ulaşıldığında, anlaşma kapatılır ve Sum_Loss sıfırlanır ve döngü yeniden başlar.
Ve ihtiyacım var:
emir kırmızı ile kapandı, negatif karı Sum_Loss'a eklendi, sonra bir sonraki işlem pozitif bir karla kapandıysa, Sum_Loss miktarını karlı kardan alınan miktar kadar düşürürüz, bu da bir sonraki açık sipariş Sum_Loss'un alacağı anlamına gelir daha küçük bir miktarla ve siparişlerden elde edilen kâr Sum_Loss'tan daha büyük olana kadar böyle devam eder ve ardından Sum_Loss'u sıfırlar ve yeni bir döngü başlatırız.
Güzel gün. StandartSendMail fonksiyonu ile ilgili bir soru... Fonksiyonun nasıl çalıştığını anlamak için aşağıdaki scripti yazdım:
Bir istemci terminal penceresinde başlatıldığında, günlükte bir hata görünür:
Aynı zamanda, ayarlarda ( hizmet istemci terminalinin menüsü -> Ayarlar -> Posta sekmesi) aşağıdaki parametreler ayarlanır:
SMTP alanlarındaki üç nokta yerine oturum açma ve Kimden mesaj göndermek istediğim posta kutusunun adı ve Kime alanında mesajı göndermek istediğim posta kutusunun adı.
Bu durumda SMTPSunucusu alanında belirtilen port numarasıgerçekten 25:
Not: Ekran görüntüsü Posta sunucusundaki Yardım bölümünden alınmıştır. Ru .
Soru: Bu hata nedir ve nasıl kurtulur? Derleyici hataları algılamaz veGetLastError() işlevi 0 değerini döndürür.
s._S._ forumu kirletmemek adına şimdiden teşekkürler
X fiyatına bekleyen bir emir veriyorum. Emir, Y fiyatından bir piyasa emrine dönüştürülür. Bekleyen bir emrin hangi fiyattan verildiğini (günlükte ... orada veya ) bir yerde bulmak mümkün mü yoksa kendi dizinizi yazmanız gerekecek mi?
Lütfen hatanın olası bir kaynağını önerin. Dile yeni giriyorum, bu yüzden biraz takıldım.
EA kodundaki görev, .scv dosyasındaki verileri (satır başına iki değer, 400 satır) okumak ve bir diziye yazmaktır.
double signals_array[ 400 ][ 2 ];
int init()
{
int Handle;
Handle= FileOpen ( "Signals.csv" , FILE_CSV | FILE_READ , ";" ); // Открытие файлаif (Handle< 0 ) // Неудача при открытии файла
{
if ( GetLastError ()== 4103 ) // Если файла не существует,..Alert ( "Нет файла" ); //.. извещаем трейдера else// При любой другой ошибке..Alert ( "Ошибка при открытии файла" ); //..такое сообщPlaySound ( "Bzrrr.wav" ); // Звуковое сопровождениеreturn ; // Выход из start()
}
for ( int i = 0 ; i < 400 ; i++)
{
for ( int j = 0 ; j < 2 ; j++)
signals_array[i][j] = StrToDouble ( FileReadString (Handle));
}
Alert (signals_array[ 120 ][ 0 ], "; " ,signals_array[ 0 ][ 1 ], " OK!" );
//----return ( 0 );
}
Sorun şu: Bir grafik üzerine Expert Advisor atarsanız diziden doğru değerlerle uyarı çıkıyor ancak Expert Advisor'ı test etmeye çalışırsanız log'da "Dosya yok" uyarısı veriyor. . Yani dosyaya erişilemiyor gibi görünüyor (inanılmaz olsa da) ve diziye değerler yazıyor (ki bu başka bir uyarı tarafından onaylanıyor), ancak dosyayı bulma konusunda takılıp kalıyor. kayıt. Kafası karışmış. Aşağıdaki ekran görüntüsü.
Sorun şu: Bir grafik üzerine Expert Advisor atarsanız diziden doğru değerlerle uyarı çıkıyor ancak Expert Advisor'ı test etmeye çalışırsanız log'da "Dosya yok" uyarısı veriyor. . Yani dosyaya erişilemiyor gibi görünüyor (inanılmaz olsa da) ve diziye değerler yazıyor (ki bu da başka bir uyarı tarafından onaylanıyor), ancak loga göre dosyayı bulma konusunda takılıyor. . Kafası karışmış.
Test cihazında ve çizelgede dosyalar farklı dizinlere yazılır ve okunur:
Lütfen hatanın olası bir kaynağını önerin. Dile yeni giriyorum, bu yüzden biraz takıldım.
EA kodundaki görev, .scv dosyasındaki verileri (satır başına iki değer, 400 satır) okumak ve bir diziye yazmaktır.
Sorun şu: Bir grafik üzerine Expert Advisor atarsanız diziden doğru değerlerle uyarı çıkıyor ancak Expert Advisor'ı test etmeye çalışırsanız log'da "Dosya yok" uyarısı veriyor. . Yani dosyaya erişilemiyor gibi görünüyor (inanılmaz olsa da) ve diziye değerler yazıyor (ki bu başka bir uyarı tarafından onaylanıyor), ancak dosyayı bulma konusunda takılıp kalıyor. kayıt. Kafası karışmış. Aşağıdaki ekran görüntüsü.
Dosya açıksa, onunla çalışırken bir hata alınsa bile kapatılmalıdır. Şimdiye kadar herhangi bir hata görmüyorum.
Güzel gün. Standart Se ndMail fonksiyonu ile ilgili bir soru... Fonksiyonun nasıl çalıştığını anlamak için aşağıdaki scripti yazdım:
Bir istemci terminal penceresinde başlatıldığında, günlükte bir hata görünür:
Aynı zamanda, ayarlarda ( hizmet istemci terminalinin menüsü -> Ayarlar -> Posta sekmesi) aşağıdaki parametreler ayarlanır:
SMTP alanlarındaki üç nokta yerine oturum açma ve Kimden mesaj göndermek istediğim posta kutusunun adı ve Kime alanında mesajı göndermek istediğim posta kutusunun adı.
Bu durumda SMTP Sunucusu alanında belirtilen port numarası gerçekten 25:
Not: Ekran görüntüsü Posta sunucusundaki Yardım bölümünden alınmıştır. Ru .
Soru : Bu hata nedir ve nasıl kurtulur? Derleyici hataları algılamaz ve GetLastError () işlevi 0 değerini döndürür.
s. _ S. _ forumu kirletmemek adına şimdiden teşekkürler
Güzel gün. Standart Se ndMail fonksiyonu ile ilgili bir soru... Fonksiyonun nasıl çalıştığını anlamak için aşağıdaki scripti yazdım:
Bir istemci terminal penceresinde başlatıldığında, günlükte bir hata görünür:
Aynı zamanda, ayarlarda ( hizmet istemci terminalinin menüsü -> Ayarlar -> Posta sekmesi) aşağıdaki parametreler ayarlanır:
SMTP alanlarındaki üç nokta yerine oturum açma ve Kimden mesaj göndermek istediğim posta kutusunun adı ve Kime alanında mesajı göndermek istediğim posta kutusunun adı.
Bu durumda SMTP Sunucusu alanında belirtilen port numarası gerçekten 25:
Not: Ekran görüntüsü Posta sunucusundaki Yardım bölümünden alınmıştır. Ru .
Soru : Bu hata nedir ve nasıl kurtulur? Derleyici hataları algılamaz ve GetLastError () işlevi 0 değerini döndürür.
s. _ S. _ forumu kirletmemek adına şimdiden teşekkürler
yardım edin lütfen
işte kod
Anlaşma negatifte kapatıldığında, bir döngü açılacak ve bir sonraki sipariş sıfırdan fazla, yani pozitif bir bakiye, ancak negatiften daha az kapanırsa, o zaman bir ekleyeceğimiz hiçbir şey yapamam. artı eksi ve zaten daha küçük olan yeni bir negatif değer elde ederiz.
ve bir sinyalde negatiften fazlaysa, siparişi kapatırız ve döngüyü baştan başlatırız.
Durum şu ki, bu kod bir anlaşmayı kayıpla kapattığında, eksi bakiyeyi hatırlar ve bir artı ile bir anlaşmayı kapattığında ve aynı zamanda artı bakiyeden daha az olduğunda, Sum_Loss'u sıfırlar ve ihtiyacım var sıfırlamak için değil, biçmek için.
yani, şimdi şöyle çalışıyor:
kapalı bir emri kontrol eder, eğer kapalı bir emrin karı sıfırdan azsa, bu kar Sum_Loss'a eklenir ve açık bir anlaşmanın karı Sum_Loss'u geçene (daha fazla olacak) kadar, anlaşmaya ulaşıldığında, anlaşma kapatılır ve Sum_Loss sıfırlanır ve döngü yeniden başlar.
Ve ihtiyacım var:
emir kırmızı ile kapandı, negatif karı Sum_Loss'a eklendi, sonra bir sonraki işlem pozitif bir karla kapandıysa, Sum_Loss miktarını karlı kardan alınan miktar kadar düşürürüz, bu da bir sonraki açık sipariş Sum_Loss'un alacağı anlamına gelir daha küçük bir miktarla ve siparişlerden elde edilen kâr Sum_Loss'tan daha büyük olana kadar böyle devam eder ve ardından Sum_Loss'u sıfırlar ve yeni bir döngü başlatırız.
toplam_kayıp = 0;
1. kapalı emir: kar (-50) < 0
Sum_Loss + kar (Sum_Loss + (-50))
Toplam_Kayıp = -50;
2. kapalı emir: kar(+40) > 0 ve Sum_Loss < 0
Sum_Loss + kar (Sum_Loss + 40)
Toplam_Kayıp = -10Güzel gün. Standart Se ndMail fonksiyonu ile ilgili bir soru... Fonksiyonun nasıl çalıştığını anlamak için aşağıdaki scripti yazdım:
Bir istemci terminal penceresinde başlatıldığında, günlükte bir hata görünür:
Aynı zamanda, ayarlarda ( hizmet istemci terminalinin menüsü -> Ayarlar -> Posta sekmesi) aşağıdaki parametreler ayarlanır:
SMTP alanlarındaki üç nokta yerine oturum açma ve Kimden mesaj göndermek istediğim posta kutusunun adı ve Kime alanında mesajı göndermek istediğim posta kutusunun adı.
Bu durumda SMTP Sunucusu alanında belirtilen port numarası gerçekten 25:
Not: Ekran görüntüsü Posta sunucusundaki Yardım bölümünden alınmıştır. Ru .
Soru : Bu hata nedir ve nasıl kurtulur? Derleyici hataları algılamaz ve GetLastError () işlevi 0 değerini döndürür.
s. _ S. _ forumu kirletmemek adına şimdiden teşekkürler
Yardım
sunucu smtp.mail.ru:25 gerçekten işe yarıyor
Yardım
sunucu smtp.mail.ru:25 gerçekten işe yarıyor
Kimden, kiminle eşleştiği test için bir giriş yaptım
Güvenlik duvarları müdahale ediyor olabilir mi?
Ah bir milyon için kahrolası tavsiye - terminali aşırı yükle!
iyi insanlara yardım et
X fiyatına bekleyen bir emir veriyorum. Emir, Y fiyatından bir piyasa emrine dönüştürülür. Bekleyen bir emrin hangi fiyattan verildiğini (günlükte ... orada veya ) bir yerde bulmak mümkün mü yoksa kendi dizinizi yazmanız gerekecek mi?
İyi akşamlar!
Lütfen hatanın olası bir kaynağını önerin. Dile yeni giriyorum, bu yüzden biraz takıldım.
EA kodundaki görev, .scv dosyasındaki verileri (satır başına iki değer, 400 satır) okumak ve bir diziye yazmaktır.
Sorun şu: Bir grafik üzerine Expert Advisor atarsanız diziden doğru değerlerle uyarı çıkıyor ancak Expert Advisor'ı test etmeye çalışırsanız log'da "Dosya yok" uyarısı veriyor. . Yani dosyaya erişilemiyor gibi görünüyor (inanılmaz olsa da) ve diziye değerler yazıyor (ki bu başka bir uyarı tarafından onaylanıyor), ancak dosyayı bulma konusunda takılıp kalıyor. kayıt. Kafası karışmış. Aşağıdaki ekran görüntüsü.
alexeymosc :
Sorun şu: Bir grafik üzerine Expert Advisor atarsanız diziden doğru değerlerle uyarı çıkıyor ancak Expert Advisor'ı test etmeye çalışırsanız log'da "Dosya yok" uyarısı veriyor. . Yani dosyaya erişilemiyor gibi görünüyor (inanılmaz olsa da) ve diziye değerler yazıyor (ki bu da başka bir uyarı tarafından onaylanıyor), ancak loga göre dosyayı bulma konusunda takılıyor. . Kafası karışmış.
Test cihazında ve çizelgede dosyalar farklı dizinlere yazılır ve okunur:
İyi akşamlar!
Lütfen hatanın olası bir kaynağını önerin. Dile yeni giriyorum, bu yüzden biraz takıldım.
EA kodundaki görev, .scv dosyasındaki verileri (satır başına iki değer, 400 satır) okumak ve bir diziye yazmaktır.
Sorun şu: Bir grafik üzerine Expert Advisor atarsanız diziden doğru değerlerle uyarı çıkıyor ancak Expert Advisor'ı test etmeye çalışırsanız log'da "Dosya yok" uyarısı veriyor. . Yani dosyaya erişilemiyor gibi görünüyor (inanılmaz olsa da) ve diziye değerler yazıyor (ki bu başka bir uyarı tarafından onaylanıyor), ancak dosyayı bulma konusunda takılıp kalıyor. kayıt. Kafası karışmış. Aşağıdaki ekran görüntüsü.
Dosya açıksa, onunla çalışırken bir hata alınsa bile kapatılmalıdır. Şimdiye kadar herhangi bir hata görmüyorum.
Şu şekilde okunabilir:
signals_array[i][j] = FileReadDouble (Handle);