Aynı şekilde, kod işe yaramadı, tüm işlemleri 2 mum üzerinde yaptı. ama pozun zaten var olduğunu öğrenmeliydim, artık açmayın... içine açabileceği her şey için tüm depozito zayuzal ((bak bak, belki başka bir şey eklemeniz gerekir... çok minnettar
Aynı şekilde, kod işe yaramadı, tüm işlemleri 2 mum üzerinde yaptı. ama pozun zaten var olduğunu öğrenmeliydim, artık açmayın... içine açabileceği her şey için tüm depozito zayuzal ((bak bak belki başka bir şey eklemeniz gerekir... çok minnettar
Evet kesinlikle....
f-ve SİPARİŞLERDE sihri ayarlamayı unuttum.
Şimdi her şey yolunda. İşler. Kontrol. Piyasada ikiden fazla zıt yönlü veya birden fazla tek yönlü işlem olamaz.
Herhangi bir türden birden fazla anlaşmaya ihtiyacınız yoksa, NumberOfPositions (c) işlevlerinde anlaşma türünü -1 (eksi bir) ile değiştirmeniz gerekir.
externint Magic =777;externint Ema1 =14;externint Ema2 =48;double Ema_1 ;double Ema_2 ;//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start (){//int Orders = OrdersTotal();
Ema_1 =iMA(NULL,0, Ema1 ,0,MODE_SMMA,PRICE_MEDIAN,0);
Ema_2 =iMA(NULL,0, Ema2 ,0,MODE_SMMA,PRICE_MEDIAN,0);int ticket ;//------------------------------------------------if( NumberOfPositions (NULL,OP_BUY, Magic )<1&& Ema_1 > Ema_2 ){
ticket =OrderSend(Symbol(),OP_BUY,0.5,Ask,10,Ask-850*Point,Ask+550*Point,"kupil", Magic ,0,Green);}//------------------------------------------------------if( NumberOfPositions (NULL,OP_SELL, Magic )<1&& Ema_1 < Ema_2 ){
ticket =OrderSend(Symbol(),OP_SELL,0.5,Bid,10,Ask+850*Point,Bid-550*Point,"kupil", Magic ,0,Violet);}//------------------------------------------------------return(0);}//жжжжжжжжж Пользовательские функции жжжжжжжint NumberOfPositions (string sy ="",int op =-1,int mn =-1){int i , k =OrdersTotal(), kp =0;if( sy =="0") sy =Symbol();for( i =0; i < k ; i ++){if(OrderSelect( i , SELECT_BY_POS , MODE_TRADES )){if(OrderSymbol()== sy || sy ==""){if(OrderType()==OP_BUY||OrderType()==OP_SELL){if( op <0||OrderType()== op ){if( mn <0||OrderMagicNumber()== mn ) kp ++;}}}}}return( kp );}
kurtuldum Teşekkürler.. Tam aradığım şey) Söyleyin zor değilse, bir siparişi açarken diğerini kaplayacak şekilde nasıl yapabilirim? ikinci seviyeyi değiştirmeye çalıştı ama işe yaramadıysa (
Logiano her şeyi yapmış gibi görünüyor, ancak test sırasında siparişi hemen açıp kapatıyor.
externint Magic =777;externint Ema1 =14;externint Ema2 =48;externint Ema3 =100;double Ema_1 ;double Ema_2 ;double Ema_3 ;//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start (){//int Orders = OrdersTotal();
Ema_1 =iMA(NULL,0, Ema1 ,0,MODE_SMMA,PRICE_MEDIAN,0);
Ema_2 =iMA(NULL,0, Ema2 ,0,MODE_SMMA,PRICE_MEDIAN,0);
Ema_3 =iMA(NULL,0, Ema3 ,0,MODE_SMMA,PRICE_MEDIAN,0);int ticket ;//------------------------------------------------if( NumberOfPositions (NULL,OP_BUY, Magic )<1&& Ema_1 > Ema_2 && Ema_2 > Ema_3 ){
ticket =OrderSend(Symbol(),OP_BUY,0.1,Ask,10,0,0,"kupil", Magic ,0,Green);}//------------------------------------------------------if( NumberOfPositions (NULL,OP_SELL, Magic )<1&& Ema_1 < Ema_2 && Ema_2 < Ema_3 ){
ticket =OrderSend(Symbol(),OP_SELL,0.1,Bid,10,0,0,"kupil", Magic ,0,Violet);}//--------------------------------------------------------if( NumberOfPositions (NULL,OP_BUY, Magic )>=1&& Ema_1 < Ema_2 )//--проверяю есть ли ордер BUY и крою его если линии ема пересеклись{
ticket =OrderClose(OrderTicket(),0.1,Bid,300,Violet);}//------------------------------------------------------if( NumberOfPositions (NULL,OP_SELL, Magic )>=1&& Ema_1 > Ema_2 )//--проверяю есть ли ордер SEll и крою его если линии ема пересеклись{
ticket =OrderClose(OrderTicket(),0.1,Ask,300,Green);}//------------------------------------------------------return(0);}//жжжжжжжжж Пользовательские функции жжжжжжжint NumberOfPositions (string sy ="",int op =-1,int mn =-1){int i , k =OrdersTotal(), kp =0;if( sy =="0") sy =Symbol();for( i =0; i < k ; i ++){if(OrderSelect( i , SELECT_BY_POS , MODE_TRADES )){if(OrderSymbol()== sy || sy ==""){if(OrderType()==OP_BUY||OrderType()==OP_SELL){if( op <0||OrderType()== op ){if( mn <0||OrderMagicNumber()== mn ) kp ++;}}}}}return( kp );}
Açık. Tarihte bunun gibi pozisyonlar olup olmadığını belirleyebilirsiniz:
Ancak o zaman kodunuz yalnızca test cihazında çalışır. Çünkü Aksi takdirde, çevrimiçi danışmanı her açtığınızda sihri değiştirmeniz gerekecektir.
Tam olarak, tam olarak ihtiyacınız olan şey!
Bu kodu bu kafese nasıl doğru bir şekilde ekleyeceğimi söyle:
(doğrudan bahis yaparsam, testçi ilk pozisyonun açılışında durur)
for(int i =0; i <OrdersTotal(); i ++){if(!(OrderSelect( i , SELECT_BY_POS , MODE_HISTORY )))continue;//выбираем из истории счетаif(OrderSymbol()!=Symbol())continue;if(OrderMagicNumber()== Magic ){
позиции =true;}}//Открытие позиции:bool Open_Buy (){bool res =false;if( условие_1 ){if( советник еще не открывал позиций с Магическим номером ){
res =true;}}else{if( условие_1 ){if( условие_2 опирается на данные прошлого ордера ){
res =true;}}}return( res );}
kurtuldum Teşekkürler.. Tam aradığım şey) Söyle bana, zor değilse nasıl yapabilirim ki, bir siparişi açarken diğerini kapsıyor? ikinci seviyeyi değiştirmeye çalıştı ama işe yaramadıysa (
Logiano her şeyi yapmış gibi görünüyor, ancak test sırasında siparişi hemen açıp kapatıyor.
Bir keresinde burada pozisyonların kapatılmasıyla ilgilenmiştim -
//==================Закрытие позиций ============================//----------------------------------------------------------------------for(int v =0; v <OrdersTotal(); v ++){if(OrderSelect( v , SELECT_BY_POS , MODE_TRADES )){if(OrderSymbol()==Symbol()&&OrderMagicNumber()== Magic ){//----------------------------------------------------- if(OrderType()==OP_BUY){// если открыта бай-позиция if( вот здесь вставляй свои условия закрытия ){OrderClose(OrderTicket(),OrderLots(),Bid,3,Вlack);// закрываем позицию}}//--------------------------------------------------------if(OrderType()==OP_SELL){// если открыта селл-позиция if( вот здесь вставляй свои условия закрытия ){OrderClose(OrderTicket(),OrderLots(),Ask,3,Yellow);// закрываем позицию}}//------------------------------------------------------- }// Symbol() }// select}//total//------------конец блока закрытия позиций-----------------
Bu bloğu BAŞLAT işlevinin içine yerleştirin - Ema_1, Ema_2, Ema_3'ü hesapladıktan hemen sonra, en baştan yapabilirsiniz Ve görünüşe göre, AÇILIŞ FİYATI EA'nın işini yapmak gerekiyor, aksi takdirde MA geçişi neredeyse her tikte açılış pozisyonlarını sürekli olarak kapatacaktır.
Ve bunu yapma şekliniz - çevrimiçi düzgün çalışmayacak, çünkü. danışman, başka bir danışman veya kılavuz tarafından açılmış olanlar da dahil olmak üzere tüm pozisyonları kapatacaktır.
Ama daha da kolay, nasıl yapılacağını zaten yazdım. Pozisyonları açarken NumberOfPositions(NULL,OP_BUY,Magic) ve NumberOfPositions(NULL,OP_SELL,Magic) yerine, sadece
NumberOfPositions(NULL,-1,Büyü)
ve o zaman piyasada her zaman birden fazla pozisyon olmayacaktır. Kapatma blokları yok.
https://docs.mql4.com/en/array/ArrayResize
Evet kesinlikle. baktım ama göremedim.
Teşekkür ederim.
Bugün fren yapıyorum. Hafta sonları dinlenmelisin.
Bunun gibi -
Teşekkürler!!! kullanmaya devam edeceğim...
DDFedor
kurtulmak
Teşekkür ederim.
Aynı şekilde, kod işe yaramadı, tüm işlemleri 2 mum üzerinde yaptı. ama pozun zaten var olduğunu öğrenmeliydim, artık açmayın... içine açabileceği her şey için tüm depozito zayuzal ((bak bak, belki başka bir şey eklemeniz gerekir... çok minnettar
Yardım. Geceleri ticaret yapacak bir danışman istiyorum. kod yazarım
int start()
{
string Symb;
Symb=Symbol();
string Vremya;
Vremya=TimeToStr(TimeLocal(),TIME_MINUTES);
if(Vremya > 23:00 || Vremya < 06:00 )
{
// тут торговые функции
}
}
hata mesajı veriyor
'||' - koşul bir dize olamaz
Ayrıca, koşul azaltılırsa
if(Saat > 23:00
Çalışacak
ve eğer daha önce
if(Saat < 06:00 )
olmayacak.
Neyin yanlış olduğunu anlamıyorum. Bana zamanı nasıl ayarlayacağımı söyle?
Aynı şekilde, kod işe yaramadı, tüm işlemleri 2 mum üzerinde yaptı. ama pozun zaten var olduğunu öğrenmeliydim, artık açmayın... içine açabileceği her şey için tüm depozito zayuzal ((bak bak belki başka bir şey eklemeniz gerekir... çok minnettar
Evet kesinlikle....
f-ve SİPARİŞLERDE sihri ayarlamayı unuttum.
Şimdi her şey yolunda. İşler. Kontrol. Piyasada ikiden fazla zıt yönlü veya birden fazla tek yönlü işlem olamaz.
Herhangi bir türden birden fazla anlaşmaya ihtiyacınız yoksa, NumberOfPositions (c) işlevlerinde anlaşma türünü -1 (eksi bir) ile değiştirmeniz gerekir.
Lütfen bana iTime işlevinin ne gösterdiğini söyleyin.
Bu 10 basamaklı abra-kadabra nedir? saniye?
Nasıl yıl-ay-gün-saat-dakika'ya dönüştürülürler?
Bunun gibi: çubuk kaydırmayı ayarlayın ve varsayılan olarak tarih ve saati tam olarak alın (zaman=1 veya doğruysa, yalnızca zamanı alırız).
Çok kullanışlı bir özellik, şiddetle tavsiye edilir.
kurtuldum Teşekkürler.. Tam aradığım şey) Söyleyin zor değilse, bir siparişi açarken diğerini kaplayacak şekilde nasıl yapabilirim? ikinci seviyeyi değiştirmeye çalıştı ama işe yaramadıysa (
Logiano her şeyi yapmış gibi görünüyor, ancak test sırasında siparişi hemen açıp kapatıyor.
Açık. Tarihte bunun gibi pozisyonlar olup olmadığını belirleyebilirsiniz:
Ancak o zaman kodunuz yalnızca test cihazında çalışır. Çünkü Aksi takdirde, çevrimiçi danışmanı her açtığınızda sihri değiştirmeniz gerekecektir.
Tam olarak, tam olarak ihtiyacınız olan şey!
Bu kodu bu kafese nasıl doğru bir şekilde ekleyeceğimi söyle:
(doğrudan bahis yaparsam, testçi ilk pozisyonun açılışında durur)
kurtuldum Teşekkürler.. Tam aradığım şey) Söyle bana, zor değilse nasıl yapabilirim ki, bir siparişi açarken diğerini kapsıyor? ikinci seviyeyi değiştirmeye çalıştı ama işe yaramadıysa (
Logiano her şeyi yapmış gibi görünüyor, ancak test sırasında siparişi hemen açıp kapatıyor.
Bir keresinde burada pozisyonların kapatılmasıyla ilgilenmiştim -
https://www.mql5.com/ru/forum/105913
Bu bloğu BAŞLAT işlevinin içine yerleştirin - Ema_1, Ema_2, Ema_3'ü hesapladıktan hemen sonra, en baştan yapabilirsiniz
Ve görünüşe göre, AÇILIŞ FİYATI EA'nın işini yapmak gerekiyor, aksi takdirde MA geçişi neredeyse her tikte açılış pozisyonlarını sürekli olarak kapatacaktır.
Ve bunu yapma şekliniz - çevrimiçi düzgün çalışmayacak, çünkü. danışman, başka bir danışman veya kılavuz tarafından açılmış olanlar da dahil olmak üzere tüm pozisyonları kapatacaktır.
Ama daha da kolay, nasıl yapılacağını zaten yazdım. Pozisyonları açarken NumberOfPositions(NULL,OP_BUY,Magic) ve NumberOfPositions(NULL,OP_SELL,Magic) yerine, sadece
NumberOfPositions(NULL,-1,Büyü)
ve o zaman piyasada her zaman birden fazla pozisyon olmayacaktır. Kapatma blokları yok.