İyi günler Bilenler! Yılın en zor gününden bıktınız mı? iş yapabilir misin? ;=).
Bir danışman çizdim, her şey yolunda ama MQL, anladığım kadarıyla MT4 ortamında çalışıyor. Ve doğrudan borsa ile çalışan bir yazılımla çalışması için buna ihtiyacım var. Başka MQL derleyicileri var mı? Ve değilse, hangi dilde EA'yı yeniden yazmak daha iyidir.
Anatoliy Ryzhakov : Ara vermiyorum. Danışmanın emirlerini "görmemesinin" nedenleri nelerdir? Sunucum ve bilgisayarımın saati farklı, belki bu yüzden?
Herkesin zamanı farklıdır. Acele etmeden uzaktan başlayın. 1. OrdersTotal işlevinin size ne verdiğini kontrol edin. Lütfen anlamının geçmiş ayarına bağlı olduğunu unutmayın: Bugün, son 3 gün, geçen hafta, ... İstediğiniz gibi ayarlayın. 2. Ardından bir döngü oluşturun ve Uyarıyı kullanarak tüm siparişlerin Sihirlerini görüntüleyin. vb. Buna hata ayıklama denir - bir programcının işinin çok önemli bir parçası. Kod yazmaktan daha önemli.
Lütfen, hacmin (lot) yanlışlıkla negatif bir değeri ayarlandığında Expert Advisor'daki FreeMarginCheck işlev hatası için geçersiz lot miktarını nasıl düzeltebileceğimi söyleyin. Test cihazında hata mesajı olmadan yanlış parti hakkında mesaj almak.
Herkesin zamanı farklıdır. Acele etmeden uzaktan başlayın. 1. OrdersTotal işlevinin size ne verdiğini kontrol edin. Lütfen anlamının geçmiş ayarına bağlı olduğunu unutmayın: Bugün, son 3 gün, geçen hafta, ... İstediğiniz gibi ayarlayın. 2. Ardından bir döngü yapın ve Uyarıyı kullanarak tüm siparişlerin Sihirlerini görüntüleyin. vb. Buna hata ayıklama denir - bir programcının işinin çok önemli bir parçası. Kod yazmaktan daha önemli.
Derlenmiş hiçbir hata yok, ancak bu işlev benim durumum için değil.
bu kodu buldum
#property copyright"Влад Сергеев для mmgp"#property version"1.00"#property strict#property script_show_inputsinputint orders = 4 ; //всего ордеров в серии inputbool buy = true ; //флаг разрешающий/запрещающий покупки inputbool sell = false ; //флаг разрешающий/запрещающий продажи inputint magic = 100500 ; //уникальный номер для ордеров, открываемых этим скриптом inputdouble lot = 0.01 ; //объем каждого ордера серии inputint tp = 100 ; //тейк профит, в пунктах inputint sl = 100 ; //стоп лосс, в пунктах inputint slip = 2 ; //допустимое проскальзывание на открытии, в пунктах (для ECN, где открытие по рынку - игнор) //+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnStart ()
{
int i= 0 ; // для чего эта переменная
int ticket= 0 ;
if (buy)
{
while (i<orders) // здесь эта переменная используется чтобы сравнивать ордера или для чего
{
RefreshRates (); // если убрать эту функцию коду хуже не становится
ticket= OrderSend ( Symbol (), OP_BUY ,lot, NormalizeDouble ( Ask , Digits ),slip, 0 , 0 , "" ,magic, 0 , clrBlue ); //здесь понятно
if (ticket!=- 1 ) // эта строчка тоже не понятна
{
if ( OrderSelect (ticket, SELECT_BY_TICKET , MODE_TRADES )) // функция для выбора ордера это логично но тоже не понятно как ей пользоваться
{
OrderModify (ticket, OrderOpenPrice (), NormalizeDouble ( OrderOpenPrice ()-sl* Point , Digits ), NormalizeDouble ( OrderOpenPrice ()+tp* Point , Digits ), 0 , clrBlue );
// эту строчку тоже хотел бы чтобы объяснили
}
}
i++; // что увеличивается на оду единицу это относится к магическому номеру ордера чтобы программа понимала что у неё есть ордера
}
}
i= 0 ;
if (sell) // прошлая запись была для покупак эта для продаж
{
while (i<orders)
{
RefreshRates ();
ticket= OrderSend ( Symbol (), OP_SELL ,lot, NormalizeDouble ( Bid , Digits ),slip, 0 , 0 , "" ,magic, 0 , clrRed );
if (ticket!=- 1 )
{
if ( OrderSelect (ticket, SELECT_BY_TICKET , MODE_TRADES ))
{
OrderModify (ticket, OrderOpenPrice (), NormalizeDouble ( OrderOpenPrice ()+sl* Point , Digits ), NormalizeDouble ( OrderOpenPrice ()-tp* Point , Digits ), 0 , clrRed );
}
}
i++;
}
}
}
//+------------------------------------------------------------------+
Belki sadece kullanılabilir, ben satırların anlamını anlamıyorum. Bu kodu benim durumumda yeniden yapılmışsa kullanabilir miyim?
eğer (! OrderSelect (i,SELECT_BY_POS,MODE_TRADES))devam ederse;//piyasadan seç
{
eğer (OrderSymbol()!=Symbol()&&OrderMagicNumber()!=Magic) devam ederse;//sadece EA emirlerini seçin (Magic varsa ve herhangi bir döviz çiftinde işlem görüyorsa)
konum++; //seçilirse, konumu bir artır
}
}
if (MA_1>MA_2&&pos<3)
OrderSend ( _Symbol() , OP_BUY ,Lots, Ask , 0 , Ask -SL* Point ,Ask+TP* Point , NULL ,Magic, 0 , clrGreen );
if (MA_1<MA_2&&pos<3)
OrderSend ( _Symbol() , OP_SELL ,Lots, Bid , 0 , Bid +SL* Point ,Bid-TP* Point , NULL ,Magic, 0 , clrRed );
Satış emri, Satış fiyatından kapatılır
Tam anlayamadım! Parmağınızı koddaki sövenin olduğu yere sokun !!! ( günlük SİPARİŞ KAPAT HATASI 4108 diyor) Şimdiden teşekkürler!
İyi günler Bilenler! Yılın en zor gününden bıktınız mı? iş yapabilir misin? ;=).
Bir danışman çizdim, her şey yolunda ama MQL, anladığım kadarıyla MT4 ortamında çalışıyor. Ve doğrudan borsa ile çalışan bir yazılımla çalışması için buna ihtiyacım var. Başka MQL derleyicileri var mı? Ve değilse, hangi dilde EA'yı yeniden yazmak daha iyidir.
Mola verdin ve devam etmen gerekiyor
aram yok. Danışmanın emirlerini "görmemesinin" nedenleri nelerdir? Sunucum ve bilgisayarımın saati farklı, belki bu yüzden?
Herkesin zamanı farklıdır. Acele etmeden uzaktan başlayın. 1. OrdersTotal işlevinin size ne verdiğini kontrol edin. Lütfen anlamının geçmiş ayarına bağlı olduğunu unutmayın: Bugün, son 3 gün, geçen hafta, ... İstediğiniz gibi ayarlayın. 2. Ardından bir döngü oluşturun ve Uyarıyı kullanarak tüm siparişlerin Sihirlerini görüntüleyin. vb. Buna hata ayıklama denir - bir programcının işinin çok önemli bir parçası. Kod yazmaktan daha önemli.
Herkesin zamanı farklıdır. Acele etmeden uzaktan başlayın. 1. OrdersTotal işlevinin size ne verdiğini kontrol edin. Lütfen anlamının geçmiş ayarına bağlı olduğunu unutmayın: Bugün, son 3 gün, geçen hafta, ... İstediğiniz gibi ayarlayın. 2. Ardından bir döngü yapın ve Uyarıyı kullanarak tüm siparişlerin Sihirlerini görüntüleyin. vb. Buna hata ayıklama denir - bir programcının işinin çok önemli bir parçası. Kod yazmaktan daha önemli.
Teşekkür ederim !
Beyler lütfen söyleyin. danışman kodu nasıl yazılır, böylece koşul bir kez karşılandığında, danışman SL ayarlama yeteneği ile aynı anda 3 fırsat açar?
işte benim durumum
( OrdersTotal () ) işlevini kullanmam önerildi ancak bu benim durumuma uymuyor. ben böyle yazdım
Derlenmiş hiçbir hata yok, ancak bu işlev benim durumum için değil.
bu kodu buldum
Belki sadece kullanılabilir, ben satırların anlamını anlamıyorum. Bu kodu benim durumumda yeniden yapılmışsa kullanabilir miyim?
Beyler lütfen söyleyin. danışman kodu nasıl yazılır, böylece koşul bir kez karşılandığında, danışman SL ayarlama yeteneği ile aynı anda 3 fırsat açar?
işte benim durumum
( OrdersTotal () ) işlevini kullanmam önerildi ancak bu benim durumuma uymuyor. ben böyle yazdım
Derlenmiş hata yok, ancak bu işlev benim durumum için değil.
bu kodu buldum
Belki sadece kullanılabilir, ben satırların anlamını anlamıyorum. Bu kodu benim durumumda yeniden yapılmışsa kullanabilir miyim?
böyle dene
konum=0; //sipariş sayacı
for(int i=OrdersTotal()-1;i>=0;i--) // piyasa emirlerini sırala
{
eğer (! OrderSelect (i,SELECT_BY_POS,MODE_TRADES))devam ederse;//piyasadan seç
{
eğer (OrderSymbol()!=Symbol()&&OrderMagicNumber()!=Magic) devam ederse;//sadece EA emirlerini seçin (Magic varsa ve herhangi bir döviz çiftinde işlem görüyorsa)
konum++; //seçilirse, konumu bir artır
}
}
Beyler lütfen söyleyin. danışman kodu nasıl yazılır, böylece koşul bir kez karşılandığında, danışman SL ayarlama yeteneği ile aynı anda 3 fırsat açar?